推荐系统 - 2 - 离线指标和其他指标
2016-07-21 17:26
253 查看
本总结是是个人为防止遗忘而作,不得转载和商用。
推荐系统的前置知识之一“相似度的判断”见总结“推荐系统 - 1 - 相似度”。
如下:R(u)是给用户u作出的推荐列表,而T(u)是用户在测试集上真正的行为列表。
![](http://img.blog.csdn.net/20160721172435552)
左图是单个用户的准确率(如:给用户推荐对的数量/推荐的总数量),右图是所有用户的准确率
![](http://img.blog.csdn.net/20160721172439938)
左图是单个用户的召回率(如:给用户推荐对的数量/用户喜欢的数量),右图是所有用户的召回率。
最后利用Precision和Recall组合成F测度,如下:
![](http://img.blog.csdn.net/20160721172443677)
F测度就是评价推荐系统的首要离线指标。
覆盖率:
![](http://img.blog.csdn.net/20160721172446689)
这是什么意思?意思是,对用户1推荐了一个列表,对用户2推荐了一个列表,其他同理,最后所有用户的推荐列表的集合可以把网站的所有商品全部覆盖,因为不这样的话,越冷门的商品会推荐的越来越少最后为0,这可不行。
当然,考虑不同商品出现的次数(概率),则可用信息熵或基尼系数(见我总结的最大熵模型):
![](http://img.blog.csdn.net/20160721172450365)
多样性:
![](http://img.blog.csdn.net/20160721172453595)
如:我总是看数据挖掘的书,然后你给我推荐个机器学习的书,那这个推荐因为相似度很近,所以该推荐多样性很差。
惊喜度(serendipity):满意度/相似度
用户惊喜来自于和用户喜欢的物品不相似,但用户却觉得满意的推荐。
如:我总是看数据挖掘的书,然后你给我推荐个机器学习的书,那我可能觉得这个推荐很平常,但如果你给我推荐个啤酒,而我真的超喜欢喝啤酒,那我就会很惊喜。
2,有时候适当提高非流行商品的权值效果会很好。
推荐系统的前置知识之一“相似度的判断”见总结“推荐系统 - 1 - 相似度”。
评价推荐系统的首要离线指标
通过将单个用户的准确率(或召回率)做累加,即得到整个推荐系统的准确率(或召回率),该离线指标常常用于比较各个推荐系统之间的优劣。如下:R(u)是给用户u作出的推荐列表,而T(u)是用户在测试集上真正的行为列表。
左图是单个用户的准确率(如:给用户推荐对的数量/推荐的总数量),右图是所有用户的准确率
左图是单个用户的召回率(如:给用户推荐对的数量/用户喜欢的数量),右图是所有用户的召回率。
最后利用Precision和Recall组合成F测度,如下:
F测度就是评价推荐系统的首要离线指标。
评价推荐系统的其他指标
R(u)是给用户u作出的推荐列表,而T(u)是用户在测试集上真正的行为列表。覆盖率:
这是什么意思?意思是,对用户1推荐了一个列表,对用户2推荐了一个列表,其他同理,最后所有用户的推荐列表的集合可以把网站的所有商品全部覆盖,因为不这样的话,越冷门的商品会推荐的越来越少最后为0,这可不行。
当然,考虑不同商品出现的次数(概率),则可用信息熵或基尼系数(见我总结的最大熵模型):
多样性:
如:我总是看数据挖掘的书,然后你给我推荐个机器学习的书,那这个推荐因为相似度很近,所以该推荐多样性很差。
惊喜度(serendipity):满意度/相似度
用户惊喜来自于和用户喜欢的物品不相似,但用户却觉得满意的推荐。
如:我总是看数据挖掘的书,然后你给我推荐个机器学习的书,那我可能觉得这个推荐很平常,但如果你给我推荐个啤酒,而我真的超喜欢喝啤酒,那我就会很惊喜。
其他说明
1,“评价推荐系统的首要离线指标”和“评价推荐系统的其他指标”是相互矛盾但却是相辅相成的,具体的度自己把握。2,有时候适当提高非流行商品的权值效果会很好。
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法