推荐系统的评估
由于推荐系统的多样性,导致其评估方法也多种多样。例如,MAE可以用来评估对某个Item的Prediction的Accuracy,却并不适合Top-N形式的推荐系统,因此,了解不同推荐系统的评估方法是有必要的。
基本准确率评估
基本准确率评估主要针对单个Item进行Prediction的Accuracy进行评估。当进行评估时,先将一个用户的评分抹去,然后用推荐系统去尝试对其进行预测,最后用某种特定的算法计算预测值与真实值的差值,来反映该推荐算法的好坏。而其中计算误差的“某种特定的算法”正是我们需要考虑的,一般来说,有如下几个算法:
- 平均绝对误差(Mean Absolute Error,MAE)
Σi|Pi−Ri|#ratings
- 均方误差(Mean Squared Error,MSE)
Σi(Pi−Ri)2#ratings
- 均方根误差(Rooted Mean Squared Error,RMSE)
Σi(Pi−Ri)2#ratings−−−−−−−−−−−√
以上各式中
Pi
为预测结果,
Ri
为用户的真实评分。其中,MSE的平方项不仅能自动消除
Pi−Ri
中可能存在的负号,而且可以对差距较大的预测结果做出惩罚。其缺点是量纲为评分的平方,结果的可解释性较差。为了解决这个问题提出了均方根误差,其对MSE的结果进行开方,使其单位统一为评分。
在使用上述几个算法时,需要注意以下两点:
- 评分数据必须为同一个量级。即不能一部分满分是5星的,另外一部分满分是7星的,或者一部分允许打半颗星,另外一部分不允许打半颗星等。
- 如果数据来源很多,覆盖面有差别,则仅对公共的User或者Item进行评分。
决策支持评估
基本概念
决策支持评估(Decision Support Evaluation)是用来衡量推荐系统帮助用户做出正确决策的能力的一种评估方式。举例来说,某个网站的评分系统为最多5星,且允许半星,则我们一般认为评分高于3.5分属于“喜欢”,低于3分属于“不喜欢”。若推荐系统为某个用户预测了某个Item的评分为4,而用户去体后给出的评分为2.5,那我们这个系统就出现了“错误”(因为系统认为用户“喜欢”该Item,但实际上用户并“不喜欢”这个Item,系统让用户做出了错误的决定)。反之,若推荐系统给出的分数为0.5,用户体验后的评分为2.5,则认为系统没有出现较大的错误(系统认为用户不会“喜欢”这个Item,用户实际上也不喜欢这个Item)。如果用先前的“基本准确率”框架来评估上述场景的话,无论使用什么误差计算算法,前者的效果要优于后者。但在决策支持框架下,后者的预测效果是优于前者的。
在这个框架下,误差(error)被定义成错误预测的度量。如上文提到的,系统认为用户会喜欢,但实际上用户并不喜欢,这就是一个error。在评估算法时,一般是统计总的error个数,或者每个Item的错误率等等。
混淆矩阵
在统计学或者机器学习的二分类问题中,常用混淆矩阵来对误差进行可视化。混淆矩阵有以下元素组成
- True Positive:条件支持结论为真,且预测结果也为真;如对病人的血液进行分析并得出有疾病的结论。
- False Positive:条件支持结论为假,但预测结果为真,亦即误报。在统计学中,称为第二型错误(Type II Error);如对健康人血液进行分析,得出有疾病的结论。
- True Negative:条件支持结论为假,且预测结果为假;如对健康人的血液进行分析,得出没有疾病的结论。
- False Negative:条件支持结论为真,但预测结果为假,亦即漏报。在统计学中,称为第一型错误(Type I Error);如对病人的血液进行分析,得出没有疾病的结论。
准确率与召回率(Precision and Recall)
准确率与召回率是信息检索领域的一个评估手段,经常用来评估搜索引擎的性能与效果。其由两部分组成:准确率、召回率。准确率用来评估获取的所有文档中,相关或者用户真正想要的文档所占的比例,其定义如下:
对应到推荐系统上,尤其是Top-N模式的推荐,我们可以认为“相关文档”就是不出现“error”(error的定义参见上文)的推荐项目,而分母“获取的所有文档”则可认为是所要推荐项目的个数,即Top-N List中出现我认可的项目个数占List中全部推荐项目个数的比例。
召回率刻画的是获取的相关文档占所有实际存在的相关文档的比例,其定义如下:
类似的,我们可以认为是Top-N List中出现我认可项目的个数与全部我认可的项目的个数的比例。
一个系统的准确率越高,就越不会出现与用户想找的主题无关的主题,亦即越可以节省用户的时间;一个系统的召回率越高,则其检索到与指定主题的文档越多,内容越全面。因此,单独看任何一个评价指标都是不科学的,故我们可以使用F1分数对一个系统进行全面描述,F1分数的定义如下:
ROC曲线
如果我们令系统的准确率(TPR)和误报率(FPR)分别为坐标的
y
轴和
如果我们通过抛硬币的形式随机决定要不要推荐某个Item,则所得到的ROC曲线就是图中的对角虚线。由上图不难看出,某个系统性能越好,它的ROC的曲线就越贴近
y
轴,理由也很简单,在相同的误报率下,越贴近