由於原始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