CTR问题的贝叶斯平滑转化率

    xiaoxiao2022-06-26  204

    一.  转化率:

    推荐领域常见的转化率:ctr(click-through Rate),往往是推荐问题的重要特征之一。ctr的数值等于 点击量 除以 曝光量;

    以r表示转化率:

                                                                      

    但是在实际过程中往往会碰到两个问题:

    1. 新商品的转化率计算:

    新出现的商品,曝光量为0 点击量为0 ,这个时候的ctr怎么算?

    2. 不同商品转化率的比较:

    不同的商品A B, 他们的转化率 Ra = 5/10 , Rb = 50/100, Ra = Rb,但是商品A和B 的曝光量存在数量级上差异,这样做是否合理呢?

    第一个问题中,初值可以设置为0, 但是不太合理,ctr作为一个强特,表示这个商品完全没有点击率这是极不合理的;所以赋值通常是一个大于0的数值; 第二个问题中,这样的比较是不合理的。

    解决上述问题,一般采用贝叶斯平滑的方法。最简单的方法就是:在分子与分母上加上一个常数,加上只有就避免了这个问题:

                                                                         

    但是 ab的值该如何确定呢? --  通过贝叶斯平滑来确定 ab

    二. 贝叶斯平滑

    贝叶斯平滑的思想是给ctr预设一个经验初始值, 再通过当前的点击量和曝光量来修正这个初始值,如果某个商品的点击量和曝光量都是0,那么该商品的ctr就是这个经验初始值; 如果AB商品的曝光量差距很大,那么可以用这个经验初始值来修正,使得曝光量大的商品的权重增大。

    贝叶斯平滑就是确定这个经验值的过程,贝叶斯平滑是基于贝叶斯统计推断的,因此经验值的计算过程依赖于数据的分布情况。

    贝叶斯平滑的推导设计贝叶斯参数估计,如果对贝叶斯参数估计不熟悉,可以参考:http://blog.csdn.net/jinping_shi/article/details/53444100。

    三. 点击率贝叶斯平滑的假设

    对于商品或光改之类的,用户要么点击要么不点击,那么就符合二项分布。因此我们对点击的贝叶斯假设都是基于以下的假设:

    对于某个商品或者广告X,其是否被点击是一个伯努利分布(Bernoulli)。

                                                                        

    X表示的是是否被点击,点击取1,不点取0。r是X被点击的概率,对于不符合二项分布的比值类数据,在后文有说明。

    四. 点击率的极大似然估计

    在 三 的假设下,可以使用贝叶斯估计计算出点击率的估计值,从用户的日志中随机抽出n条记录,对任一条记录都有:

                                                                         

    那么所有记录的联合概率密度就是上式的连乘。然后将连乘后的式子对r求导,并令其等于0。可以得到估计值r。r就是点击率的极大似然估计。当X的点击次数或则曝光次数为0时,可以用r代替作为他的初始值。它解决了第一个问题,但是没有解决第二个问题。

    上述的估计r没有历史的信息,所谓历史的信息是:我们虽然不知道r的具体取值,但是可以知道r的范围,更精确地,我们可以假设r服从某个分布。要将这些信息融入到r的估计中,需要用到贝叶斯参数估计。

    五. 点击率的贝叶斯估计

    在贝叶斯的框架下,我们假设点击率服从某个分布:

                                                                      

    这是基于经验做的,这个分布称为先验分布。贝叶斯参数估计可以直接解决前面两个问题。其过程是基于经验或则历史数据给出一个r的估计值,然后基于现有的数据在这个估计值上修正,得到的最终的点击率。此时的估计值是已经修正过的了。更美好的是我们可以得到修正参数a和b。

    既然有先验分布,那么就有后验分布。r的后验分布记做π(r|x)。x是输入的数据(特征),对于点击率预测,x就是点击次数和曝光量。因为已经知道了数据,才确定r的分布,因此叫做后验分布。贝叶斯估计的实质就是在求后验分布。即基于当前点击次数和曝光量,求点击率的分布;而未看到数据之前点击率的分布是π(r)。

    如何计算后验分布π(r|x)?

    贝叶斯估计的过程可以简单的看成:

    用历史数据根据 π(r) 估计 r ,记作r^history;用当前数据根据π(r|x) 估计 r ,记作r^currentr,然后用r^history修正r^currentr。  

    六. 损失函数

    r 的后验分布 π(r|x) 是个概率密度函数,无法知道r确切的值。需要求出最接近真实情况的 r , 需要损失函数来约束。

    贝叶斯参数估计的过程可以简单描述为:

    求r^,使得损失函数在 r 的后验分布上的期望最小。

    这句话的数学公式是:

                                                

    因此需要知道 π(r|x) 的形式,然而 π(r|x) 的形式一般不知道的,但是可以知道 π(r) 的形式(经验值嘛,我们指定的)。此外,数据的分布我们也是知道的,其概率密度函数(pdf)记为f(x|r)f(x|r),表示数据的分布跟参数rr有关,rr是要求解的参数,在这里就是点击率。

    这时可以根据贝叶斯公式计算出 π(r|x) : 

                                                  

    上式好复杂,但其实一些常见的分布都可以求出上式积分的具体形式。但通常不用实际去积分,因为满足一定条件,π(r) 跟π(r|x) 有一样的形式。π(r)是已知的,如果形式一样,π(r|x)也就容易求得了。下面介绍共轭先验的概念。

    共轭先验: 如果找到一个π(r),它是f(x|r)的共轭先验,那么rr的后验分布π(r|x)和先验分布π(r)会有一样的形式。

    之前假设广告是否点击服从伯努利分布,参数为r;对于点击次数,服从的是二项分布,即f(C,I|r)∼Bin(r)。

    二项分布的共轭先验是Beta分布,Beta分布的参数是α和β,即π(r)=Beta(α,β)。根据共轭先验的定义,r的后验分布π(r|x)的形式跟其先验分布π(r)一样,即π(r|x)=Beta(α′,β′)。 对于点击率预测,求出π(r|x),带入公式。当L(r^,r)=(r^−r)^2时,

                                                          

    就是点击率估计(平滑)的最终形式。其中 C 和 I 就是点击次数和曝光量,α即为公式(2)中的a,α+β是公式(2)中的bb。α和β是从历史数据中得到的。

    上面的内容给出了为什么很多文章会假设点击率服从Beta分布的理由,因为最终的平滑的因子是Beta分布(先验分布)中的两个参数。那么如何计算(估计)这两个参数?

     

    七. 贝叶斯平滑因子计算

    综上,贝叶斯平滑的最终落脚点是要估计Beta分布(点击率rr服从的分布)中的参数αα和ββ。下面给出比较直观的矩估计的方法。

    矩估计

    我们可以用样本的均值代替期望,样本的方差代替总体的方差。 就此可以解出α 和 β 的值。

     

    八. 工程实践

    实际操作时可以连续取一段时间的数据,比如一周,然后在每天的数据中计算每件商品或广告的点击率,之后求出这些点击率的均值和方差,带入公式(9)和公式(10),可以得到每天的 α 和 β . 最后求这段时间 α 和 β 的均值作为最终的平滑参数。

    实际应用时根据历史数据得到的 α 和 β 可以帮助确定平滑参数的大致范围,防止设置参数时偏离过大。通常可以调整 α 和 β 的范围达到预期的效果。

    举例说明:

    下图是某件商品在两周时间内的点击率。黄色线是每天根据点击次数 C 和曝光量 I 计算得到的真实点击率;

    蓝色线是根据一周的历史数据计算得到的 α 和 β 带入公式(8)得到的平滑后的点击率;

    绿色线是自定义平滑参数的点击率,a=50,b=200,设置得比较夸张。可以看到如果平滑参数设置的不合理,会放大数据的表现,有时候甚至会扭曲数据的走势,数据预处理时需要考虑这样的情况。

     

    九. 非二项分布的贝叶斯平滑

    公式(8)的结论适用于数据是二项分布的情况,如点击率。对于不是二项分布的数据公式(8)不适用。如果数据不是二项分布,那么其先验概率就不是Beta分布了。比如某件商品一天的点击量与一周的点击量的比值,这个数据不符合二项分布,因此不适用公式(8)。但这个数据有可能是高斯分布。如果数据是高斯分布,那么其先验概率π(r)是逆Gamma分布(invers Gamma)分布,进而其后验概率π(r|x)也是逆Gamma分布,此时公式(8)会有不一样的形式。  

     


    最新回复(0)