我已经使用lightfm玩了相当长的时间,并发现它在生成推荐方面非常有用。然而,有两个主要问题我想了解。
-
在推荐排名重要的情况下,要评估LightFM模型,我应该更多地依赖
precision@k
还是其他提供的评估指标,比如AUC score
?在哪些情况下我应该专注于提高我的precision@k
而不是其他指标?或者它们是否高度相关?这意味着如果我设法提高我的precision@k
分数,其他指标也会随之提高,对吗? -
如果使用
WARP
损失函数训练的模型在precision@5
上的得分为0.089,你会如何解释?据我所知,Precision at 5告诉我前5个结果中有多少比例是正面/相关的。这意味着如果我的预测未能进入前5名,我的precision@5
将为0;如果我在前5名中只有一个预测正确,我的得分将为0.2。但是我无法解释0.0xx对于precision@n
意味着什么。
谢谢
回答:
Precision@K和AUC测量的是不同的东西,它们为你提供了关于模型质量的不同视角。一般来说,它们应该是相关的,但了解它们的不同之处可能会帮助你选择对你的应用更重要的那个指标。
- Precision@K测量的是在K个最高排名的项目中,正面项目的比例。因此,它非常关注列表顶部的排名质量:只要前K个项目大多是正面的,其余排名的好坏并不重要。如果你只打算向用户展示列表的最顶部,这将是一个合适的指标。
- AUC测量的是整体排名的质量。在二元情况下,它可以被解释为随机选择的正面项目排名高于随机选择的负面项目的概率。因此,接近1.0的AUC会表明,总体来说,你的排序是正确的:即使前K个项目中没有正面项目,这也可能是真的。如果你对展示给用户的哪些结果没有完全控制权,这个指标可能更合适;可能前K个推荐的项目不再可用(比如,它们已经缺货),你需要进一步查看排名。一个高AUC分数会让你对整个排名的高质量充满信心。
还要注意,虽然AUC指标的最大值是1.0,但可实现的precision@K的最大值取决于你的数据。例如,如果你测量precision@5但只有一个正面项目,你能达到的最高分是0.2。
在LightFM中,AUC和precision@K例程返回的是指标分数的数组:测试数据中每个用户一个。大多数情况下,你会平均这些分数以获得平均AUC或平均precision@K分数:如果一些用户在precision@5指标上的分数为0,你的平均precision@5可能会在0到0.2之间。
希望这对你有帮助!