为什么基于排名的推荐使用NDCG?

Try*_*ung 7 algorithm recommendation-engine machine-learning

基于排名的推荐系统使用NDCG来评估建议书的准确性.但是,有时使用准确率和召回率来评估前n个推荐值.这是否意味着NDCG高,准确率高?但我运行了ListRankMF算法,movelens 100k数据集的准确率非常低,仅为8%左右.NDCG与准确率之间的关系是什么?

小智 1

当推荐系统的目标是返回一些相关结果并且顺序很重要时,NDCG 最有帮助。例如,推荐翻译,或推荐银行账户。如果我们错过相关结果并没有什么害处,但为了获得良好的用户体验,我们希望它们按有意义的顺序排列。

当推荐系统的目标是返回所有相关结果并且顺序并不重要时,召回是最有帮助的。例如,潜在的医疗诊断或处方。如果我们错过相关结果,那是有害的,因为这可能是正确的诊断或治疗方法。顺序并不重要,因为我们希望医生阅读所有可能性并利用他们的专业知识做出最终决定。

假设有 5 种我们可以推荐医生给患者服用的药物(A 到 E),以及 5 种我们不应该推荐的药物(F 到 J)。我们的推荐系统输出推荐 A、B、C、D。这给了我们以下评价:

  • NDCG = 1.0
  • 召回率 = 0.8

在这种情况下,回忆清楚地表明我们没有尽力而为(因为我们没有推荐药物 E),而 NDCG 让我们相信我们提出了完美的建议。

如果我们改为推荐书籍,那么 NDCG 会更合适。召回信息并不那么丰富,因为可能有数百本相关书籍,但我们不能指望用户阅读数百本书籍的列表后只选择一本来阅读。NDCG 会告诉我们我们是否至少推荐了一些可能的有意义的子集。