Wilson算法

前言

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

置信度及置信区间

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

Wilson算法_第1张图片
image.png

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

Wilson算法

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

Wilson算法_第2张图片
image.png

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

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

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

你可能感兴趣的:(Wilson算法)