| 查看: 1748 | 回复: 1 | ||||
[交流]
智能推送,智慧推送等推荐算法已经有很多了,怎么判断比较各种算法的好坏呢? 已有1人参与
|
有测试各种已有算法的公共Benchmark测试平台吗? |
» 收录本帖的淘帖专辑推荐
ML相关 |
» 猜你喜欢
材料学调剂
已经有9人回复
0856材料专业298分有科研经历 硕士研究生调剂自荐信
已经有5人回复
321求调剂一志愿东北林业大学材料与化工英二数二
已经有6人回复
调剂
已经有3人回复
290求调剂
已经有8人回复
材料类求调剂
已经有8人回复
材料284求调剂,一志愿郑州大学英一数二
已经有7人回复
求调剂
已经有5人回复
302材料工程求调剂
已经有4人回复
材料化工调剂
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
群智能算法和数据挖掘类论文投稿期刊推荐求助
已经有13人回复
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
1)评价推荐系统优劣的方法 mahout中提供了为用户推荐物品的工具,但如何评价推荐的item是否和实际情况相符合。在机器学习和AI领域,习惯的是利用一部分数据作为训练集数据,而留出一部分实际用户喜好的数据作为测试集数据,通过估计出的值与实际测试值之间的均差、均方根等方法下的大小来评判,通常是值越小说明推荐的情况和实际值越接近,若其值为0说明完全吻合。 由于评判通过推荐系统得出的估计值和实际值之间的得分(通过均差、均方根等得到)直接关系到推荐系统的优劣,所以这里就有必要对此作出必要分析(由于均差方式简单,这里就以它为例)。 Item1 Item2 Item3 实际值 3.0 5.0 4.0 估计值 3.5 2.0 5.0 差值 0.5 3.0 1.0 均差 = (0.5 + 3.0 + 1.0)/ 3 = 1.5 上面就展示了评价已定推荐系统根据均差方法测定其得分的过程,由于存在Item2,导致该系统得分偏高。当然在项目中自己也可以通过代码测试系统的得分(即优劣)。 2)下面的代码可以评估推荐系统的性能: package com.loogn.valuaterecommender; import org.apache.mahout.cf.taste.impl.model.file.*;//FileDataModel import org.apache.mahout.cf.taste.model.*;//DAtaModel import org.apache.mahout.cf.taste.impl.neighborhood.*; import org.apache.mahout.cf.taste.impl.recommender.*; import org.apache.mahout.cf.taste.impl.similarity.*; import org.apache.mahout.cf.taste.neighborhood.*; import org.apache.mahout.cf.taste.similarity.*; import org.apache.mahout.cf.taste.recommender.*; import org.apache.mahout.common.RandomUtils; import org.apache.mahout.cf.taste.impl.eval.*; import org.apache.mahout.cf.taste.eval.*; import org.apache.mahout.cf.taste.common.TasteException; import java.io.*; public class ValuateRecommender { /** * * @param args * @throws Exception */ public static void main(String[] args) throws Exception{ /** * 只用于结果可重复的例子 */ RandomUtils.useTestSeed(); /** * 加载数据文件 */ DataModel model = new FileDataModel(new File("C:\\Users\\ZhouQiang\\Desktop\\my own task\\intro.csv" ); /** * 创建评价器 */ RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator(); /** * 建立推荐系统 */ RecommenderBuilder builder = new RecommenderBuilder() { @Override public Recommender buildRecommender(DataModel model) throws TasteException { UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(3,similarity,model); return new GenericUserBasedRecommender(model,neighborhood,similarity); } }; /** * 70%的数据作训练集,剩下30%的数据作测试集 */ double score = evaluator.evaluate(builder, null, model, 0.7, 1.0); System.out.println("评价得分:" + score); // 输出评价得分 } } |
2楼2014-09-19 15:33:25













回复此楼
);
10