CTR(Click-Through-Rate)即点击通过率,指网络广告的点击到达率。CTR是广告推荐系统中,一项重要的衡量算法好坏的指标。
计算公式: 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 —— 在正态分布里,均值 + z * 标准差会有一定的置信度。例如 z 取 1.96,就有 95% 的置信度。
Wilson区间的含义就是,就是指在一定置信度下,真实的 CTR 范围是多少。
Wilson CTR修正的源码如下:
double walson_ctr(int num_pv, int num_click)
{
if (num_pv * num_click == 0 || num_pv < num_click) {
return 0.f;
}
double score = 0.f;
double z = 1.96f;
int n = num_pv;
double p = 1.0f * num_click / num_pv;
score = (p + z*z/(2.f*n) - z*sqrt((p*(1.0f - p) + z*z /(4.f*n))/n)) / (1.f + z*z/n);
return score;
}
利用Wilson CTR修正公式计算出的score分数越高,表明广告的表现越好。