推荐系统测评
一个好的推荐系统,是让三方共赢的系统,包括:用户、网站、内容提供商。好的推荐系统设计能够让推荐系统本身收集到高质量的用户反馈,不断完善推荐质量,增加用户和网站的交互,提高网站的收入。
预测准确度是推荐系统领域的重要指标。比如推荐某个商品,用户真的买的。但这并不代表这个准确度是真正有意义的,加入用户本身就是要买这个商品的,如果推荐都不会有额外的价值,并未给网站&内容提供商带来新的收益。因此,好的推荐系统不仅仅能够准确预测用户行为,还能拓宽用户视野,帮助用户发现可能感兴趣却没那么容易找到的东西,同时还能把长尾好的内容提供给感兴趣的观众。
第一节:评测方法简介
评测办法有三种:
- 离线实验;
- 用户调查;
- 在线实验。
新的算法如何能通过A/B Testing呢?
- 离线实验证明多个指标优于现有算法;
- 用户调研满意度不低于现有算法;
- A/B Testing确定我们关心的指标优于现有算法。
1、离线实验
将数据分为训练集和测试集,用测试集的结果
优点 | 缺点 |
---|---|
不需要有对实际系统的控制权 | 无法计算商业上关心的指标 |
不需要用户参与实验 | 离线实验的指标和商业指标存在差距 |
速度快,可以测试大量数据 |
2、用户调查
让真实的用户,在测试环境的推荐系统上,完成一些任务,记录并观察他们的行为,回答一些问题,通过分析来了解效果。
优点 | 缺点 |
---|---|
优点缺点获得用户直观感受的指标 | 用户调研成本高(时间&金钱&人群与平台分布一致) |
风险低,有问题后可以直接修正 | 难以进行大规模调研,得出的结论可能不具备统计意义 |
测试环境和生产上的用户行为不一致 |
3、在线实验
常用方法A/B Testing。它通过一定的规则将用户随机分成几组,并对不同组的用户采用不同的算法,然后通过统计不同组用户的各种不同的评测指标,比较不同算法,比如可以统计不同组用户的点击率,通过点击率比较不同算法的性能。

问题 | 解决方案 |
---|---|
大型网站下,不同功能的A/B Testing可能会打架 | 切分流量,不同层以及控制这些层的团队需要从一个统一的地方获得自己AB测试的流量,不同层的流量应该是正交 |
优点 | 缺点 |
---|---|
不需要用户参与实验 | 合理的切分流量,明确因果关系(尤其是待AB的功能较多时) |
有大量的数据验证假设 | 技术成本高 |
可以评测技术以及商业上的指标 |
关于A/B Testing,我们之后会有专门的文章来讨论,这里就简单的介绍下。
第二节:评测指标
1、用户满意度
适用方法:用户调研、在线实验
关注者:用户、网站
在用户调研中,用户满意度主要通过调查问卷得来,需要注意的是调查问卷不是简单询问用户对结果是否满意,而是从不同侧面询问用户的不同感受,比如下面的案例。

在在线实验中,用户满意度通过统计用户行为来获取。常用的指标是:点击率、停留时间、转化率等指标,部分网站也会统计反馈按钮的点击,电商网站还可以使用购买率等。
2、预测准确度
适用方法:离线实验、问卷调查
关注者:用户、网站
算法目的:预测评分(预测对物品评分的行为)
评分预测的准确率一般通过均方根误差(RMSE)和平均绝对误差(MAE)来计算。其中,RMSE加大了对预测不准的惩罚。
算法目的:Top N推荐
指标:准确率和召回率
简单给大家介绍一下准确和召回的含义
下图中的0,1分别代表否、是,Actual是实际情况中的数据,Predict是机器预测的数据
准确率=在所有的数据中,机器预测正确的占比,换句话说,对所有数据来说,机器对了多少?
召回率=在所有准确的数据中,机器预测正确的占比,换句话说,对应该对的数据来说,机器找到了多少个对的?![]()
就预测评分与TopN的讨论
亚马逊前科学家GregLinden有不同的看法。2009年,他在CommunicationsoftheACM网站发表了一篇文章,指出电影推荐的目的是找到用户最有可能感兴趣的电影,而不是预测用户看了电影后会给电影什么样的评分。因此,TopN推荐更符合实际的应用需求。也许有一部电影用户看了之后会给很高的分数,但用户看的可能性非常小。因此,预测用户是否会看一部电影,应该比预测用户看了电影后会给它什么评分更加重要。
3、覆盖率
适用方法:离线实验、用户调查、在线实验
关注者:内容提供商
覆盖率描述一个推荐系统对长尾物品的发掘能力。最简单的定义为:推荐出来的物品占所有物品的比例。更细致的方法是统计推荐列表中不同物品出现次数的分布。信息学和经济学中有两个指标来定义覆盖率:信息熵和基尼系数。

