机器学习之数据处理威尔逊置信区间
一、正态分布标准正态分布标准正态分布就是均值为0,标准差为1的分布,如下图一般正态分布一般正态分布n,假设其均值是 μ,标准差为σ ,即服从 n~N(μ,σ)经过变换可以转换成标准正态分布:另X = (N - μ)/ σ,则X就是服从标准的正态分布了X~N(0,1)二、置信区间上图中的面积就是标准正态分布的概率,而置信区间就是变量的区间估计,例如图中的-1到1就是一个置信......
https://www.jianshu.com/p/e4bc17203f21https://www.jianshu.com/p/e4bc17203f21
一、正态分布
标准正态分布
标准正态分布就是均值为0,标准差为1的分布,如下图
一般正态分布
一般正态分布n,假设其均值是 μ,标准差为σ ,即服从 n~N(μ,σ)
经过变换可以转换成标准正态分布:另X = (N - μ)/ σ,则X就是服从标准的正态分布了X~N(0,1)
二、置信区间
上图中的面积就是标准正态分布的概率,而置信区间就是变量的区间估计,例如图中的-1到1就是一个置信区间:标准正态分布的变量X ,有68.27%的概率 X属于[-1,1]这个区间。
最常用的是95%的分布区间,就是[-1.96,1.96]这个区间。方便公式化,我们另区间为[-z,z],那么 -z<=X<=z。
进而可以推导一般正态分布的置信区间:
3 置信区间
用户投票问题
假设知乎里的两条回答,分别有3个赞成1个反对、30个赞成10个反对,两条回答的赞成率都是75%,哪个答案应该排在前面?
虽然赞成率都一样,但直觉告诉我们,30个赞的那条回答会更可信,毕竟样本更多会更有统计意义。
实际上这类小样本问题非常常见,例如电商搜索业务中,排名靠后的商品的点击率、转化率、作弊率等比率型指标,分子分母都很小时,得到的数据是不可信的。
以下中间章节需要一点统计学的知识,懒得看可直接跳到最后一节看结论。
置信区间
统计学中有个“置信区间”的概念,很多人对它有种似曾相识的感觉,但又说不上来它到底是个什么。首先它也是个随机变量,给定一组样本,它的置信区间是个固定值。设总体随机变量(区别于样本)的一个参数为Θ(例如均值、方差),我们根据给定样本估计出了一个参数Θ’,那么它的95%置信区间表示真实的Θ在这个区间的概率为95%。
The confidence level is the frequency (i.e., the proportion) of possible confidence intervals that contain the true value of their corresponding parameter.
——Wikipedia
直观来讲,同分布的两组样本,根据数量多的样本得到的95%置信区间要比样本数量小的窄一些。这表明样本越大,对于我们估计出来的参数值越自信。
定义:设 θ 是总体的一个未知参数,若存在随机区间[θ1,θ2],对于给定的0<α<1,若满足p{θ1≤θ≤θ2}=1−α,则称区间[θ1,θ2]是θ的置信水平(置信度)为1−α的置信区间。θ1和θ2分别称为置信下限和置信上限。其中1−α为置信度,α为显著水平。
中心极限定理告诉我们,当样本足够大时,任何分布都渐近于正态分布。因此我们一般都讲正态近似置信区间(Normal Approximation Interval)。其中的α意义如下图所示,是指标准正态分布密度曲线两侧阴影部分面积之和,置信度等于非阴影部分的面积。
然鹅,使用正态区间近似毕竟依赖于中心极限定理,只适用于样本较多的情况,对于小样本而言,它的误差比较大。
威尔逊置信区间
由于正态区间对于小样本并不可靠,因而,1927年,美国数学家 Edwin Bidwell Wilson提出了一个修正公式,被称为“威尔逊区间”,很好地解决了小样本的准确性问题。
在上面的公式中,^p表示样本的”赞成票比例”,n表示样本的大小,z表示对应某个置信水平的z统计量,这是一个常数,可以通过查前文表得到。一般情况下,在95%的置信水平下,z统计量的值为1.96。
威尔逊置信区间的均值为
下限为:
可以看到:当n的值足够大时,这个下限值会趋向^p。如果n非常小(投票人很少),这个下限值会大大小于p,实际上,起到了降低”赞成票比例”的作用,使得该项目的得分变小、排名下降。
根据离散型随机变量的均值和方差定义:
μ=E(X)=0*(1-p)+1*p=p
σ=D(X)=(0-E(X))2(1-p)+(1-E(X))2p=p2(1-p)+(1-p)2p=p2-p3+p3-2p2+p=p-p2=p(1-p)
因此上面的威尔逊区间公式可以写成:
就是对正态区间的均值和标准差进行了修正。
相关问题的思考:
1.这个修正公式是仅仅适用于伯努利分布(好差评),还是也适用于其他分布(如5星评价)?这个问题本人也没搞清,望高人指点。
2.商品点击率中,是否可以采用威尔逊进行修正?
其中p是伯努利实验的成功率,n是样本数量或实验次数,z就是“z分数”或“标准分数”,是和指定的置信度相关的一个常数。
置信度 | z分数 |
99% | 2.576 |
98% | 2.326 |
95% | 1.96 |
90% | 1.645 |
这里是指标准正态分布的满足置信度的区间端点值。
取置信度95%,对应的z为1.96。p值从0到1,n值从0到100。可见,当n较小时,会对最终的值做一个修正,在n较大时,函数值接近于p值。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
p=np.arange(0,1,0.01)
n=np.arange(1, 100, 1)
z=1.96
n,p=np.meshgrid(n,p)
y=(p+z**2/(2*n)-z*np.sqrt(p*(1-p)/n + z**2/(4*n**2)))/(1+z/n)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(n,p,y,cmap='rainbow')
plt.show()
def wilson_score(pos, total, p_z=2.):
"""
威尔逊得分计算函数
参考:https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval
:param pos: 正例数
:param total: 总数
:param p_z: 正太分布的分位数
:return: 威尔逊得分
"""
pos_rat = pos * 1. / total * 1. # 正例比率
score = (pos_rat + (np.square(p_z) / (2. * total))
- ((p_z / (2. * total)) * np.sqrt(4. * total * (1. - pos_rat) * pos_rat + np.square(p_z)))) / \
(1. + np.square(p_z) / total)
return score
相关参考:
http://typename.net/statistics/wilson-confidence-interval/
正态分布 置信区间 威尔逊置信区间(Wilson score interval)_我叫龙翔天翼的博客-CSDN博客_正态分布置信区间
tips:对于5星评价问题,可以参考 Ranking Items With Star Ratings: An Approximate Bayesian Approach – Evan Miller
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)