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