Example usage for org.apache.mahout.cf.taste.impl.eval RMSRecommenderEvaluator RMSRecommenderEvaluator

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

Introduction

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

Prototype

RMSRecommenderEvaluator

Source Link

Usage

From source file:hr.fer.tel.rovkp.homework03.task02.ItemBasedRecommenderEvaluator.java

public static void main(String[] args) throws Exception {

    RandomUtils.useTestSeed();/*from w  w w  .  j  a v  a2  s.  co m*/

    String fileItemsSimilarity = "./src/main/resources/item_similarity.csv";
    String fileDataModel = "./src/main/resources/jester_ratings_small.dat";

    DataModel model = new FileDataModel(new File(fileDataModel));

    RecommenderBuilder builder = (DataModel m) -> RecommenderUtils.itemBasedRecommender(m, fileItemsSimilarity);

    RecommenderEvaluator recEvaluator = new RMSRecommenderEvaluator();
    double score = recEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    System.out.println(score);
}

From source file:hr.fer.tel.rovkp.homework03.task02.UserBasedRecommenderEvaluator.java

public static void main(String[] args) throws Exception {

    RandomUtils.useTestSeed();/* w  w w .  j a  v  a2 s  .  co  m*/

    String fileDataModel = "./src/main/resources/jester_ratings.dat";

    DataModel model = new FileDataModel(new File(fileDataModel));

    RecommenderBuilder builder = (DataModel m) -> RecommenderUtils.userBasedRecommender(m);

    RecommenderEvaluator recEvaluator = new RMSRecommenderEvaluator();
    double score = recEvaluator.evaluate(builder, null, model, 0.7, 1.0);
    System.out.println(score);
}

From source file:hr.fer.tel.rovkp.lab03.HybridRecommenderEvaluator.java

public static void main(String[] args) throws IOException, TasteException {
    DataModel model = new FileDataModel(new File("./src/main/resources/jester_ratings.dat"), ",");
    System.out.println(new RMSRecommenderEvaluator().evaluate(hybridRecommender(), null, model, 0.7, 1.0));
}

From source file:net.aprendizajengrande.gitrecommender.Experiment.java

License:Open Source License

public static void main(String[] args) throws Exception {

    DataModel model = new FileDataModel(new File(args[0]));

    System.out.println("For repo: " + args[0]);
    System.out.println("User-based:");

    RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
    RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
        @Override/*from w w w  .j  a  v a2s  . c  om*/
        public Recommender buildRecommender(DataModel model) throws TasteException {
            UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
            UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
            return new GenericUserBasedRecommender(model, neighborhood, similarity);
        }
    };
    // Use 90% of the data to train; test using the other 10%.
    double score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0);
    System.out.println(score);

    recommenderBuilder = new RecommenderBuilder() {
        @Override
        public Recommender buildRecommender(DataModel model) throws TasteException {
            ItemSimilarity similarity = new EuclideanDistanceSimilarity(model);
            //new LogLikelihoodSimilarity(model);
            return new GenericItemBasedRecommender(model, similarity);
        }
    };
    System.out.println("Item-based:");
    score = evaluator.evaluate(recommenderBuilder, null, model, 0.9, 1.0);
    System.out.println(score);
}

From source file:nl.gridline.zieook.client.tools.ZieOokEvaluatorTest.java

License:Apache License

/**
 * 3x userbased using RMSRecommenderEvaluator
 *//*from  www . j a  v  a  2 s.c o  m*/
@Test
@Ignore
public void evaulate2() {
    // UserBasedRecommenderBuilder
    // RMSRecommenderEvaluator
    try {
        DataModel model = createDataModel(input);

        RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
        double evaluation = evaluator.evaluate(
                new UserBasedRecommenderBuilder(EuclideanDistanceSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile("UserBasedRecommenderBuilder,EuclideanDistanceSimilarity,RMSRecommenderEvaluator,"
                + evaluation + "\n");

        evaluator = new RMSRecommenderEvaluator();
        evaluation = evaluator.evaluate(
                new UserBasedRecommenderBuilder(PearsonCorrelationSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile("UserBasedRecommenderBuilder,PearsonCorrelationSimilarity,RMSRecommenderEvaluator,"
                + evaluation + "\n");

        evaluator = new RMSRecommenderEvaluator();
        evaluation = evaluator.evaluate(
                new UserBasedRecommenderBuilder(UncenteredCosineSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile("UserBasedRecommenderBuilder,UncenteredCosineSimilarity,RMSRecommenderEvaluator,"
                + evaluation + "\n");

    } catch (TasteException e) {
        LOG.error("faild evaulate", e);
        fail();
    }
}

From source file:nl.gridline.zieook.client.tools.ZieOokEvaluatorTest.java

License:Apache License

@Test
@Ignore/* w ww .  j ava2 s . co m*/
public void evaluate3() {
    // ItemBasedRecommenderBuilder
    // RMSRecommenderEvaluator
    try {
        DataModel model = createDataModel(input);
        RecommenderEvaluator evaluator = new RMSRecommenderEvaluator();
        double evaluation = evaluator.evaluate(
                new ItemBasedRecommenderBuilder(EuclideanDistanceSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile(
                "ItemBasedRecommenderBuilder,EuclideanDistanceSimilarity,AverageAbsoluteDifferenceRecommenderEvaluator,"
                        + evaluation + "\n");

        evaluator = new RMSRecommenderEvaluator();
        evaluation = evaluator.evaluate(
                new ItemBasedRecommenderBuilder(PearsonCorrelationSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile(
                "ItemBasedRecommenderBuilder,PearsonCorrelationSimilarity,AverageAbsoluteDifferenceRecommenderEvaluator,"
                        + evaluation + "\n");

        evaluator = new RMSRecommenderEvaluator();
        evaluation = evaluator.evaluate(
                new ItemBasedRecommenderBuilder(UncenteredCosineSimilarity.class.getCanonicalName()), null,
                model, 0.9, 1.0);
        LOG.info("result: " + evaluation);
        writetofile(
                "ItemBasedRecommenderBuilder,UncenteredCosineSimilarity,AverageAbsoluteDifferenceRecommenderEvaluator,"
                        + evaluation + "\n");
    } catch (TasteException e) {
        LOG.error("faild evaulate", e);
        fail();
    }
}

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

License:Apache License

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

    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 . j  av a 2  s  .co  m*/

    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  www  .  j  a va 2s . c om*/

    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();/*from www.  j a v a  2  s .  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) });
}