要制作网站,龙岩做网站怎么做,wordpress搬入域名,Wordpress评论emoji1、威尔逊平滑引入的动机
在曝光很少的情况下#xff0c;计算出的CTR并不真实可靠#xff0c;而样本数越大#xff0c;CTR的比例才越准确#xff0c;更能反应真实情况。
为了衡量样本数对于CTR信区间的影响#xff0c;我们引入威尔逊#xff08;Wilson#xff0…1、威尔逊平滑引入的动机
在曝光很少的情况下计算出的CTR并不真实可靠而样本数越大CTR的比例才越准确更能反应真实情况。
为了衡量样本数对于CTR信区间的影响我们引入威尔逊Wilson区间的概念。Wilson区间的含义就是就是指在一定置信度下真实的CTR范围是多少。
2、威尔逊平滑公式 p —— 概率即点击的概率也就是 CTR
n —— 样本总数即曝光数
z —— 在正态分布里均值 z * 标准差会有一定的置信度。例如 z 取 1.96就有 95% 的置信度。
Wilson区间的含义就是就是指在一定置信度下真实的 CTR 范围是多少。
3、置信度区间z参数设置
置信度水平与区间的关系如下 4、威尔逊几种实现代码
设置n小于多少时认定为小样本下面默认曝光次数小于10000时为小样本。
class WilsonCorrect(object):def evaluate(self, p, n, z1.96, threshold10000):score pp min(p, 1)if 0 n threshold:try:score (p z * z / (2 * n) - z / (2 * n) * math.sqrt(4 * n * (1 - p) * p z * z)) / (1 z * z / n)except:passreturn score
当ctr大于某一阈值时直接归0
import numpy as npdef walson_ctr(num_click, num_pv, z1.96):p num_click * 1.0 / num_pvif p 0.9:return 0.0n num_pvA p z**2 / (2*n)B np.sqrt(p * (1-p) / n z**2 / (4*(n**2)))C z * BD 1 z**2 / nctr (A - C) / Dreturn ctr
全走wilson平滑
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;
}
5、威尔逊实例
举个例子有三个广告 A点击数 5 曝光数 10 B点击数 50 曝光数 100 C点击数 500 曝光数 1000 这三个广告的CTR 都是0.5 但是按照实际表现从置信的角度分析应该是CBA因为C的样本数更多可信度更高。
利用威尔逊平滑后的ctr预估值如下
walson_ctr(5,10)0.2365895936154873 walson_ctr(50,100)0.40382982859014716 walson_ctr(500,1000)0.4690690341793595 6、参考文献
机器学习之数据处理威尔逊置信区间-CSDN博客
【推荐系统】推荐系统中一些常用的技术方法_威尔逊区间平滑-CSDN博客