马太效应(强者越强,弱者越弱)
Page Ranking就是具有马太效应的案例,很多研究表明现在流行的推荐算法(比如协同过滤算法)也是具备马太效应,但推荐算法诞生之初的目的,就是为了消除马太效应。
评测算法是否具备马太效应,就是用基尼系数。G1是用户初始行为基于物品流行度的基尼系数,G2位推荐算法基于物品流行度的基尼系数,如果G2>G1,我们说算法具备马太效应。
4、多样性
适用方法:离线实验、用户调查、在线实验
关注者:用户、网站、内容提供商
多样性描述物品亮亮之间的不相似性。多样性和相似性是对应的。
假设 s(i,j)属于[0,1] 定义了物品i和j之间的相似度,那么用户u的推荐列表R(u)的多样性定义如下:
而推荐系统的整体多样性可以定义为所有用户推荐列表多样性的平均值:
那么多样性达到什么程度呢?又可以考虑到多样性,又可以考虑到主要兴趣,比如某个用户80%时间看动画,20%看动作片,那么我们推荐动画数量:动作数量=4:1比较合理。
5、新颖性
适用方法:离线实验、用户调查、在线实验
关注者:用户、内容提供商
新颖性是指给用户推荐那些从未听说过的物品。
最简单的实现办法:把用户之前在网站上有过行为的物品从推荐列表中过滤掉。面临的问题:有可能这些物品用户在别的渠道看过或者购买过。
最简单的评测办法:利用推荐结果的平均流行度,因为越不热门的物品越有可能让用户觉得新颖。面临的问题:比较粗略,因为不同用户不知道的东西是不同的。
需要思考的是:在提升新颖度和多样性的是否,是否会对精度有影响,如何平衡这些影响?
6、惊喜度
适用方法:用户调查
关注者:用户、内容提供商
惊喜度和新颖度的区别:
- 新颖度取决于用户是否听说过这个推荐结果。
- 惊喜度是推荐结果与用户历史结果不相似,但却让用户满意。
如何评测呢?
- 推荐结果与历史行为物品的相似性
- 用户对结果的满意度(详见-用户满意度)
7、信任度
适用方法: 用户调查
关注者:网站
如果用户信任推荐系统,那就会增加用户和推荐系统的交互。
这里的信任有两方面的含义,一个是推荐的结果好,由此带来的信任感,二是推荐结果的展示符合用户信任的展示。
如何提高信任度呢?
- 增加推荐系统的透明度–提供推荐解释,让用户了解推荐系统的运行机制;
- 利用用户的社交网络信息–利用好友的信息做推荐,并用好友作出推荐解释。比如微博:您的好友XXX点赞了这条微博。
8、实时性
适用方法: 用户调查
关注者:网站
某些产品需要具备实时性的要求,比如微博、资讯类的。
实时性包含两个方面:
- 实时更新推荐列表来满足用户新的行为变化;
- 推荐系统可以将新加入的物品推荐出去。
9、健壮性【鲁棒性】
适用方法: 用户调查、在线实验
关注者:用户、内容提供商
任何一个能带来利益的推荐算法都会被攻击。
作弊方法(可参照Tutorial on Robustness of Recommender System, ACM RecSys 2011)
- 行为注入攻击–比如在Amazon,注册多个账号,同时购买A+自己的商品。
- 评分系统攻击–注册多个账号,进行虚假评分。
评测办法:模拟攻击
给一份数据集和算法,然后给出一份推荐结果A,运用常用的攻击算法注入噪声数据,同样的算法给出推荐结果B,比较A与B的不同。
如何提高系统的健壮性:
- 采用较高健壮性的算法;
- 尽量使用代价较高的用户行为,比如购买行为>浏览行为
- 使用前进行攻击检测,对数据进行清理
10、商业目标
适用方法: 在线实验
关注者:网站、内容提供商
很多时候,网站评测更加关注商业目标,商业目标与盈利模式息息相关。不同产品有着不同的商业目标,比如电商就是销售额,广告就是点击数等等。
因此在设计算法时,也应充分考虑商业相关的指标。
第三节:评测维度
不同的算法在不同的场景/维度下的效果不同,评测维度包含以下三方面:
- 用户维度:用户人口统计学信息、活跃度、新用户等
- 物品维度:属性信息、流行度、平均分、新加入的物品等等
- 时间维度:季节、工作日/周末、白天/晚上
数据来源于:推荐系统实践–项亮–2012年6月–人民邮电出版社出版