我正在为我的应用程序中的位置编写评级算法。该算法执行以下操作:
takes the average rating of a club and mulitplies by a club multiplier
a club multiplier is a decimal mulitplied against the average rating to account for a clubs impression against the total
目前我的算法如下:
CLUB RATING = SUM(RATINGS FOR CLUB) / COUNT(RATINGS FOR CLUB)
CLUB MULTIPLIER = CLUB TOTAL NUMBER OF RATINGS / TOTAL NUMBER OF RATINGS FOR ALL CLUBS
WEIGHTED VALUE = CLUB RATING * CLUB MULTIPLIER
我自己想出了这个算法。
我想象通过对所有俱乐部评分数量的评分数来计算俱乐部的影响力是乘数,我们将其乘以标准平均值来确定该俱乐部对所有俱乐部的加权平均值。
这是我的结果数据集:
Array
(
[0] => Array
(
[locid] => 332
[totalclubsnumratings] => 12321
[clubaveragerating] => 4.4
[clubnumratings] => 1121
[clubmultiplier] => 9.0982874766659
[weightedvalue] => 40.00
)
[1] => Array
(
[locid] => 329
[totalclubsnumratings] => 12321
[clubaveragerating] => 3.1
[clubnumratings] => 909
[clubmultiplier] => 7.3776479181885
[weightedvalue] => 23.00
)
[2] => Array
(
[locid] => 1681
[totalclubsnumratings] => 12321
[clubaveragerating] => 4.7
[clubnumratings] => 517
[clubmultiplier] => 4.1960879798718
[weightedvalue] => 20.00
)
[3] => Array
(
[locid] => 1710
[totalclubsnumratings] => 12321
[clubaveragerating] => 4.1
[clubnumratings] => 505
[clubmultiplier] => 4.0986932878825
[weightedvalue] => 17.00
)
[4] => Array
(
[locid] => 3312
[totalclubsnumratings] => 12321
[clubaveragerating] => 4.2
[clubnumratings] => 398
[clubmultiplier] => 3.2302572843113
[weightedvalue] => 14.00
)
)
问题是我无法判断它的计算是否正确。俱乐部locid 329
(第二俱乐部)的评分较高,但其平均评分远低于第三俱乐部,locid 1681
评分较少但俱乐部评分平均值较高。
我是否应该预期这些俱乐部会有一些加权值较高但俱乐部平均评分较低的俱乐部,或者我错过了重新确定俱乐部评级的第二种算法?
我希望有人看一下这个并告诉我这个算法做错了什么。
答案 0 :(得分:2)
如果你想要一个黑客提出合理的不确定性,首先计算所有俱乐部所有选票的平均投票差异。
然后对于每个俱乐部,将其评级的标准差称为sqrt(variance * votes)
。 (这实际上是错误的。但是效果会很好。)并且你有一个中位数和95%置信区间,每侧有2个标准偏差。
现在你可以选择对俱乐部持悲观态度,并给每个俱乐部一个评级,比如比他们的中位数低1个标准差。如果你这样做,那么一个拥有2个5.0评分的俱乐部可能比一个拥有4.5评级的俱乐部的票数差得多。要获得真正的顶级排名,你必须做得很好,并且有很多选票。