推荐系统遇上深度学习(六十五)-负采样点击率修正的那些事
本来想写蚂蚁金服运用强化学习做推荐的文章《Generative Adversarial User Model for Reinforcement Learning Based Recommendation System》,但这不快放假了嘛,思考再三还是决定写点简单的吧。这次来谈谈负采样点击率修正的那些事。
1、负采样点击率修正
在广告点击率预估中,正负样本的比例是很不平衡的,所以有时候需要进行一定程度的负采样,即对负样本进行一定比例的采样,降低正负样本不平衡的程度,一定程度上提高模型预估的精度。
假设整体样本中的正负样本比例为1:3(当然实际上会比这更不平衡的多,此处仅仅是举个例子),由于假设训练集和测试集中的样本是独立同分布的,那么由不采样的数据训练得到的模型,在测试集上的点击率平均值约为0.25。
再假设样本中存在三种广告的样本A、B和C,其比例为50:30:20,而各自的正样本分别占30%、20%和20%,如下图所示:

这样,在测试集中,对三种广告的点击率预估值的平均值也接近0.3、0.2和0.2。此时我们对负样本进行一定程度的采样,假设采样率为1/3,这样能使整体上正负样本比例保持在1:1,但是具体到A、B和C三种类型的广告,其比例就不确定了,咱们具体来算一下,结果如下:

要注意上图中,我们仅仅是将负样本占比除以3。这样算出的A、B和C三种类型的广告的点击率的平均值仍满足A>B=C。这样是保序的,我们会把A广告排在最前面。但是在广告场景中,不仅仅要考虑点击率,还要考虑每次点击带来的收益,假设A、B、C三种广告的收益CPC(cost per click,每次点击收益)分别是6、8、3,那么三种广告每次曝光带来的期望收益是1.8、1.6和0.6,排序顺序为A、B、C:

而在采样后,三种广告每次曝光带来的期望收益是3.38、3.43和1.29,排序变为了B、A、C。

因此样本采样虽然可能带来更好的模型精度,但是在广告场景中,需要对点击率进行修正,修正公式如下:

上图中,q是修正后的点击率,p是采样后的预测点击率、w是采样率,推导过程如下:

再来看刚才的结果,使用修正公式后点击率和采样前相同:

好了,本文就到这里了,祝大家假期快乐!