我对计算AUC(曲线下面积)来评估推荐系统结果感到困惑。
如果我们有交叉验证数据,例如(用户、产品、评分),如何选择每个用户的正样本和负样本来计算AUC?
是否应该选择在数据集中出现的每个用户的产品作为正样本,未出现在数据集中的其余产品作为负样本?我认为这种方式无法找到那些“真正”的负样本,因为用户有可能喜欢这些负样本中的产品。
我对计算AUC(曲线下面积)来评估推荐系统结果感到困惑。
如果我们有交叉验证数据,例如(用户、产品、评分),如何选择每个用户的正样本和负样本来计算AUC?
是否应该选择在数据集中出现的每个用户的产品作为正样本,未出现在数据集中的其余产品作为负样本?我认为这种方式无法找到那些“真正”的负样本,因为用户有可能喜欢这些负样本中的产品。
假设你正在构建一个前20名的推荐系统。你为用户推荐的20个项目是正面项目,未推荐的项目是负面项目。真正的正面项目是指你在Top-N列表中展示的与用户在测试集中喜欢的相匹配的项目。假阳性是指在你的Top-N列表中显示的不与她喜欢的项目相匹配的项目。真负面项目是那些你没有包括在你的Top-N推荐中的项目,这些项目是用户在其保留的测试集中没有喜欢的项目。而假阴性则是你没有包括在你的Top-N推荐中但与用户在其保留的测试集中喜欢的相匹配的项目。这就是混淆矩阵。现在你可以改变你推荐的项目数量,并为每个计算混淆矩阵,为每个计算召回和失效率,并绘制ROC曲线。