原文:http://blog.csdn.net/mytestmy/article/details/19088519
1)该博文是Yahoo专家所无私奉献的论文资料整理的。具体引用的资料请看参考文献。具体的版本声明也参考原文献
2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的利益,还望海涵,并联系老衲删除或修改,直到相关人士满意为止。
3)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。
4)阅读本文需要机器学习、统计学习理论等等基础(如果没有也没关系了,没有就看看,当做跟同学们吹牛的本钱)。
5)本人手上有word版的和pdf版的,有必要的话可以上传到csdn供各位下载
一.点击率的贝叶斯平滑
预估互联网广告的点击率一个重要的技术手段是logistic regression模型,这个模型非常依赖特征的设计。每个广告的反馈ctr作为特征能极大地提升预估的准确性,所以每个广告的反馈ctr非常重要。
目前用得比较多的获取反馈ctr的方式是直接计算每个广告的历史ctr,这样的问题就是当该广告投放量比较少的时候(如新广告),历史ctr与实际ctr相差很大。如一个广告投放了100次,有2次点击,那么ctr就是2%,但是当这个广告投放量到了1000次的时候,点击只有10次,点击率是1%,这里就相差了一倍了。产生这种问题的的原因是投放量太少,数据有偏,所以如果每个广告在开始投放前就有了默认的一个展示数和点击数,即分子分母都加上一个比较大的常数,这样计算起ctr来就不会有那么大的偏差。这种方法叫做ctr平滑,通用的方法是在展示数和点击上面各自加一个常数,缓解低投放量带来的不准确性,使其接近其实际的CTR。
1.1点击率的贝叶斯平滑技术
1.1.1理论基础
考虑到经验贝叶斯方法的层次性质,做了两个假设。
假设一,所有的广告有一个自身的ctr,这些ctr服从一个Beta分布。
假设二,对于某一广告,给定展示次数时和它自身的ctr,它的点击次数服从一个伯努利分布 Binomial(I, ctr)。
如果用r表示点击率,I表示展示,C表示点击。这两个假设可以用下面的数学表示。
假设有N个广告,这N个广告个似然函数可以写成下面的形式
由上面的式子可以得到对数似然函数的梯度
其中的是digamma函数,可以查表得到。
优化求解的迭代式如下
停机条件是达到1000次迭代或者α和β都小于1E-10。
当α和β的值都求出来以后(用alpha和beta表示),由ctr的先验分布,可以修正每个广告的ctr,也就是观测到的click/view,这个后验值可以用的公式r=(C + alpha) / (I + alpha + beta)计算。
1.1.2效果
当I较大时,观测到的ctr比较接近真实ctr,这时先验分布的修正对ctr值影响不大(I一般在几百万,alpha一般是几十,beta一般是几万);当I较小时,alpha和beta在式子中起的作用较大,对ctr有一个明显的修正。
经过贝叶斯平滑的反馈特征上线后,总体ctr有了很大的提升,提升幅度超过50%。
致谢
Yahoo的研究员。
参考文献
[1] Click-Through Rate Estimation for Rare Events in Online Advertising.Xuerui Wang, Wei Li, Ying Cui, Ruofei (Bruce) Zhang, Jianchang Mao Yahoo! Labs, Silicon Valley United States