推荐系统的评价方案

对于推荐系统的评价有很多的指标,但对于不同的应用采用相同的评价指标可能也会有截然不同的结果,对于同一个应用的不同评价指标对于评价推荐系统的贡献是不一样的。例如采用MAE和RMSE等针对评分预测的评价指标作用于TopN推荐的场景中,可能指标能反映的内容比较有限。

因此,在确定推荐系统应该以什么指标去做效果评价的时候,要先明确你的推荐系统做的是什么事情,使用者对推荐的哪方面内容最感兴趣。

  • 像音乐、电影等推荐场景,应以推荐冷门但符合用户喜好的物品的能力为评价标准之一,为用户挖掘同一套系列的不同物品对用户的贡献不如为用户推荐题材相同但比较冷门的物品,因为后者对用户来说比较难发现,这就体现了推荐系统在音乐、电影等推荐场景的价值;
  • 而对于ResysChina上的技术文章的推荐场景,我更希望系统推荐出来的是符合我最近浏览的文章的主题的,也就是同类的文章,以便于我对某个内容了解更多信息;
  • 而电商平台的推荐则需要根据不同的商品去评价推荐的效果,假如我最近买了一台冰箱,系统一个劲地给我推荐同类产品(冰箱)还有意义吗?而如果我近期买了某种零食,系统给我推荐同类的零食,你可以说它没有意义吗?


总而言之,不同的应用场景,会采用不同的评价方案。
电商场景的推荐系统的评价方案将是本文阐述的内容。

关键词: 准确率,召回率,覆盖率,流行度,新颖度/惊喜度,转化率,推荐排序

预测准确度

预测准确度考虑推荐算法的预测打分与用户实际打分的相似程度,在预测分值显示给用户的系统中,预测准确度十分重要。

典型的就是平均绝对误差(Mean Absolute Error, MAE),和均方根误差(Root Mean Squared Error, RMSE)

在Netfix的推荐算法大赛中采用的就是RMSE,如此一来,Netfix把推荐看做一个用户给电影打分的问题,而更合理的应该是推荐物品的排序问题,因此在这个场景当中使用RMSE做评价标准可能不太贴切。

在商品推荐的场景当中,我们计算出用户对商品的评分只能用户衡量推荐系统的准确性,但更为重要的是,我们关心最终用户会下单的推荐商品,因此用预测准确率去评估商品推荐的场景,它的意义就被大大削弱了。

商品推荐应该是一个分类问题或者是排序问题,前者考量分类准确的概率,推荐的物品都是否都是用户喜欢的,后者考量推荐列表的质量,因为用户在浏览推荐列表的过程中有效用递减规律,靠后的虽然是用户喜欢的商品,但用户看到的机会会逐渐衰减。

分类准确度

分类准确度定义为推荐算法对一个物品用户是否喜欢判断正确的比例,当用户只有二元选择时,用分类准确度进行评价较为合适

典型的就是准确率(Precision)和召回率(Recall)

准确率表示用户对一个推荐物品感兴趣的可能性

Precision = Ns / Nr

其中 Nr 表示推荐物品的个数,Ns 表示推荐列表中用户喜欢的物品个数。

召回率定义为推荐列表中用户喜欢的产品占系统中用户喜欢的所有产品的比率

Recall = Ns / Na

其中 Ns 表示推荐列表中用户喜欢的物品个数,Na 表示系统中用户喜欢的产品的总数。

推荐系统当中无法知道用户是否喜欢某些未知的产品,所以召回率在纯粹意义上讲并不适合度量推荐系统。因为召回率需要知道每个用户对未选择产品的洗好,然而这与推荐系统的初衷是相悖的。

F指标是将Precision和Recall综合考虑的评价指标

F= 2PR / (P + R)

度量推荐列表的物品排序

关于排序效果的度量有多重方法,由于本人现在进行的推荐项目才是刚刚起步,对于推荐列表的总体质量的追求远远大于推荐排序质量的追求,这部分将在后续工作中陆续完善。

有排序准确度、预测打分关联、距离标准化指标、半衰期效用指标等。

这里展开一些推荐系统应用到生产环境的话题,在推荐效果评估方面,个人认为在项目从起步到成熟,追求的推荐指标应该如此:

  1. 准确率、召回率、覆盖率
  2. 流行度、多样性
  3. 推荐排序
  4. 新颖性
  5. 用户满意度

物品覆盖率

覆盖率定义为可以预测打分的产品占所有产品的比例

在电商行业当中这一指标尤为重要,不同于线下的商店,电商网站可以有大量的商品,而其中流通活跃的商品可能只占其中的20%,其余80%的商品都是流通不活跃的。带动长尾物品的销售能给网站带来指数般的营业增长。

在电商行业中,推荐系统的核心任务就是给用户推荐那80%不活跃的商品。

Coverage = Pr / Pt

其中 Pr 表示所有用户的推荐列表中涵盖商品的个数,Pt 总的商品个数。

推荐系统不应该盲目地追求某个指标,而应该折中地考虑各种指标。

关于流行度和多样性

一个产品的度就是被收藏或购买的次数,产品度越大,说明越流行。如果系趋向于推荐流行的产品,那么被推荐产品的平均度就会很高;反制,平均度会很低。一般而言,被推荐产品的平均度小的系统相对更好。

对于商品流行度的度量,可以计算商品浏览、收藏、购买等操作次数,归一化后左右商品流行度,越接近1的越流行,接近0则是不流行了。

可以利用海明距离度量推荐系统中推荐列表的多样性,用户i和j推荐列表的海明距离被定义如下:

Hij = 1 - Qij / L

其中 L 为推荐列表的长度,Qij为系统推荐给用户i和j的两个推荐列表中相同产品的个数。推荐列表的多样性定义为Hij的平均值H。推荐列表多样性的最大值为1,即所有用户的推荐列表完全不一样;最小值为0,以为这所有用户的推荐列表一模一样。

关于新颖性和用户满意度

待补充