到目前为止,我们一直使用 squared errors 的和作为评价推荐系统的指标。 但是这样做有一定的缺陷。比如:推荐系统每次都会选出一批商品,进行排序后推荐给用户。 只要用户需要的商品被放在了顶部(前几名/首页), 其实排名的先后顺序并没有太大关系。 除此以外, 还有一些其他因素:
可见性: 对于 MSE,把5星评价预测成4星的错误,小于把3星评价预测成1星评价的错误。 但在实际场景中, 后者的错误并不重要, 因为他们都不会被推荐给用户, 这种错误根本就不会对用户产生什么影响。
顺序: 如果有 A,B 两个商品,他们真实的评价分别为 ,假设模型1给出的预测为: , 模型2给出的预测为: 。对于MES, 模型1的error 更大(每个预测误差1),模型2的error 更小 (每个预测误差0.5)。但是模型1对结果的影响更小,因为它不会改变 A,B 的相对顺序。
误差分布: 使用 MSE 的时候, 我们有个潜在的假设,即误差是正态分布的, outlier 应该是很罕见的,因此会被重点惩罚(outlier 的MSE 值更大)。 而在实际中, outlier 可能比较常见, 误差的分布也可能不是正态分布,而是双峰分布。
人气偏差(popularity bias): (Precision-oriented evaluation of recommender systems: An algorithmic comparison, 2011) MES 会引导模型在人气商品上给出比较好的结果,而对于冷门商品的性能就会比较差。
这些问题引起了人们的疑问:即均方误差(MSE)的减少是否实际上对应着推荐系统变得更好。有趣的是,(. Collaborative filtering with temporal dynamics, 2009) 报告说,基于 temporally-evolving bias 的精心实现的模型优于 Netflix 之前的基于RMSE的解决方案(Cinematch)。尤其对于没有任何交互信息的推荐系统,推荐的只能是热门商品;对于这种系统,更好的 MSE 未必对应着更好的推荐结果。
基于上述一些问题,有些人建议使用其他回归型指标,例如平均绝对误差(Mean Absolute Error),它(例如)对异常值不太敏感。也有人建议,也许应该把推荐系统按照排名问题进行评估,而不是像回归问题那样评估。也就是说,只要符合用户兴趣排序即可,预测的精确度并不重要。
可以说,对此类问题的研究正在转向依赖隐式反馈(点击、购买等)而不是rating 的均方误差;或者说,这些新的方法可能更可取,因为这样的数据比明确的评分更可用(很少有用户对商品进行评分,但每个用户都会点击它们)。更粗略地说,与预测用户的评价相比,优化点击或购买可能更接近于业务目标。
之前我们也谈到了针对排名进行优化的度量方法,即 AUC。从概念上讲,AUC 反映了我们猜测两个项目中哪一个是“相关的”的能力:AUC 为 1意味着我们总是选择正确的项目,而 0.5 的 AUC 意味着我们的猜测等同于随机。
然而,AUC 只是对排名进行优化的一种选择。当考虑通过UI界面向用户反馈推荐结果时,我们可能对推荐系统在对Top K 的排名表现特别感兴趣,因为这些商品会最终呈现给用户。
下面我们介绍一些评估函数来衡量推荐系统性能,其中大部分都专注于在寻找Top K的项目中实现比较高的精度。
5.4.1 TopK 的 精度与召回率 (Precision & Recall @K)
既然相对 TopK 的推荐进行优化, 最直接的想法就是考察 TopK 商品的 Precision 和 Recall。 为了简单, 我们使用记号 来代表,商品 对用户 的排名; 是预测用户对商品喜爱度的函数,对于 有:
对于测试集中, 用户u 的交互数据 , 定义针对用户u 的 TopK precision: 为:
那么, 对于所有用户, 为:
类似的, 可以定义为:
5.4.2 Mean Reciprocal Rank (MRR)
MRR 是另外一种基于排序的评价指标, 不同于 , MRR 不需要预先指定 值, 它会自动的对于高排名的商品基于更多的关注。 在搜索问题中, MRR 被定义为, 在返回的列表中, 第一个用户关心的结果的排序(最高排序)。 在推荐问题中, 我们可以让 test set 中只包括 1 个用户关心的结果。 那么 Mean Reciprocal Rank 可以定义为:
代表用户关注的商品每次都被推荐到了第一位, 而 代表用户关注的商品平均都被推荐到了第 n 名。
5.4.3 累积增益 (Cumulative Gain) 和 NGCG
旨在用用户浏览搜索结果时的行为,来评价推荐系统的好坏:用户希望相关的结果能够尽可能的排在前面(Top K)。 其实就是统计再 Top K 的结果中, 有多少记录是用户想要的:
要么是一个二元的标签(是否购买), 或者是一个数值型的评分(rating)。 如果用户想要的商品都排在前面, 那么的分数就会更高。
Discounted Cumulative Gain (DCG) 进一步考虑到, 在用户想要的结果中,也有会优先级(更想要的 vs 一般想要的) , 因此, 可以基于 rank 再进一步的优化:
为了能够标准化结果, 通常我们会让 DCG 除以一个理想化的结果 (以最理想的结果为尺子,来衡量当前结果), 这样就得到 Normalized Discounted Cumulative Gain (NDCG):
其中 是理想化的 DCG,也就是说,它来源于一个最理想化的排序算法 (例如,按照答案,对结果进行排序) 。(A theoretical analysis of NDCG type ranking measures, 2013) 介绍了这个方法,并且解释了为什么要用在公式中使用 Log运算。
5.4.4 除了精确度,其他需要考虑的指标
最后,应该注意的是,除了针对用户的直接效用(即预测用户下一个动作)之外,我们可能还希望推荐系统具有其他几个品质。例如,我们可能有兴趣让用户了解不同的观点,确保推荐不会偏向某些群体,用户不会被推向“极端”内容等。当我们考虑个性化机器学习的更广泛后果和伦理时,我们将在第 10 章重新讨论这些问题。其中一些已经得到了研究的支持。