Wilson算法

前言

在最近的一个关于排序的项目中,接触到一种用来的优化排名的算法--Wilson算法,做了下了解,把自己的一些理解整理如下,如有错误,欢迎指正。

置信度及置信区间

如果想要理解Wilson算法,置信度和置信区间是两个必须要理解的名词。
置信度的百度百科解释
看过上面的百度百科的解释,我现在讲一下我自己的理解:

image.png

在样本数目不变的情况下,做一百次实验,有95个置信区间包含了总体真值,则置信度为95%。如上图,其中的大虚线表示总体参数真值,是我们所不知道的想要估计的值。正因为在100个置信区间里有95个置信区间包括了真实值,所以当我们只做了一次置信区间时,我们也认为个区间时可信的,是包括了总体参数真实值的。

Wilson算法

此算法的基础是以用户对某种抉择的二项性为基础,每条可记录的数据都是“0-1”的独立事件,符合泊松分布,于是该类数据很容易归类于二项分布里。二项分布计算置信区间有多种计算公式,最常见的是“正太区间”(Normal approximation interval),但它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差。Wilson算法正是解决了小样本的准确性问题,Wilson算法的输入是置信度,输出是置信区间,如果要做数据排序对比,则可以选择置信区间的下限数据。
Wilson算法

image.png

其中u相当于赞成票(可理解成0-1事件中取值为1的情况),v是反对票(取值为0的情况),
Z\alpha
为参数,在取95%的置信度的情况下,
Z\alpha
的取值为1.96。
可以看到当n足够大的时候,Score会无线趋近于p也就是赞成票的得票率,当n较小的时候,Score会大大小于p,起到了稀释得票率的作用。
可以看出,Wilson算法实际上解决了大样本低正确率和小样本高正确率之间如何排序的问题。当然,Wilson得分置信区间不仅仅用于排序, 每当您想要确切的知道有多少人用户会作出某种选择时,它就很有用,比如说以下的这些场合:

  • 检测垃圾邮件:判断有多少人会将此封邮件标记为垃圾邮件
  • 创建最佳列表:判断有多少人会把该回答设置为最佳答案
  • 发现传播最广列表:判断有多少人会转发该项目

参考文献
how-not-to-sort-by-average-rating

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,080评论 2 89
  • 十一、估计 原文:Estimation 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在前...
    布客飞龙阅读 1,039评论 0 2
  • 《春雨》 (李泉清) 清晨四点多,窸窸窣窣的雨声把我从睡梦中唤醒。 前天天气预报就报着今天有雨,如今的天气预报真准...
    李泉清阅读 400评论 0 0
  • FLOAT:float:left;左浮动float:right;右浮动浮动产生的问题:添加浮动会出现父div只能显...
    小小鸟想飞_123阅读 298评论 0 0
  • 小的时候妈妈经常值夜班,老爸最擅长的菜式也是最常做的就是酱油面,一把挂面煮好倒点酱油加点麻油,时间够的时候打个鸡蛋...
    汽球阅读 341评论 0 0