威尔逊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+nz2p^+2nz2±1+nz2znp^(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≈σnp−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+nz21(p^+2nz2)±1+nz2znp^(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