适合3分的评分算法

时间:2015-03-11 19:42:04

标签: php algorithm math bayesian scoring

我有几个对象,每个对象应按[q]质量,[v]值和[s]用户的适用性进行评级。

目前我正在通过Score = (q+v+s/3)检索每个对象的总平均值 - 这就是说我遇到了一个流行的问题,其中1等级10,10,10的对象被评为高于3等级的对象10,9,9 | 9,10,10 | 10,10,8 - 不好!

我想要总计为每个对象评分。是否有最适合的算法?最终结果将在PHP环境中。一个例子可能大致是Awwwards目前列出的每个网站的内容。

我环顾四周,可以看到similar requirements并建议使用贝叶斯方法,但我不确定这是如何符合我的要求的,因为需要了解最小的&# #39;

进一步挖掘,我发现了这个 - 应用于某些SQL会有用吗?有什么问题吗?

<?php

$avg_num_votes = 17; // Average number of reviews on all objects
$avg_rating = 4.5; // Average review for all objects
$this_num_votes = 17; // Number of reviews on this object
$this_rating = 4; // Review for this object

$bayesian_rating = (($avg_num_votes * $avg_rating) + ($this_num_votes * $this_rating)) / ($avg_num_votes + $this_num_votes);
echo $bayesian_rating;

//(FR) = ((av * ar) + (v × r)) / (av + v)
//(FR) = ((17 * 4.5) + (17 * 4)) / (17 + 17)
//(FR) = (76.5 + 68) / 34
//(FR) = 162.5 / 34
//(FR) = 4.25
?>

1 个答案:

答案 0 :(得分:0)

Laplace smoothing很容易实现,但您必须选择一个参数。这就是所谓的贝叶斯估计&#34;或者&#34;贝叶斯方法&#34;虽然这不是很正确,但还有许多其他技术可以更准确地为不同的先前分布选择实现贝叶斯更新。

选择M,称为&#34;最小数量&#34;一些评级。计算所有类别的平均评级A.除了用户之外,还为每个对象提供M个平均评分。收视率。如果更改M,则会更改您对小样本的信任程度。较大的M值对较少数量的评级给予的信用较少。

您不需要根据三个分数进行调整。将总和称为评级。

例如,假设平均等级为25,您选择M = 3,并且您将一个对象与1等级30比较为7等级为27的对象。首先,您计算平滑等级(30*1 + 25*3)/(1+3) = 26.25。第二个的平滑评级为(27*7+25*3)/(7+3) = 26.4。因此,第二个对象的平滑评级略高于第一个。