给出两个变量确定最佳结果

时间:2014-07-18 15:27:56

标签: mysql sql statistics

我正在寻找一种方法来衡量我的结果,以获得“最佳”评分最高的结果。

我有一个包含评级(0-5),提及和名称的表格。

RATING   MENTIONS    NAME
2.5      15          Bob
4.4      14          Susan
1        60          John
5        2           Steve

提及和评级都很重要,因此仅按评级排序将无法获得所需的结果。

这个例子;虽然史蒂夫评分最高,但他很少提及,所以我不太自信他是“最好”评分最高的人。苏珊有几次提及和高评价所以她应该超越史蒂夫。约翰的评分非常低,但很多提及,如果他提到了大量的提及,他应该只会超过任何其他人。

理想的结果将类似于

RATING   MENTIONS    NAME
4.4      14          Susan
5        2           Steve
2.5      15          Bob
1        60          John

感谢帮助!

3 个答案:

答案 0 :(得分:2)

最简单的方法是

RATING * RATING * Mentions

这将提供以下内容:

RATING   MENTIONS    NAME      SCORE
2.5      15          Bob       93.75
4.4      14          Susan     271.04
1        60          John      60
5        2           Steve     50

这是一种非常简单的“权衡”评级值的方法。

显然你可以走得更复杂,但我认为上面的内容已经足够了,而且查询很简单,所以如果你喜欢这种方法,我会让你自己尝试解决这个问题!

显然你可以添加另一个RATING,如果你想要很高的评级或者将它乘以一个固定的数量 - 但是平方/ POWER是关键(你可以尝试RATING ^ 2.5)(^是POWER)

答案 1 :(得分:1)

当我遇到这个问题时,我经常采用将评级降低一个标准误的方法。标准错误的公式为:

standard deviation for the group / sqrt(group size)

如果您有每组的标准差,我会使用以下方式订购:

order by (case when mentions > 1 then stdev / sqrt(mentions) end)

这并不像埃文米勒的建议那样“惩罚”(Juergen指出)。这基本上使置信区间更像是60%而不是95%。不可否认,我的偏好有点经验(基于经验)。但是,多重比较存在问题,您无需估计确切的置信区间 - 您只需知道它们的相对顺序。

您可以使用函数stdev()计算标准偏差。

答案 2 :(得分:0)

嗯,我的统计数据并不是很好,但是根据你的预期结果,我相信你需要找到每个属性的重要性。哪一个比另一个更重要,我想你可以使用下面的等式:

values = weight * RATING + (1-weight) * MENTIONS

你可以玩重量值,直到你得到你想要的东西..对我来说0.8种有意义..

RATING   MENTIONS    NAME      SCORE
4.4      14          Susan     6.32
2.5      15          Bob       5
5        2           Steve     4.4
1        60          John      2