List of usage examples for org.apache.mahout.cf.taste.impl.eval AverageAbsoluteDifferenceRecommenderEvaluator evaluate
@Override public double evaluate(RecommenderBuilder recommenderBuilder, DataModelBuilder dataModelBuilder, DataModel dataModel, double trainingPercentage, double evaluationPercentage) throws TasteException
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) }); }