前段时间还跟实验室同学专门讨论了下关于个性化排序中的评价指标问题,即我们在实验的过程中究竟使用哪一种实验设置才能较好的反映模型的泛化能力,比如采用全量测试数据进行排序,但该方法需要的测试时间较长;比如使用采样的测试样本进行排序评估,该方法虽然评估时间大大缩短但不能完全反映模型性能。如今Rendle大佬通过实验的方式告诉了我们答案,并且凭借该主题获得了KDD2020的最佳论文,祝贺!
众所周知,推荐系统主要有两大任务:评分预测和个性化排序。其中,针对评分预测任务的评判指标主要是均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等回归指标。这些指标的评价相对来说复杂度较低,因此对于全量测试数据进行评估相对可行。对于个性化排序任务需要在给定上下文的情况下对大量的项目候选进行排序,因此需要利用平均准确率(MAP)、归一化折损累计增益(NDCG)等排序指标来评估模型的性能。如果大家想了解更多排序模型知识可以移步推荐系统中排序学习的三种设计思路。
目前,主流的个性化排序任务(Item Recommendation)的文献为了加速评价指标的计算,经常利用采样的指标(Sampled Metrics)进行评价,即针对待测试的正样本和随机出来的较小规模的负样本进行排序,比如在测试阶段对一个正样本和从大量候选集采样出来的99个负样本进行排序,然后计算该样本相对于负样本的排序位置进行性能评估。虽然这种实验设置可以一定程度上反映模型A的排序性能好于B,但根据论文的实验结果发现,这种结论并不总是成立的,往往采样指标的性能跟确切指标的性能不一致。另外,实验结果表明抽样规模越小,指标之间的差异就越小,而且对于非常小的抽样规模,所有指标都会塌陷为AUC指标。因此,论文提出了一种改进的采样评价指标用来提高评价质量。最后,该论文建议评价的时候尽量不要采样,如果不听话非要采样那就用所提出的修正的采样指标来提高评价质量。
来,让我们先来熟悉下常用的排序指标,即AUC,Precision,Recall,AP和NDCG。其中,为全部物品个数,为预测的列表结果,为预测的样本个数,代表该物品所在的位置,为设置的预测截断个数,为测试时采样的负样本个数。
AUC衡量了相关项目排在非相关项目前边的可能性。
Precision衡量了在前k个预测物品中相关物品的比例。
Recall代表预测召回的物品中排在前k位置物品的比例。
Average Precision表示对于前边Precision指标的平均。
NDCG为归一化的折损累计收益,通过在分母引入位置收益来表示排在前边并且收益大的项目获得的收益较高。
接下来介绍目前大部分文献采用的简化的采样过后的指标,以此来应对大规模样本的效率问题。大部分论文在评价的时候假设只有一个正样本,即=1,然后基于这个正样本采样若干个负样本,以此来进行排序,看最终该正样本排在了什么位置。因此上文的精确采样可以表示为下图所示的简化形式。
接下来主要介绍下论文中的实验结果分析与结论。
下图1展示的是将正样本随着排序位置的变化所产生的评价指标的变化。左图是针对所有的候选集来说的,右图是针对Top100来说的。从左图可以看出AUC是与排序位置无关的指标,随着排名
逐渐靠后,排序指标线性的递减。也就是说把正样本从排名1
00移到101位的变化跟把排名从第2位移到第1位一样;平均准确率AP的分数衰减的最明显,例如在排名第1位的价值是排名第2的两倍;右图展示了各种指标在Top100的指标变化,可见除了AUC以外,其他指标都对排序位置比较敏感。
对于排序评价指标的选择取决于是否位置敏感,即由于用户的注意力有限以及网站或者App有限的展示资源,人们大多比较关心排在头部的物品之间的相对位置,而忽略尾部的项目排序位置,因此对于测试阶段我们需要强调头部效应。而在训练阶段我们需要尽量打消这样的基于位置的偏见(Position bias),尽可能的还原用户点击该物品是真的处于喜欢,而非仅仅因为排在了头部显眼的位置。我喜欢你,不仅仅是因为你出现在了我眼前,而更是因为你的内在。
下表展示了3个推荐算法A,B,C
预测结果不同而产生的关于AUC,AP,NDCG和Recall的评价结果。表1是针对5个实例的精确评价,表2是采样过后进行的评价。可见只有AUC这种位置不敏感的指标对于三个推荐算法的排名没有变化,依然是算法A最
高,C次
之,B垫
底。而对于其他指标来说,利用采样之后的评价指标出现了与精确指标不一致的结果。
另外,论文还针对采样个数关于评价指标的变化进行了实验。实验结果出现群魔乱舞的现象。发现随着评价阶段负采样个数的增加,原来性能优越的算法A出
现性能恶化,最终被算法C打
败的情况。可见,只针对一个负采样个数来作为最终模型的性能评价有失公平。这么一想,咱的破模型没准在某个负采样个数的设置下可能打败著名的N某F。
另外,论文对于采样指标中不同的采样个数对结果的影响与精确的指标做了相关对比实验。可见不同的采样个数与精确的指标之间差距较大,并且即使采样个数足够大,仍然与精确的评价指标之间存在较大偏差。所以,只利用某一种负采样个数进行性能评估是具有偶然性的,但往往必然的结果是与真正的评价效果相差很远。
最后,论文提出了对于采样评价指标的修正版本。左边是修正的采样指标AP在
采样个数为
的结果,右边是在全量测试样本上的评价结果,可见两者效果是差不多相等的。
最后,大佬给出了一些做实验的建议。
抽样指标可能无法很好地指示该指标下推荐算法的真实性能。
对于未校正的指标,这主要是由于采样引入的较大偏差造成的。
使用校正方法,可以减少这种偏差,但要付出更高的方差代价。
如果论文中确实需要使用抽样指标,并且仍对指标的真实性能感兴趣,建议使用本文提出的校正方法。在这种情况下,请务必使用不同的样本(例如,不同的随机种子)重新进行实验。
尽管这种改进的评价指标优于未校正的采样指标,但由于偏差,它仍然倾向于得出错误的结论。所以只有完全避免抽样,才能消除这种偏差。
更多关于论文细节,请阅读原文。
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方"AINLP",进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注搜索/推荐技术
推荐阅读
这个NLP工具,玩得根本停不下来
征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)
完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)
从数据到模型,你可能需要1篇详实的pytorch踩坑指南
如何让Bert在finetune小数据集时更“稳”一点
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化
Node2Vec 论文+代码笔记
模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结
中文命名实体识别工具(NER)哪家强?
学自然语言处理,其实更应该学好英语
斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