推荐算法中点击率CTR修正方法—威尔逊区间

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

你可能感兴趣的:(推荐算法)