用mahout构建单机推荐引擎(一)

最近看了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

posted on 2014-03-02 14:39  随风蔷薇  阅读(1146)  评论(0编辑  收藏  举报