-
2021-05-23 18:08:02
https://www.deeplearn.me/2362.html
出,无论得分情况为
得分 = 赞成票 – 反对票
还是
得分 = 赞成票 / 全部票
都会出现错误的情况。 有一种计算得分的策略是,通过某事件发生的概率的最低置信区间来对项目进行排序。 所谓”置信区间”,就是说,以某个概率而言,p会落在的那个区间。比如,某个产品的好评率是80%,但是这个值不一定可信。根据统计学,我们只能说,有95%的把握可以断定,好评率在75%到85%之间,即置信区间是[75%, 85%]。 而“威尔逊区间”就是为了计算这个“置信区间”的。
更多相关内容 -
威尔逊置信区间算法
2020-03-23 17:26:52二项分布计算置信区间有多种计算公式,最常见的是“正太区间”(Normal approximation interval),但它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差。Wilson算法正是解决...此算法的基础是以用户对某种抉择的二项性为基础,每条可记录的数据都是“0-1”的独立事件,符合泊松分布,于是该类数据很容易归类于二项分布里。二项分布计算置信区间有多种计算公式,最常见的是“正太区间”(Normal approximation interval),但它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差。Wilson算法正是解决了小样本的准确性问题,Wilson算法的输入是置信度,输出是置信区间,如果要做数据排序对比,则可以选择置信区间的下限数据。
S为威尔逊置信区间算法公式,其中n为样本总数,u为正例数,v为反例数,z表示对应某个置信水平的统计量,一般情况下,在95%的置信水平下,z统计量的值为1.96。举个简单例子,给某个人投票,80票赞成,20票反对,则n为100,u为80,v为20。
正态分布的分位数表:
算法性质:
- 性质:得分S的范围是[0,1),效果:已经归一化,适合排序
- 性质:当正例数u为0时,p为0,得分S为0;效果:没有好评,分数最低;
- 性质:当负例数v为0时,p为1,退化为1/(1 + z^2 / n),得分S永远小于1;效果:分数具有永久可比性;
- 性质:当p不变时,n越大,分子减少速度小于分母减少速度,得分S越多,反之亦然;效果:好评率p相同,实例总数n越多,得分S越多;
- 性质:当n趋于无穷大时,退化为p,得分S由p决定;效果:当评论总数n越多时,好评率p带给得分S的提升越明显;
- 性质:当分位数z越大时,总数n越重要,好评率p越不重要,反之亦然;效果:z越大,评论总数n越重要,区分度低;z越小,好评率p越重要;
Python代码实现:
def wilson_score(pos, total, p_z=0.8): """ 威尔逊得分计算函数 :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
应用测试:
-
机器学习之数据处理威尔逊置信区间
2019-08-12 15:27:50一、正态分布 标准正态分布 标准正态分布就是均值为0,标准差为1的分布,如下图 一般正态分布 ...上图中的面积就是标准正态分布的概率,而置信区间就是变量的区间估计,例如图中的-1到1就是一个置信...一、正态分布
标准正态分布
标准正态分布就是均值为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/
https://blog.csdn.net/weixin_40901056/article/details/89531263
tips:对于5星评价问题,可以参考 http://www.evanmiller.org/ranking-items-with-star-ratings.html
-
正态分布 置信区间 威尔逊置信区间(Wilson score interval)
2019-04-26 09:27:55一、正态分布 标准正态分布 标准正态分布就是均值为0,标准差为1的分布,如下图 ...上图中的面积就是标准正态分布的概率,而置信区间就是变量的区间估计,例如图中的-1到1就是一个置信区间:...一、正态分布
- 标准正态分布
标准正态分布就是均值为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。
进而可以推导一般正态分布的置信区间:
-z<=X<=z
-z<=(N - μ)/ σ<=z
μ-zσ<=N<=μ+zσ
因此,一般正态分布n~N(μ,σ)的置信区间是 [μ-zσ, μ+zσ],其中z根据置信水平而定。置信水平与区间对应关系如下: - 性质分析
置信区间与置信水平、样本量等因素均有关系,其中样本量对置信区间的影响为:在置信水平固定的情况下,样本量越多,置信区间越窄。其次,在样本量相同的情况下,置信水平越高,置信区间越宽。
因此:如果样本多,就说明比较可信,不需要很大的修正,所以置信区间会比较窄,下限值会比较大;但是如果样本少,就说明不一定可信,必须进行较大的修正,置信区间会比较宽,下限值会比较小。
由此得出结论:上述正态区间只适用于样本较多的情况,对于小样本,它的准确性很差。
三、威尔逊区间(Wilson score 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)
因此上面的威尔逊区间公式可以写成:
就是对正态区间的均值和标准差进行了修正。
但是有个问题:这个修正公式是仅仅适用于伯努利分布(好差评),还是也适用于其他分布(如5星评价)?这个问题本人也没搞清,望高人指点。
计算程序如下:
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
tips:对于5星评价问题,可以参考 http://www.evanmiller.org/ranking-items-with-star-ratings.html
- 标准正态分布
-
Evvail | 威尔逊置信区间(Wilson confidence intervals )计算 | Omics - Hunter
2021-03-23 18:53:221927年,美国数学家 Edwin Bidwell Wilson提出了一个修正公式,被称为”威尔逊置信区间”,也称为“Plus Four Confidence Intervals”,假定用于估计的统计样本具有二项式分布:将实验重复固定次数;实验有两个可能... -
威尔逊置信区间
2021-03-23 18:54:04由于正态区间对于小样本并不可靠,因而,1927年,美国数学家 Edwin Bidwell Wilson提出了一个修正公式,被称为“威尔逊区间”,很好地解决了小样本的准确性问题。根据离散型随机变量的均值和方差定义:μ=E(X)=0*(1-... -
排序之威尔逊区间算法
2021-03-23 18:54:30威尔逊区间迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章但是,很多场合需要的是"所有时段"的排名,比如"最受用户好评的产品"。这时,时间因素就不需要考虑了。这个系列的... -
一种基于威尔逊区间的商品好评率排名算法
2017-11-16 11:27:01为了解决这个问题,文中通过引入威尔逊置信区间估计的概念, 提出了一种利用置信区间下限值来代替好评率 的改进算法。该算法综合考虑了商品好评率与评论数,能有效解决好评率排名存在的小样本准确性问题。通过真实... -
算法 – 威尔逊五星评级的置信区间
2021-03-23 18:53:39很容易想到以下“解决方法”,它将多级系统转换为二进制“upvote / downvote”式排名(然后可以使用Wilson得分置信区间的下限进行评分):假设您拥有受欢迎的5星评级系统.所以我们有多个投票,每个投票的值为:1,2,3,4或... -
威尔逊区间
2021-03-23 18:53:18威尔逊置信区间的均值为 它的下限值为 可以看到,当n的值足够大时,这个下限值会趋向。如果n非常小(投票人很少),这个下限值会大大小于。实际上,起到了降低"赞成票比例"的作用,使得该项目的得分变小、排名下降... -
应用:推荐系统-威尔逊区间法
2021-03-23 18:53:48我推荐一种之前在惠普做过一种排序方法:威尔逊区间法我们先做如下设定:(1)每个用户的打分都是独立事件。(2)用户只有两个选择,要么投喜欢'1',要么投不喜欢'0'。(3)如果总人数为n,其中喜欢的为k,那么喜欢的比例p... -
推荐算法中点击率CTR修正方法—威尔逊区间
2020-12-21 14:05:48最近学习了hive的udf,ctr修正案例,做个简单小总结: ... 由于原始CTR计算方式只考虑了相对值,没有考虑绝对值。...为了衡量样本数对于 CTR 置信区间的影响,科学家们引入"威尔逊(Wilson)区间"的概念。 -
基于用户投票的排名算法(五):威尔逊区间
2021-03-23 18:55:14威尔逊置信区间的均值为 它的下限值为 可以看到,当n的值足够大时,这个下限值会趋向 。如果n非常小(投票人很少),这个下限值会大大小于 。实际上,起到了降低"赞成票比例"的作用,使得该项目的得分变小、排名... -
[EXCEL] 4 Excel的统计方法-置信度(95.0%)的计算过程
2021-02-06 18:37:43二、定义:在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的... -
基于用户投票的排名算法:威尔逊区间
2016-04-30 22:35:32威尔逊置信区间的均值为 它的下限值为 可以看到,当n的值足够大时,这个下限值会趋向 。如果n非常小(投票人很少),这个下限值会大大小于 。实际上,起到了降低"赞成票比例"的作用,... -
【每周一篇】推荐算法之威尔逊区间法
2018-12-05 15:16:36刚才说满足二项分布,这里p可以看作"二项分布"中某个事件的发生概率,因此我们可以计算出p的置信区间。 所谓"置信区间",就是说,以某个概率而言,p会落在的那个区间。 置信区间展现的是这个参数的真实值有一定... -
威尔逊ctr
2021-03-13 09:33:57威尔逊ctr -
基于内容热度的推荐
2020-11-13 20:38:17威尔逊置信区间的均值为: 下限为: 可以看到:当 的值足够大时,这个下限值会趋向 。如果 非常小(投票人很少),这个下限值会大大小于 ,实际上,起到了降低”赞成票比例”的作用,使得该项目的得分变小、排名下降... -
Python实现置信区间(热门排序)
2020-03-23 16:39:46但回答B比回答A更可信 参考文献 基于用户投票的排名算法(五):威尔逊区间 【Python量化统计】——『置信区间』全角度解析(附源码) scipy.stats.binom_test Binomial test - Wikipedia Amazon.co.uk Best Sellers... -
【第1482期】基于用户投票的排名算法:威尔逊区间
2021-03-23 18:54:25原标题:【第1482期】基于用户投票的排名算法:威尔逊区间前言昨天坐公交的时候看到一个名词:威尔逊区间,本着好奇去了解一下。这篇应该跟前端关系不大,有兴趣可以了解一下。今日早读文章由@阮一峰分享。正文从这... -
常用的评论/帖子/文章排序算法五(威尔逊区间)
2020-12-23 22:09:13威尔逊置信区间的均值为 它的下限值为 可以看到,当n的值足够大时,这个下限值会趋向。如果n非常小(投票人很少),这个下限值会大大小于。实际上,起到了降低"赞成票比例"的作用,使得该项目的得分变小、排名下降... -
推荐系统 | 威尔逊区间法
2017-11-06 00:00:00我推荐一种之前在惠普做过一种排序方法:威尔逊区间法 我们先做如下设定: (1)每个用户的打分都是独立事件。 (2)用户只有两个选择,要么投喜欢'1',要么投不喜欢'0'。 (3)如果总人数为n... -
点击率CTR修正方法——威尔逊区间
2020-04-04 18:21:57由于原始CTR计算方式只考虑了相对值,没有考虑绝对值。即,没有考虑曝光的数值大小,在曝光少的情况下,计算出的CTR其实不可靠,样本...此三个广告的CTR 都是 0.5 ,但是按照实际表现,从置信的角度分析,应该是C...