mahout推荐4-评估GroupLens数据集
2014-08-04 10:01
369 查看
使用GroupLens数据集ua.base
这是一个tab分割的文件,用户Id,物品Id,评分(偏好值),以及附加信息。可用吗?之前使用的是CSV格式,现在是tsv格式,可用,使用FileDataModel
对mahout推荐2中的评估程序使用这个数据集测试:
结果输出:
现在是基于100 000 个偏好值,而不是少数几个
结果大约为0.9 在1到5的区间内,这个值偏离了将近一个点,不算太好。
也许我们正在使用的这个特定Recommender实现并不是最优的。
这是一个tab分割的文件,用户Id,物品Id,评分(偏好值),以及附加信息。可用吗?之前使用的是CSV格式,现在是tsv格式,可用,使用FileDataModel
对mahout推荐2中的评估程序使用这个数据集测试:
package mahout; 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.AverageAbsoluteDifferenceRecommenderEvaluator; 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.GenericUserBasedRecommender; 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.UserSimilarity; import org.apache.mahout.common.RandomUtils; public class TestRecommenderEvaluator { public static void main(String[] args) throws Exception { //强制每次生成相同的随机值,生成可重复的结果 RandomUtils.useTestSeed(); //数据装填 //DataModel model = new FileDataModel(new File("data/intro.csv")); DataModel model = new FileDataModel(new File("data/ua.base")); //推荐评估,使用平均值 RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); //推荐评估,使用均方差 //RecommenderEvaluator evaluator = new RMSRecommenderEvaluator(); //用于生成推荐引擎的构建器,与上一例子实现相同 RecommenderBuilder builder = new RecommenderBuilder() { public Recommender buildRecommender(DataModel model) throws TasteException { // TODO Auto-generated method stub //用户相似度,多种方法 UserSimilarity similarity = new PearsonCorrelationSimilarity(model); //用户邻居 UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); //一个推荐器 return new GenericUserBasedRecommender(model, neighborhood, similarity); } }; //推荐程序评估值(平均差值)训练90%的数据,测试数据10%,《mahout in Action》使用的是0.7,但是出现结果为NaN double score = evaluator.evaluate(builder, null, model, 0.9, 1.0); System.out.println(score); } }
结果输出:
14/08/04 09:52:38 INFO file.FileDataModel: Creating FileDataModel for file data\ua.base 14/08/04 09:52:38 INFO file.FileDataModel: Reading file info... 14/08/04 09:52:38 INFO file.FileDataModel: Read lines: 90570 14/08/04 09:52:38 INFO model.GenericDataModel: Processed 943 users 14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation using 0.9 of FileDataModel[dataFile:D:\workspace\zoodemo\data\ua.base] 14/08/04 09:52:38 INFO model.GenericDataModel: Processed 943 users 14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Beginning evaluation of 878 users 14/08/04 09:52:38 INFO eval.AbstractDifferenceRecommenderEvaluator: Starting timing of 878 tasks in 4 threads 14/08/04 09:52:39 INFO eval.StatsCallable: Average time per recommendation: 39ms 14/08/04 09:52:39 INFO eval.StatsCallable: Approximate memory used: 16MB / 79MB 14/08/04 09:52:39 INFO eval.StatsCallable: Unable to recommend in 114 cases 14/08/04 09:52:43 INFO eval.AbstractDifferenceRecommenderEvaluator: Evaluation result: 0.9375000000000002 0.9375000000000002
现在是基于100 000 个偏好值,而不是少数几个
结果大约为0.9 在1到5的区间内,这个值偏离了将近一个点,不算太好。
也许我们正在使用的这个特定Recommender实现并不是最优的。
相关文章推荐
- Mahout对于定制的GroupLens推荐进行评估
- mahout 使用grouplens数据集定制datamodel以及评估
- mahout推荐入门之评估GroupLens数据集
- mahout推荐10-尝试GroupLens数据集
- Mahout对于GroupLens数据定制的推荐引擎
- 2.5 评估 GroupLens数据集
- Mahout小结:关于评估推荐系统估计值与实际值的偏差出现异常:DataModel doesn't have preference values
- mahout推荐8-利用布尔型数据评估查准率和查全率
- mahout中布尔型数据推荐系统的生成与评估
- mahout推荐3-评估查准率和查全率
- mahout评估一个简单的推荐程序
- mahout入门之对推荐结果进行评估
- 基于Mahout的电影推荐系统
- 基于Mahout的电影推荐系统
- 基于 Apache Mahout 构建社会化推荐引擎
- 用Mahout构建职位推荐引擎
- 利用nutch-1.2和Lucene 搭建自己的搜索平台, Apache Mahout 构建社会化推荐引擎
- 用R解析mahout用户推荐协同过滤算法
- mahout过滤推荐结果 Recommender.recommend(long userID, int howMany, IDRescorer rescorer)
- mahout 推荐系统示例