【发布时间】:2017-06-05 02:07:18
【问题描述】:
我对计算 AUC(曲线下面积)来评估推荐系统结果感到困惑。
如果我们有交叉验证数据,例如(用户、产品、评级)。如何为每个用户选择正样本和负样本来计算AUC?
是否可以选择数据集中每个用户发生的产品作为正样本,而将数据集中没有出现的其余产品作为负样本?我认为这种方式无法找出那些“真正的”负样本,因为用户有机会喜欢负样本中的那些产品。
【问题讨论】:
标签: machine-learning data-science
我对计算 AUC(曲线下面积)来评估推荐系统结果感到困惑。
如果我们有交叉验证数据,例如(用户、产品、评级)。如何为每个用户选择正样本和负样本来计算AUC?
是否可以选择数据集中每个用户发生的产品作为正样本,而将数据集中没有出现的其余产品作为负样本?我认为这种方式无法找出那些“真正的”负样本,因为用户有机会喜欢负样本中的那些产品。
【问题讨论】:
标签: machine-learning data-science
“ROC 曲线绘制了召回率(真阳性率)与后果(假阳性率)的关系,以增加推荐集的大小。” Schröder, Thiele, and Lehner 2011 (PDF)
一般来说,您会保留一部分数据作为测试数据。对于特定用户,您将在(例如)她 80% 的数据上进行训练,并尝试根据剩余 20% 的数据预测她将表现出偏好的项目(在数据集中的所有项目中)。
假设您正在构建一个排名前 20 的推荐系统。您为用户推荐的 20 个项目是正面项目,不推荐的项目是负面项目。因此,True Positive 项目是您在 Top-N 列表中显示的与用户在她的保留测试集中首选的项目相匹配的项目。误报是您的 Top-N 列表中的项目与她在保留测试集中的首选项目不匹配。 True Negative items 是那些您没有包含在 Top-N 推荐中的项目,并且是用户在她的保留测试集中的首选项目中没有的项目。假阴性是您未包含在 Top-N 推荐中但与用户在她的保留测试集中偏好的项目相匹配的项目。这就是混淆矩阵。现在,您可以改变推荐的项目数量,计算每个项目的混淆矩阵,计算每个项目的召回率和影响,并绘制 ROC。
【讨论】: