我对计算AUC(曲线下面积)以评估推荐系统结果感到困惑。
如果我们有交叉验证数据,如(用户,产品,评级)。如何为每个用户选择正样本和负样本来计算AUC?
选择数据集中每个用户的产品作为正样本是否合适?其余的数据集中没有作为负样本出现?我认为这种方式无法找出那些“真正的”负面样本,因为用户有机会在负面样本中喜欢这些产品。
答案 0 :(得分:4)
“ROC曲线绘制了对于增加推荐集大小的回忆(真实阳性率)与后果(误报率)的关系。” Schröder, Thiele, and Lehner 2011 (PDF)
通常,您会将部分数据作为测试数据保留。对于特定用户,您将训练(例如)80%的数据,并尝试根据剩余的20%的数据预测哪些项目(数据集中的所有项目)将显示首选项。
假设您正在建立一个前20名推荐人。您为用户推荐的20个项目是肯定项目,未推荐的项目是否定项目。因此,True Positive项目是您在Top-N列表中显示的项目,与您保留的测试集中的用户首选项目相匹配。 False Positive是您的前N个列表中与其保留的测试集中的首选项目不匹配的项目。 True Negative项目是您未包含在前N个推荐中的项目,是用户在其保留的测试集中的首选项目中没有的项目。而False Negative是您未包含在前N个建议中的项目,但确实与用户在其保留测试集中所偏好的项目相匹配。这就是混乱矩阵。现在,您可以改变您推荐的项目数量并计算每个项目的混淆矩阵,计算每个项目的召回和余量,并绘制ROC。