# 推荐系统召回是怎么实现热门item的打压?
任何一个推荐系统,都难逃"2~8定律的影响,即20%的热门item占据了80%的曝光与点击。因为正例中的物料都是用户点击过的物料,可以说正例数据被少数热门物料所”垄断”。导致的后果就是,
- 训练时,模型会迫使每个用户向量尽可能接近少数热门物料的向量;
- 预测时,每个用户从FAISS检索出来的邻居都是那少数几个热门物料,使推荐结果丧失了个性化与多样性。
由此可见,"打压热门物料的必要性。视物料出现在正例还是在负例中,要采取截然不同的打压策略
# 生成item+时,打压高热item(热门物料当正例要降采样)
目标是降低热门item成为item+的可能性。因此,item越热门,其成为item的概率就应该越低。
定义一个item
- 其中
是物料 的曝光频率。可见, 曝光越频繁,即热度越高,它成为正样本的概率就越低。 是一个超参。可以理解为定义"冷门物料"的门槛,如果 还被点击过,必须成为正样本。
# 生成item-时,提升高热item(热门物料当负例要过采样)
目标是提升热门item成为item-的概率。物料的热度越高,应该越有可能成为负例。可以从两个角度来理解
- 既然热门item已经垄断了了item+,我们也需要提高热门item在item-中的比例,以抵消热门item对loss的影响
- 如果在负采样时采取uniform sampling,因为候选集巨大而采样量有限,因此极有可能采样得到的物料与用户"八杆子打不着",即所谓的easy negative。而如果多采样一些热门item当item-,因为绝大多数用户都喜欢热门item,这样采集到的item-是所谓的hard negative,会极大地提升模型的分辨能力。
所以在随机采样负样本时,一方面需要采集到的item-能够尽可能地广泛覆盖所有候选item,另一方面又需要使采集到的item-尽量集中于高热item。
为了平衡这两方面的需求,我们定义负采样概率
代表所有候选物料- 超参
时,负采样完全按照物料的热门程度进行,对热门item的打压最厉害,但是对所有候选item的覆盖度下降,导致训练数据环境与预测数据环境的gap增大,反而损害召回效果。 时,负采样变成unform sampling,对所有候选item的覆盖度最高,减少了训练环境与预测数据环境的gap,但是对热门item的打压完全没有打压,采集到的都是easy nagatve,召回效果会偏热门,个性化较差。- 根据经验,b一般取0.75