转载于 : https://zhuanlan.zhihu.com/p/547533183
训练样本决定了推荐算法中深度模型的上限,从理论上来说我们的采样应该尽可能覆盖样本空间中的所有数据。大部分情况下,点击率预估模型使用的正样本定义为user的点击行为,负样本定义为曝光未点击行为,但是样本常常会出现几个问题:
1、曝光未点击行为不一定能代表user真正不感兴趣的信息,曝光未点击有可能的原因是user已经看过该内容或者准备下次再看,也有一些user不感兴趣的内容因为没有曝光而没有被采样到负样本里。
2、对于大部分的点击率预估场景正负样本的比例都是非常悬殊的,该比例从1:50到1:500都有可能。极度不均衡的正负样本比例导致深度模型无法从正样本中学习到足够的信息,无法得到预期的训练效果。
从user未交互item中基于一定策略进行负样本筛选的过程就被成为负采样(negtive sampling),负采样的几个目的在于
1、平衡正负样本比例
2、筛选出信息量更高的负样本
3、可以消除由于曝光引起的样本偏差
4、同时通过负采样可以降低由于数据量大产生的内存和训练时长的问题
Tricks
提高负样本信息量:
1、回溯user的点击历史,在当天的负样本中去掉user近一周点击过的item。如果过去有过点击历史,说明user并不是对这个item不感兴趣,只是看过了不想再看
2、在负样本中对user粒度进行曝光次数进行排序,只选取曝光最多次未点击的数据作为负样本。同样不点击的情况下,默认认为曝光次数越高user对于该item不感兴趣的程度也越高。
3、去掉只有正样本或者只有负样本的user样本/item样本,可以一定程度上减少过拟合的情况。
消除曝光造成的偏差:
1、除了采用曝光未点击数据作为负样本以外,也可以从召回结果中user未点击且未曝光的item作为负样本,这种全局采样的方法可以在一定程度上消除一些item由于没有曝光造成的样本偏差问题。
2、基于流行度(item的交互次数)对负样本里的item进行带权采样。流行度越高的item受到用户喜爱的概率也越大,因此如果流行度高的item出现在负样本里可以认为它的信息量越大。但是这种方法有可能引入新的偏差,需要根据自己的业务来判断是否使用。
其他:
1、基于重要指标对负样本里的item进行带权采样。例如在业务中想要强化交互时长指标在模型中的作用,可以在负样本中提高交互时长较低的item采样概率。