如何计算推荐系统评估中的AUC(曲线下面积)

12

我对计算AUC(曲线下面积)来评估推荐系统结果感到困惑。

如果我们有交叉验证数据,例如(用户、产品、评分),如何选择每个用户的正样本和负样本来计算AUC?

是否应该选择在数据集中出现的每个用户的产品作为正样本,未出现在数据集中的其余产品作为负样本?我认为这种方式无法找到那些“真正”的负样本,因为用户有可能喜欢这些负样本中的产品。

1个回答

13
"A ROC曲线绘制了召回率(真正例率)与误报率(假正例率)随着推荐集大小的增加而变化的情况。" Schröder, Thiele, and Lehner 2011 (PDF) "通常情况下,您需要将数据的一部分保留为测试数据。对于特定用户,您会在她80%的数据上进行训练,并尝试预测基于剩余20%的数据,她可能会喜欢哪些项目(在数据集中的所有项目中)。"

假设你正在构建一个前20名的推荐系统。你为用户推荐的20个项目是正面项目,未推荐的项目是负面项目。真正的正面项目是指你在Top-N列表中展示的与用户在测试集中喜欢的相匹配的项目。假阳性是指在你的Top-N列表中显示的不与她喜欢的项目相匹配的项目。真负面项目是那些你没有包括在你的Top-N推荐中的项目,这些项目是用户在其保留的测试集中没有喜欢的项目。而假阴性则是你没有包括在你的Top-N推荐中但与用户在其保留的测试集中喜欢的相匹配的项目。这就是混淆矩阵。现在你可以改变你推荐的项目数量,并为每个计算混淆矩阵,为每个计算召回和失效率,并绘制ROC曲线。


这适用于一个用户,现在假设我们想要对100个用户进行评估,我们需要遍历每个用户,变化阈值,计算AUC然后取平均值,或者有没有一种方法可以一次性为所有用户计算AUC(阈值将同时应用于所有用户)? - Amine boujida

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接