在我们设计特征时,许多时候排序对象的反馈ctr(如某个ad,文章,在一段时间内的统计ctr)是个重要的特征。
当数据当中有许多新的对象(如ad,文章),或者不置信的数据时(某些ad,文章的展现次数过小,没有置信的统计ctr),其反馈ctr就会有较大偏差(Bias),影响该特征的预估能力。
比如新投放的广告没有得到足够的曝光:
1、当其没有点击时(或者较少),ctr过低,导致ctr过度低估。
2、当其曝光一两次,正好有一两次点击时,ctr过高,导致高估。
1、贝叶斯平滑(也是个经典的概率图模型)
【总体过程假设了两个参数,alpha,beta,以及中间参数ctr。先通过最大似然求出alpha和beta,然后对于任意一个文章,我们通过其当前的click,view和算出来的alpha,beta,计算其后验概率的期望值,作为平滑后的ctr】
步骤如下:
a、首先我们假设每个文章的ctr符合一个beta分布,即ctr~B(alpha,beta).
即P(ctr | a ,b ) = beta(a,b) * ctr^(a-1) * (1-ctr) ^ (b - 1)
【这里相当于假设每个文章或者ad为一个硬币,每个硬币有着其固有的质量分配(非均匀硬币),我们有很多硬币,这些硬币为正的概率分布,整体符合一个beta分布】
b、对于我们观察到的展现点击行为,是以某ctr为参数的伯努利分布。(这里可以以一个ad为单位来观测[即我们假设某个文章,ad的点击概率是相对固定的],则view次展现得到click次点击的概率如下)
则其概率为P(click, view | ctr) = ctr^click * (1 - ctr) ^ (view - click)
c、我们用所有文章的view和click的数据,我们可以写出似然函数:
【包含theta】
Likelihood_Pi(click ,view | ctr)= p(click, view | theta) * p(ctr)
【将alpha,beta带入,对ctr进行积分消除ctr】
Likelihood_Pi(click ,view | a ,b ) = Integral_ctr { p( click, view | ctr) * p( ctr | a ,b ) } d_ctr
【整体的似然为其乘积】
Likelihood_ALL = Likelihood_P1 * Likelihood_P2 ...* Likelihood_Pn
d、对alpha(a),beta(b) 求偏导,然后通过固定点迭代法,我们可以求出近似的alpha,beta
对于n重伯努利实验,其计算后验的过程和抛硬币与Bayesian中所述一致。这里我们就不详细推导,直接使用其结论:
推导过后可以得出,Beta先验n重伯努利实验的后验概率也为Beta分布(根据Beta分布)
且:其后验概率为Beta(α+hits,β+misses)
而:Beta(a,b)的期望为 a / a + b
所以,对于观测view和click后,得到后验的ctr的期望为 (click + alpha) / (view + alpha + beta)
【这里也可以得出,所有文章的整体的ctr,接近于a/(a+b)】
PS:参数预估的过程可以参考贝叶斯网络的参数预估。
PSS:贝叶斯平滑,主要是以文章为单位观测,增加了单个文章多次展现呈多重伯努利分布的假设。这个假设完善了对展现过少的不是特别置信的ctr数据分布的覆盖。
2、先验值平滑
一般来说,可以根据广告,或者文章的类型(或者任何一个相对总体可以更精确的维度,比如广告主,定向人群类型,等等)来进行ctr统计,获得cate_click 和cate_view
直接使用ctr = (click + alpha* cate_click) / (view + alpha * cate_view )
alpha可以设置一个较小的值,当数据量少时,其ctr接近分类的ctr,有足够数据量后接近其真实反馈ctr。
【alpha从某种程度上说,表现了你对统计值的信心。alpha越小,越相信当前数据的ctr,alpha越大,越相信先验值的ctr。】
【从公式的形式来看,这种方式无非是省略了对beta分布的预估过程,使用相对更经验主义的值来平滑】
refer
这里有详细的公式推导过程
用概率链式法则,概率图模型化简。
https://www.cnblogs.com/coshaho/p/9658135.html
网友评论