转化率(CTR)预测的贝叶斯平滑
2017-10-24 20:42
369 查看
概述
电商领域中经常需要计算或预测一些转化率指标,如最典型的CTR(点击率,Click-Through Rate)。这些转化率可以是模型的预测值,也可以作为模型的特征(feature)使用。以商品点击率预测为例,CTR的值等于点击量(Click)除以曝光量(Impression或Exposure)。以r表示点击率,r=CI(1).
但在实际应用过程中会碰到两个问题:
新商品点击率的预测与计算
对于新上线的商品,其曝光为0,点击量也为0,此时这件商品的CTR应该设为0还是赋一个初始值?
不同商品点击率之间的比较
有两件商品A和B,其点击率分别为rA=510和rB=50100,rA=rB,但商品A的曝光只有10次,商品B的曝光有100次,这样比较是否合理?
第一个问题,初始值设0是可以的,但不太合理。当CTR作为特征使用时,表示这个商品完全没有点击,不太符合日常推断,通常是赋一个大于0的初始值。第二个问题,不合理。
解决以上两个问题可以使用平滑的技术解决。最简单的方法是在计算CTR的公式中分子分母同时加上一个数,加上之后可避免这两个问题。
r=C+aI+b(2)
但(2)式中a和b的值如何确定?若设置得不合理会出现数据被放大的情况。本文介绍如何使用贝叶斯平滑来确定a和b的值。
贝叶斯平滑
贝叶斯平滑的思想是给CTR预设一个经验初始值,再通过当前的点击量和曝光量来修正这个初始值。如果某商品的点击量和曝光量都是0,那么该商品的CTR就是这个经验初始值;如果商品A和商品B的曝光量差别很大,那么可以通过这个经验初始值来修正,使得曝光量大的商品的权重增大。贝叶斯平滑就是确定这个经验值的过程。贝叶斯平滑是基于贝叶斯统计推断的,因此经验值计算的过程依赖于数据的分布情况。
贝叶斯平滑的推导涉及贝叶斯参数估计,如果对贝叶斯参数估计不熟悉,可以参考这篇文章:贝叶斯参数估计
点击率贝叶斯平滑的假设
对于一件商品或一条广告,对于某次曝光,用户要么点击,要么没点击,这符合二项分布。因此下文中对于点击率类的贝叶斯平滑,都是基于以下假设:对于某件商品或广告X,其是否被点击是一个伯努利分布(Bernoulli)。X∼Ber(r)(3)
其中X表示某个广告是否被点击,点击取1,未被点击取0,r是某件商品被点击的概率,即点击率。
对于不符合二项分布的比值类数据,后文有说明。
点击率的极大似然估计
在(3)式的假设下,可以使用极大似然法计算出点击率的估计值r^。从用户日志中随机抽取n条记录,对任一条记录i都有Xi∼Ber(r)(4)
那么所有记录的点击数的联合概率密度就是上式的连乘。将连乘后的式子对r求导,并令其等于0,可以解出r的值r^,r^就是点击率的极大似然估计。当某件商品的点击次数或曝光量等于0时,可以用r^当成它的初始值。它解决了最开始提出的第一个问题,但没有解决第二个问题。
上述r^的计算没有用到历史信息。所谓历史信息是指:虽然我们不知道r的具体取值,但是可以知道r取值的范围,更精确地,我们可以假设r服从某个分布。要将这些信息融入到r的估计中需要用到贝叶斯参数估计。关于贝叶斯参数估计的具体内容可以参考:贝叶斯参数估计。
点击率的贝叶斯估计
在贝叶斯框架下,我们假设点击率r服从某个分布:r∼π(r)(5)
因为这是基于经验的,这个分布称为先验分布。贝叶斯参数估计可以同时解决最开始提出的两个问题。其过程是基于经验或历史数据先给出一个r的估计值,然后基于现有的数据在这个估计值上修正,得到最终的点击率估计,此时的估计值已经是修正过的。更美好的是我们可以分离出修正参数(即(2)式中的a和b)。
既然有先验分布,就有后验分布。r的后验分布记作π(r|x)。其中x表示输入数据或特征,对于点击率预测,x就是点击次数和曝光量。因为已经看到了数据,才确定r的分布,因此叫做『后验』分布。贝叶斯估计的实质就是求后验分布。即基于当前的点击次数和曝光量,求点击率的分布;而未看到数据之前点击率的分布是π(r)。下面会讲解如何计算后验分布π(r|x).
贝叶斯估计的过程可以简单认为:
用历史数据根据π(r)估计r,记作r^history;用当前数据根据π(r|x)估计r,记作r^current,然后用r^history修正r^current。
损失函数
r的后验分布π(r|x)是个概率密度函数,无法知道r确切的值。需要求出最接近真实情况的r需要损失函数来约束。适用于点击率的损失函数有:
L(r^,r)=(r^−r)2
L(r^,r)=|r^−r|
贝叶斯参数估计的过程可以简单描述为:
求r^,使得损失函数在r的后验分布上的期望最小。
这句话的数学公式是:
argmin∫L(r,r^)π(r|x) dr=EπL(r,r^)(6)
整个过程的推导可以参考贝叶斯参数估计。
因此需要知道π(r|x)的形式,然而π(r|x)的形式一般不知道的,但是可以知道π(r)的形式(经验值嘛,我们指定的)。此外,数据的分布我们也是知道的,其概率密度函数(pdf)记为f(x|r),表示数据的分布跟参数r有关,r是要求解的参数,在这里就是点击率。
这时可以根据贝叶斯公式计算出π(r|x):
π(r|x)=f(x|r)π(r)f(x)(7)
其中,
f(x)=∫∞0f(x|r)π(r)dr (边缘概率密度定义)
上式好复杂,但其实一些常见的分布都可以求出上式积分的具体形式。但通常不用实际去积分,因为满足一定条件,π(r)跟π(r|x)有一样的形式。π(r)是已知的,如果形式一样,π(r|x)也就容易求得了。下面介绍共轭先验的概念。
共轭先验:
如果找到一个π(r),它是f(x|r)的共轭先验,那么r的后验分布π(r|x)和先验分布π(r)会有一样的形式。
『轭』是指驾车时套在牲口脖子上的曲木。古代拉扯的牲口通常有两只,因此轭是连接两只牲口的工具。在这里共轭是指π(r)和π(r|x)通过f(x|r)联系起来了。
之前假设广告是否点击服从伯努利分布,参数为r;对于点击次数,服从的是二项分布,即f(C,I|r)∼Bin(r)。二项分布的共轭先验是Beta分布,Beta分布的参数是α和β,即π(r)=Beta(α,β)。根据共轭先验的定义,r的后验分布π(r|x)的形式跟其先验分布π(r)一样,即π(r|x)=Beta(α′,β′)。
对于点击率预测,求出π(r|x),带入公式(6),当L(r^,r)=(r^−r)2时,
r^=C+αI+α+β(8)
上式的求解过程可以参考贝叶斯参数估计最后的例子。(8)式就是点击率估计(平滑)的最终形式。其中C和I就是点击次数和曝光量,α即为公式(2)中的a,α+β是公式(2)中的b。α和β是从历史数据中得到的。
上面的内容给出了为什么很多文章会假设点击率服从Beta分布的理由,因为最终的平滑的因子是Beta分布(先验分布)中的两个参数。那么如何计算(估计)这两个参数?
贝叶斯平滑因子的计算
综上,贝叶斯平滑的最终落脚点是要估计Beta分布(点击率r服从的分布)中的参数α和β。下面给出比较直观的矩估计的方法。矩估计
Beta分布的期望是E(X)=αα+β,方差是D(X)=αβ(α+β)2+(α+β+1). 我们可以用样本的均值代替期望,样本的方差代替总体的方差,此时就可以解出α和β的值。X¯是样本均值,S2是样本方差,则:α=X¯(X¯(1−X¯)S2−1)(9)
β=(1−X¯)(X¯(1−X¯)S2−1)(10)
工程实践
实际操作时可以连续取一段时间的数据,比如一周,然后在每天的数据中计算每件商品或广告的点击率,之后求出这些点击率的均值和方差,带入公式(9)和公式(10),可以得到每天的α和β. 最后求这段时间α和β的均值作为最终的平滑参数。也可以每天计算前一天的α和β,用于当天的点击率预测平滑。
实际应用时根据历史数据得到的α和β可以帮助确定平滑参数的大致范围,防止设置参数时偏离过大。通常可以调整α和β的范围达到预期的效果。
下图是某件商品在两周时间内的点击率。黄色线是每天根据点击次数C和曝光量I计算得到的真实点击率;蓝色线是根据一周的历史数据计算得到的α和β带入公式(8)得到的平滑后的点击率;绿色线是自定义平滑参数的点击率,a=50,b=200,设置得比较夸张。可以看到如果平滑参数设置的不合理,会放大数据的表现,有时候甚至会扭曲数据的走势,数据预处理时需要考虑这样的情况。
非二项分布的贝叶斯平滑
公式(8)的结论适用于数据是二项分布的情况,如点击率。对于不是二项分布的数据公式(8)不适用。如果数据不是二项分布,那么其先验概率就不是Beta分布了。比如某件商品一天的点击量与一周的点击量的比值,这个数据不符合二项分布,因此不适用公式(8)。但这个数据有可能是高斯分布。如果数据是高斯分布,那么其先验概率π(r)是逆Gamma分布(invers Gamma)分布,进而其后验概率π(r|x)也是逆Gamma分布,此时公式(8)会有不一样的形式。相关文章推荐
- [笔记]CTR预估中的贝叶斯平滑方法及其代码实现
- [笔记]CTR预估中的贝叶斯平滑方法及其代码实现
- CTR预估中的贝叶斯平滑方法(一)原理及实验介绍
- 【算法】CTR预估中的贝叶斯平滑方法(一)
- 【实践】CTR预估中的贝叶斯平滑方法(二)
- [笔记]CTR预估中的贝叶斯平滑方法及其代码实现
- [笔记]CTR预估中的贝叶斯平滑方法及其代码实现
- 机器学习中的贝叶斯方法---当后验分布无法计算时如何求得预测模型?
- 贝叶斯分类对股票走势预测
- python训练贝叶斯算法进行某个实例的属实率预测
- 贝叶斯分类实例(Kaggle比赛之『旧金山犯罪分类预测』)
- 广告点击率的贝叶斯平滑
- 广告点击率贝叶斯平滑
- 广告点击率的贝叶斯平滑
- 【转载】广告点击率的贝叶斯平滑
- 贝叶斯平滑
- 广告点击率的贝叶斯平滑
- 【转载】广告计算——平滑CTR
- 利用Knn, 决策树, 高斯朴树贝叶斯,对行为进行预测