由于原始CTR计算方式只考虑了相对值,没有考虑绝对值。即,没有考虑曝光的数值大小,在曝光少的情况下,计算出的CTR其实不可靠,样本充足的情况下,才能反应真实情况
举例:
A:点击数 5 曝光数 10
B:点击数 50 曝光数 100
C:点击数 500 曝光数 1000
此三个广告的CTR 都是 0.5 ,但是按照实际表现,从置信的角度分析,应该是C > B > A,因为C的样本数更多,可信度更高。
为了衡量样本数对于 CTR 置信区间的影响,科学家们引入"威尔逊(Wilson)区间"的概念。公式如下
p:ctr
n:样本总数,即曝光数
z:正态分布里的参数
import numpy as np
def walson_ctr(num_click, num_pv, z=1.96):
p = num_click * 1.0 / num_pv
if p > 0.9:
return 0.0
n = num_pv
A = p + z**2 / (2*n)
B = np.sqrt(p * (1-p) / n + z**2 / (4*(n**2)))
C = z * B
D = 1 + z**2 / n
ctr = (A - C) / D
return ctr
结果:
walson_ctr(5,10):0.2365895936154873
walson_ctr(50,100):0.40382982859014716
walson_ctr(500,1000):0.4690690341793595