其他分享
首页 > 其他分享> > 威尔逊ctr

威尔逊ctr

作者:互联网

在推荐系统中,ctr是一个重要评估指标,定义为:ctr = click / show,即点击/曝光,当曝光次数足够大时,根据大数定理,曝光样本的ctr能真实物品的真实ctr。然而,当曝光较少时,统计的ctr可能会出现较大的偏差。例如,推荐2次点击1次和推荐200次点击100次的ctr虽然一样,但后者的可信度要远远高于前者,这就是为什么一个电影刚出来时,其豆瓣评分可能比较高,随着评价人数越来越多,其得分最终会趋于稳定。因此,需要通过某种手段对统计的ctr进行修正,威尔逊ctr是较常用的一种方法。
p ^ + z 2 2 n 1 + z 2 n ± z 1 + z 2 n p ^ ( 1 − p ^ ) n + z 2 4 n 2 (1) \frac{ \hat{p}+ \frac{z^2}{2n}}{1+ \frac{z^2}{n}}\pm \frac{z}{1+ \frac{z^2}{n}} \sqrt{ \frac{\hat{p}(1-\hat{p})}{n} + \frac{z^2}{4n^2}} \tag{1} 1+nz2​p^​+2nz2​​±1+nz2​z​np^​(1−p^​)​+4n2z2​ ​(1)
上式是威尔逊区间,其中n为样本数,即曝光数,p为点击概率,即p = click / n,z是一个常数,可通过查表得到,表示对应某个置信水平的z统计量,z取不同值代表着真实ctr在威尔逊区间的置信度,例如,z = 1.96,p1 = 80/100 时,代表着真实ctr落在 [0.71117, 0.86663] 范围的置信度有95%;p2 = 8/10 时,代表着真实ctr落在 [0.49015, 0.94332] 范围的置信度有95%。在应用中,修正后的ctr取威尔逊区间的下界,即0.71和0.49.

Wilson ctr 的计算代码

def wilson_ctr(show, click, z = 1.96):
    n = show
    if n == 0 or click == 0:
        return 0
    ctr = float(click)/show
    norm = 1. + (z*z/n)
    val1 = ctr + z*z/(2*n)
    val2 = z * math.sqrt(ctr*(1-ctr)/n + z*z/(4*n*n))
    confident = [(val1 - val2) / norm, (val1 + val2) / norm]
    return confident[0]

下面试着简单理解下Wilson ctr的原理。
我们将用户行为视为独立事件,一个item被展示出去,只有被点击和不被点击两种行为,那么根据数据,我们可以统计出一个item的ctr = click/show,根据show的不同,该ctr的置信度不同。我们可以将用户行为看成伯努利实验,在一个伯努利实验中,通常假设事件符合正态分布,即事件A真实概率p的区间估计如下
p ^ ± z p ^ ( 1 − p ^ ) n (2) \hat{p} \pm z \sqrt{\frac{\hat{p} (1- \hat{p})}{n}}\tag{2} p^​±znp^​(1−p^​)​ ​(2)
其中,p^hat 代表样本估计值,根号项代表样本误差,即样本方差/根号n,z为统计量,其值对应着置信度,可以理解为多少标准差,比如常用的95%的置信水平,可以保证样本的均值会落在总体平均值2个标准差得范围内。
在这里插入图片描述

置信区间的作用是为了对观测值进行修正,以弥补样本量过小的影响,常用的建模方式是根据正态分布,然而正态分布适合样本量较大的情况,其对于小样本的估计误差较大,威尔逊区间是对正态分布的改进,其置信区间是非对称的,更适用于小样本采样统计。
威尔逊区间算法中,首先对二项分布做了近似:
z ≈ p − p ^ σ n (3) z \approx \frac{p -\hat{p}}{\sigma_n} \tag{3} z≈σn​p−p^​​(3)
其中,标准差为:
σ n = p ( 1 − p ) n (4) \sigma_n =\sqrt{\frac{p (1-p)}{n}} \tag{4} σn​=np(1−p)​ ​(4)
联合起来解方程可得到:
( p ^ − p ) 2 = z 2 ⋅ p ( 1 − p ) n (\hat{p} - p)^2 =z^2 \cdot \frac{p (1-p)}{n} (p^​−p)2=z2⋅np(1−p)​
( 1 + z 2 n ) p 2 + ( − 2 p ^ − z 2 n ) p + ( p ^ 2 ) = 0 \left( 1+ \frac{z^2}{n} \right)p^2+\left( -2\hat{p}- \frac{z^2}{n} \right)p+\left( \hat{p}^2 \right)=0 (1+nz2​)p2+(−2p^​−nz2​)p+(p^​2)=0
p ≈ ( w − , w + ) = 1 1 + z 2 n ( p ^ + z 2 2 n ) ± z 1 + z 2 n p ^ ( 1 − p ^ ) n + z 2 4 n 2 p \approx \left(w^-,w^+\right)= \frac{1}{1+ \frac{z^2}{n}} \left(\hat{p}+ \frac{z^2}{2n}\right) \pm \frac{z}{1+ \frac{z^2}{n}} \sqrt{ \frac{\hat{p}(1-\hat{p})}{n} + \frac{z^2}{4n^2}} p≈(w−,w+)=1+nz2​1​(p^​+2nz2​)±1+nz2​z​np^​(1−p^​)​+4n2z2​

可以看出,当n比较大时,威尔逊区间的下限值会接近观测值,当n较小时,会远小于观测值,以其对观测值进行修正,起到“减小偶然因素”的作用。

参考:
https://www.ruanyifeng.com/blog/2012/03/ranking_algorithm_wilson_score_interval.html
https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval

标签:frac,ctr,show,威尔逊,hat,click
来源: https://blog.csdn.net/m0_45204495/article/details/114729636