推荐系统的负采样

0.广告系统存在的问题

转载:https://www.jianshu.com/p/2f64f49e43cd

0.1 训练数据跟线上数据的分布不一致

也可以称为样本选择偏差问题。由于用户点击的广告只占总广告的一小部分,也就是我们训练只用到的一小部分数据集,但是我们在线上预测的时候是在整个数据集上预测,所以就有了样本选择偏差问题。

0.2 曝光未点击的广告不一定是用户不喜欢的

0.3 数据稀疏问题。正负样本比例太大

0.4 长尾分布问题

0.5 不能用只用曝光未点击的数据作负样本

1.该数据较优质,已经经过上一次排序,召回筛选,只能在较优质与优质文章中筛选

2.未见过坏样本数据,导致训练强度不够,导致训练出结果偏差较大

1.随机负采样

转载:https://blog.csdn.net/u011233351/article/details/104951598/

1.1 存在问题

头部效应非常重。热文被大量分发,个性化能力大幅减弱。站在一个用户的角度看,用户的样本可以通过一些手段做到均衡化。站在一篇文章的角度看,就不是这么回事了,被频繁点击的文章有大量正样本,因为负样本是随机采样,冷文章和热文章被采到的几率相等,那么被频繁点击的文章正样本相对负样本就会多很多,多到均衡化都带不动。

1.2 失效原因

库中有1000个item,我需要随机负采样5000次,那么理论上对于每篇文章会出现5个负样本,假设有5000次点击形成的正样本,5000个正样本里点击频率top10的item瓜分了500个点击,那么top10中的每个item就有了50个正样本。50个正样本+5个负样本带入模型训练,模型会认为这篇文章适合推荐给绝绝绝大多数人,但这篇文章很肯能是“杨幂离婚”类,“杜兰特感染冠状病毒”类,“王者荣耀新英雄”类文章(在某个大领域人人都关注,点击,但出了这个圈子有大量人其实并不care)。

1.3 改进方式

热门物品作正样本时,降采样;作负样本时,过采样

2 Real-Negative Subsampling(百度,广告)

百度广告展示系统整体的广告点击率只有0.03%。而且曝光频次是长尾分布的,所以少数的广告占据了大部分曝光。

这些广告可能同时出现在正样本和负样本中。我们不希望这些广告出现在负样本中被压制,因为他们通常具有很高的商业价值。因此会对这部分广告进行降采样。

采用的方法是:训练集中具有较高曝光频率的广告的负样本三元组,以这个概率丢弃:

在这里插入图片描述

3 加权随机负采样(百度,广告)

百度,CIKM2020,Sample Optimization For Display Advertising

1.根据广告的曝光频次对广告进行分组:
在这里插入图片描述
将大于阈值的记为Ah, 小于阈值的为Al, f(a)为广告a的曝光频次。

2.生成一个(0,1)之间的随机数p

如果p小于Pl,则从Al使用均匀采样的方法得到一个广告;

否则从Ah中基于unigram distribution分布采样得到一个广告。
在这里插入图片描述
上面Pl的定义:
在这里插入图片描述

4 hard负样本(FB)

4.1 将样本分三类

1.正样本(用户点击)
2.easy 负样本(随机筛选,模型很容易区分出)
3.hard负样本(能够增加模型训练难度,可提升模型关注细节的能力)

4.2 筛选负样本的方式

1.增加属性相似负样本(例如同城Item)
2.增加被拒绝的负样本
3.利用上一版本模型召回算出101-500的文章作为负样本

4.2.1 用其他样本的点击作为负样本

适用于Online负样本采样

一个batch中从其他user的点击中随机选取k个作为负样本(文中k=2)

频繁被点击的文章会被频繁负采样,可做到文章侧的样本均衡,有效减轻了头部效应。并且相对于排序的负采样,数据的广度更宽,模型可处理多种类型的文章。

但是实际上以这种方式选取出来的负样本还不够 hard,因为这些 negative 是属于不同的 query 的,不同 query 的相关性不高,因此这些样本的相似性也不高,因此还需要offline hard negative mining

4.2.2 取上一版本的召回排在101~500的样本作为负样本

适用Offline负样本采样

在每个 query 的所有 document 中,选择那些排序在 101-500 的位置的样本作为 hard nagative

easy:hard=100:1

5 模型维度的负样本的使用(FB)

5.1并联模型

在这里插入图片描述在这里插入图片描述
分别使用easy负样本、hard负样本构成的样本训练多个模型,对得到的embedding加权拼接(权值需要手工调整)。

5.2 串联模型

先用easy负样本完成第一阶段的训练,再用第一阶段的输出作为第二阶段的初始值,使用hard样本训练。

根据文章中的经验,使用“曝光未点击”作hard negative训练出来的hard model同样没有效果,反而是挖掘出来的hard negative训练出来的hard model做二次筛选更加有效。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值