java实现威尔逊置信区间(Wilson score interval)推荐算法

作者: ʘᴗʘ发布时间:2021-12-08 20:08 浏览量:381 点赞:282 售价:0

前言

最近coderbbb升级文章的排序、推荐算法,有一个排序规则是基于有效阅读和总阅读的比值排序的。类似这样的排序需求很常见,通常都有一个绕不开的问题:当数据量比较小的时候,这个比值的可信度很低。基于此,我们需要使用威尔逊置信区间(Wilson score interval)来解决该问题。

关于威尔逊置信区间(Wilson score interval)的原理介绍,可以参考:威尔逊置信区间(Wilson score interval)

Java实现威尔逊置信区间(Wilson score interval)算法

强烈建议引用成熟库,自己实现算法是一个体力活。这里推荐Apache的commons-math3库对该算法的实现。

引入apache commons math3库

maven pom.xml文件中,添加apache commons math3的依赖,代码如下:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.6.1</version>
</dependency>

计算威尔逊置信区间

直接使用apache commons math3的WilsonScoreInterval类中的createInterval方法计算威尔逊置信区间。代码如下:

public static void main(String[] args) throws Exception {

   /**
    * 10个阅读,3个点赞
    */
   ConfidenceInterval interval = new WilsonScoreInterval().createInterval(10, 3, 0.95);
   System.out.println(interval.getLowerBound() + "-" +interval.getUpperBound());

}

createInterval (int numberOfTrials, int numberOfSuccesses, double confidenceLevel)参数解释:

  • numberOfTrials 必须大于0,代表总阅读量。(实验次数)
  • numberOfSuccesses 点赞数,不能大于第一个参数。(成功次数)
  • confidenceLevel 必须介于 0 和 1 之间(不包括),成功的真实概率落在返回区间内的期望概率。

返回值:返回一个ConfidenceInterval对象,该对象包含置信区间的上限、下限等数据。我们一般排序是用置信区间的下限排序,该值越高,代表文章的质量越好。

版权声明:《java实现威尔逊置信区间(Wilson score interval)推荐算法》为CoderBBB作者「ʘᴗʘ」的原创文章,转载请附上原文出处链接及本声明。

原文链接:https://www.coderbbb.com/articles/51

其它推荐:

user

ʘᴗʘ

77
文章数
67030
浏览量
53250
获赞数
67.80
总收入