最近看了Mahout in Action 第一部分Recommend System 根据书上的例子 自己写一个推荐引擎,
首先时数据,数据用的是书上推荐的GroupLens的数据 http://grouplens.org/datasets/movielens/
下载的数据格式是 UserId ItemID rating timestamp
应为FileDataModel的格式没有最后的一列,首先吧timestamp去掉就好。
选择合适的推荐算法
import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.RecommenderBuilder; import org.apache.mahout.cf.taste.eval.RecommenderEvaluator; import org.apache.mahout.cf.taste.impl.eval.RMSRecommenderEvaluator; import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender; import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; import org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender; import org.apache.mahout.cf.taste.impl.recommender.svd.ALSWRFactorizer; import org.apache.mahout.cf.taste.impl.recommender.svd.SVDRecommender; import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; import org.apache.mahout.cf.taste.recommender.Recommender; import org.apache.mahout.cf.taste.similarity.ItemSimilarity; import org.apache.mahout.cf.taste.similarity.UserSimilarity; public class Demo { public void userbased(DataModel model,int n) throws TasteException{ System.out.println("-----------------------------------------------------------------------------"); final int N=n; RecommenderEvaluator evaluator=new RMSRecommenderEvaluator(); RecommenderBuilder bulider=new RecommenderBuilder(){ @Override public Recommender buildRecommender(DataModel model) throws TasteException { // TODO Auto-generated method stub UserSimilarity similarity=new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood=new NearestNUserNeighborhood(N,similarity,model); Recommender recommend=new GenericUserBasedRecommender(model,neighborhood,similarity); return recommend; } }; double score=evaluator.evaluate(bulider, null, model, 0.7, 1.0); System.out.println("UserBased "+N+" score is"+score); } public void itembased(DataModel model) throws TasteException{ System.out.println("-----------------------------------------------------------------------------"); RecommenderEvaluator evaluator=new RMSRecommenderEvaluator(); RecommenderBuilder builder=new RecommenderBuilder(){ @Override public Recommender buildRecommender(DataModel model) throws TasteException { // TODO Auto-generated method stub ItemSimilarity similarity=new PearsonCorrelationSimilarity(model); Recommender recommend=new GenericItemBasedRecommender(model,similarity); return recommend; } }; double score=evaluator.evaluate(builder, null, model, 0.7, 1.0); System.out.println("ItemBased score is "+score); } public void slope_one(DataModel model) throws TasteException{ System.out.println("-----------------------------------------------------------------------------"); RecommenderEvaluator evaluator=new RMSRecommenderEvaluator(); RecommenderBuilder builder=new RecommenderBuilder(){ @Override public Recommender buildRecommender(DataModel arg0) throws TasteException { // TODO Auto-generated method stub return new SlopeOneRecommender(arg0); } }; double score=evaluator.evaluate(builder, null, model, 0.7, 1); System.out.println("Slope one score is "+score); } public void SVD(DataModel model) throws TasteException{ System.out.println("-----------------------------------------------------------------------------"); RecommenderEvaluator evaluator=new RMSRecommenderEvaluator(); RecommenderBuilder builder=new RecommenderBuilder(){ @Override public Recommender buildRecommender(DataModel model) throws TasteException { // TODO Auto-generated method stub return new SVDRecommender(model,new ALSWRFactorizer(model,10,0.05,10)); } }; double score=evaluator.evaluate(builder, null, model, 0.7, 1.0); System.out.println("SVD score is "+score); } public static void main(String[] args) throws Exception{ String filepath=args[0]; DataModel model=new FileDataModel(new File(filepath)); Demo demo=new Demo(); demo.userbased(model, 2); demo.itembased(model); demo.slope_one(model); demo.SVD(model); } }
看一下运行结果
14/03/02 14:16:56 INFO file.FileDataModel: Creating FileDataModel for file /home/bianwenlong/ml-100k/ml-100k/sat.data
14/03/02 14:16:56 INFO file.FileDataModel: Reading file info...
14/03/02 14:16:56 INFO file.FileDataModel: Read lines: 100000
14/03/02 14:16:56 INFO model.GenericDataModel: Processed 943 users
-----------------------------------------------------------------------------
14/03/02 14:16:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.7 of FileDataModel[dataFile:/home/bianwenlong/ml-100k/ml-100k/sat.data]
14/03/02 14:16:56 INFO model.GenericDataModel: Processed 943 users
14/03/02 14:16:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 942 users
14/03/02 14:16:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 942 tasks in 4 threads
14/03/02 14:16:57 INFO eval.StatsCallable: Average time per recommendation: 193ms
14/03/02 14:16:57 INFO eval.StatsCallable: Approximate memory used: 12MB / 16MB
14/03/02 14:16:57 INFO eval.StatsCallable: Unable to recommend in 341 cases
14/03/02 14:17:50 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 1.1750788826753058
UserBased 2 score is1.1750788826753058
-----------------------------------------------------------------------------
14/03/02 14:17:50 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.7 of FileDataModel[dataFile:/home/bianwenlong/ml-100k/ml-100k/sat.data]
14/03/02 14:17:50 INFO model.GenericDataModel: Processed 943 users
14/03/02 14:17:50 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 943 users
14/03/02 14:17:50 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 943 tasks in 4 threads
14/03/02 14:17:50 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 711
14/03/02 14:17:50 INFO eval.StatsCallable: Average time per recommendation: 35ms
14/03/02 14:17:50 INFO eval.StatsCallable: Approximate memory used: 12MB / 16MB
14/03/02 14:17:50 INFO eval.StatsCallable: Unable to recommend in 2 cases
14/03/02 14:17:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 830
14/03/02 14:17:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 851
14/03/02 14:17:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 851
14/03/02 14:17:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1155
14/03/02 14:17:51 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1156
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1325
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1340
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1342
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1343
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1348
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1352
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1363
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1364
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1387
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1414
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1408
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1465
14/03/02 14:17:52 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1461
14/03/02 14:17:53 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1508
14/03/02 14:17:53 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1515
14/03/02 14:17:53 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1526
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 851
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1536
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1537
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1537
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 851
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1595
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1387
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1408
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1546
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1562
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1567
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1568
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1569
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1575
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1582
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1586
14/03/02 14:17:54 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1601
14/03/02 14:17:55 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1603
14/03/02 14:17:55 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1508
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1155
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1508
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1408
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1465
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1627
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1342
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1653
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1155
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1465
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1635
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1640
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1641
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1645
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1647
14/03/02 14:17:56 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1650
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1661
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1387
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1537
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1663
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1666
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1667
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1668
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1669
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1537
14/03/02 14:17:57 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1675
14/03/02 14:17:58 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1682
ItemBased score is 1.0975656960610958
-----------------------------------------------------------------------------
14/03/02 14:17:58 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 1.0975656960610958
14/03/02 14:17:58 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.7 of FileDataModel[dataFile:/home/bianwenlong/ml-100k/ml-100k/sat.data]
14/03/02 14:17:58 INFO model.GenericDataModel: Processed 943 users
14/03/02 14:17:58 INFO slopeone.MemoryDiffStorage: Building average diffs...
14/03/02 14:18:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 942 users
14/03/02 14:18:00 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 942 tasks in 4 threads
14/03/02 14:18:00 INFO eval.StatsCallable: Average time per recommendation: 11ms
14/03/02 14:18:00 INFO eval.StatsCallable: Approximate memory used: 75MB / 137MB
14/03/02 14:18:00 INFO eval.StatsCallable: Unable to recommend in 0 cases
14/03/02 14:18:01 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.9432216740733792
Slope one score is 0.9432216740733792
-----------------------------------------------------------------------------
14/03/02 14:18:01 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.7 of FileDataModel[dataFile:/home/bianwenlong/ml-100k/ml-100k/sat.data]
14/03/02 14:18:01 INFO model.GenericDataModel: Processed 943 users
14/03/02 14:18:01 INFO svd.ALSWRFactorizer: starting to compute the factorization...
14/03/02 14:18:01 INFO svd.ALSWRFactorizer: iteration 0
14/03/02 14:18:01 INFO svd.ALSWRFactorizer: iteration 1
14/03/02 14:18:01 INFO svd.ALSWRFactorizer: iteration 2
14/03/02 14:18:02 INFO svd.ALSWRFactorizer: iteration 3
14/03/02 14:18:02 INFO svd.ALSWRFactorizer: iteration 4
14/03/02 14:18:02 INFO svd.ALSWRFactorizer: iteration 5
14/03/02 14:18:03 INFO svd.ALSWRFactorizer: iteration 6
14/03/02 14:18:03 INFO svd.ALSWRFactorizer: iteration 7
14/03/02 14:18:03 INFO svd.ALSWRFactorizer: iteration 8
14/03/02 14:18:04 INFO svd.ALSWRFactorizer: iteration 9
14/03/02 14:18:04 INFO svd.ALSWRFactorizer: finished computation of the factorization...
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 943 users
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 943 tasks in 4 threads
14/03/02 14:18:04 INFO eval.StatsCallable: Average time per recommendation: 0ms
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 814
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 599
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 830
14/03/02 14:18:04 INFO eval.StatsCallable: Approximate memory used: 87MB / 137MB
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 600
14/03/02 14:18:04 INFO eval.StatsCallable: Unable to recommend in 3 cases
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1122
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1130
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1201
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1321
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1398
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1341
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1358
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1359
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1398
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1364
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1366
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1447
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1374
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1452
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1453
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1458
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1476
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1461
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1321
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1493
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1505
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1358
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1498
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1500
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1526
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1533
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1359
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1594
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1595
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1603
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1613
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1594
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1619
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1624
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1374
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1630
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1641
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1654
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1655
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1568
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1645
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1649
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1650
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1651
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1660
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1500
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1590
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1666
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1670
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1682
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 600
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1572
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1586
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1590
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Item exists in test data but not training data: 1522
14/03/02 14:18:04 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.9860761592925741
SVD score is 0.9860761592925741