Example usage for org.apache.mahout.cf.taste.impl.eval AverageAbsoluteDifferenceRecommenderEvaluator evaluate

List of usage examples for org.apache.mahout.cf.taste.impl.eval AverageAbsoluteDifferenceRecommenderEvaluator evaluate

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.eval AverageAbsoluteDifferenceRecommenderEvaluator evaluate.

Prototype

@Override
    public double evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder,
            DataModel dataModel, double trainingPercentage, double evaluationPercentage) throws TasteException 

Source Link

Usage

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testSanity() throws TasteException, IOException {
    RandomUtils.useTestSeed();/*from  w w  w .  j av a2 s . co m*/

    LOG.info("testing sanity on dummy data, result should be 1.0");

    DataModel model = new FileDataModel(new File("test-data-small/intro.csv"));
    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RecommenderBuilder builder = new RecommenderBuilder() {

        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            PearsonCorrelationSimilarity similarity = new PearsonCorrelationSimilarity(model);
            NearestNUserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    final long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("score: {} in {}ms", String.format("%.4f", score), (System.currentTimeMillis() - start));

    assertTrue(1.0 == score);

}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testRandom() throws IOException, TasteException {
    RandomUtils.useTestSeed();//from   w  ww.  j  a  va 2 s. com

    LOG.info("testing Random:");
    DataModel model = new FileDataModel(testData);
    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();
    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            return new RandomRecommender(model);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("score: {} in {}s", String.format("%.4f", score), ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);
    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });

}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testPearsonCorrelationSimilarity() throws IOException, TasteException {
    RandomUtils.useTestSeed();/* w w w  . ja v  a 2s . c om*/

    LOG.info("testing PearsonCorrelationSimilarity: ");

    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            PearsonCorrelationSimilarity similarity = new PearsonCorrelationSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("score: {} in {}s", String.format("%.4f", score), ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });

}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testTanimotoCoefficientSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();//from   ww w  .ja v  a2s .  co m

    LOG.info("testing: TanimotoCoefficientSimilarity:");

    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            TanimotoCoefficientSimilarity similarity = new TanimotoCoefficientSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testUncenteredCosineSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();/*w  w  w  .j  a va 2s  .  c  o m*/

    LOG.info("testing: UncenteredCosineSimilarity:");

    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            UncenteredCosineSimilarity similarity = new UncenteredCosineSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testCityBlockSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();//from  w  w  w  . j ava2 s .  co  m

    LOG.info("testing CityBlockSimilarity:");
    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            CityBlockSimilarity similarity = new CityBlockSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testLogLikelihoodSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();/*from  w  w  w .  j a v  a 2  s .co m*/

    LOG.info("testing LogLikelihoodSimilarity: ");
    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            LogLikelihoodSimilarity similarity = new LogLikelihoodSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}

From source file:nl.gridline.zieook.tasks.quality.MahoutEvaluatorTest.java

License:Apache License

@Test
public void testEuclideanDistanceSimilarity() throws TasteException, IOException {
    RandomUtils.useTestSeed();//from  w  w w. j  a  va2s  . c o m

    LOG.info("testing EuclideanDistanceSimilarity:");
    DataModel model = new FileDataModel(testData);

    AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    RMSRecommenderEvaluator rmsEvaluator = new RMSRecommenderEvaluator();

    GenericRecommenderIRStatsEvaluator evaluatorIR = new GenericRecommenderIRStatsEvaluator();

    RecommenderBuilder builder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            EuclideanDistanceSimilarity similarity = new EuclideanDistanceSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };

    long start = System.currentTimeMillis();
    double score = evaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("average score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    score = rmsEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    LOG.info("rms score: {} in {}s", String.format("%.4f", score),
            ((System.currentTimeMillis() - start) / 1000));

    start = System.currentTimeMillis();
    IRStatistics stats = evaluatorIR.evaluate(builder, null, model, null, 2,
            GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);

    LOG.info("precision: {} recall: {} in {}s", new Object[] { String.format("%.4f", stats.getPrecision()),
            String.format("%.4f", stats.getRecall()), ((System.currentTimeMillis() - start) / 1000) });
}