威尔逊得分(Wilson Score)排序算法:是对质量进行排序,评论中含有好评还有差评,综合考虑评论数与好评率,得分越高,质量越高。
威尔逊算法.png

u表示正例数(好评),v表示负例数(差评),n表示实例总数(评论总数),p表示好评率,z是正态分布的分位数(参数),S表示最终的威尔逊得分。z一般取值2即可,即95%的置信度。

正太分布的分位数表:
威尔逊算法-分位数表.png

算法性质:

  1. 性质:得分S的范围是[0,1),效果:已经归一化,适合排序
  2. 性质:当正例数u为0时,p为0,得分S为0;效果:没有好评,分数最低;
  3. 性质:当负例数v为0时,p为1,退化为1/(1 + z^2 / n),得分S永远小于1;效果:分数具有永久可比性;
  4. 性质:当p不变时,n越大,分子减少速度小于分母减少速度,得分S越多,反之亦然;效果:好评率p相同,实例总数n越多,得分S越多;
  5. 性质:当n趋于无穷大时,退化为p,得分S由p决定;效果:当评论总数n越多时,好评率p带给得分S的提升越明显;
  6. 性质:当分位数z越大时,总数n越重要,好评率p越不重要,反之亦然;效果:z越大,评论总数n越重要,区分度低;z越小,好评率p越重要;

PHP实现:

<?php
echo  wilsonScore_2(300, 13/300, 2);
function  wilsonScore_2($n, $p, $z){
    $a_1 = ((1 / (2 * $n)) * ( pow($z,2)));
    $b_1 =  $z * sqrt(($p * (1 - $p) / $n) + ( pow($z,2) / (4 * (pow($n,2)))));
    $c_1 = 1 + ((1 / $n) * ( pow($z,2)));
    $numerator = $p + $a_1 - $b_1;
    $res = $numerator/$c_1;
    return $res;
}
参考引用:https://www.fujieace.com/php/algorithm/score.html
最后修改:2021 年 07 月 07 日 10 : 43 PM
对您有帮助的话,请赏包辣条吧 ^~^