按平均票数/评分排序

数据挖掘 Python 数据清理 加权数据 数据争吵
2022-02-23 09:18:53

我有一个数据集,它是一个元组字典。每个键代表一个 ID 号,每个元组是 (yesvotes, totalvotes)。例子:

{17: (6, 10), 18: (1, 1), 21: (0, 2), 26: (1, 1), 27: (3, 4), 13: (2, 2)}

我需要找到集合的最大键。我想分配权重,例如,键 17 的排名会高于键 18,因为即使比例小得多,它的总票数也是十倍。

有没有最佳的方法来做到这一点?我最好的猜测是简单地计算新的比率,(yesvotes/totalvotes)*(totalvotes+1)但这似乎不正确......是否有某种关于公平投票的标准化研究领域?

2个回答

是的,这是一个经过充分研究的问题:排名聚合。是一个带有代码的解决方案。

问题是您试图估计的数量,即项目的“分数”,会受到噪音的影响。您拥有的选票越少,噪音就越大。因此,在对它们进行排名时,您需要考虑估计的方差。

查看“如何订购 Reddit 评论”的示例,使用他们在 Cam Davidson Pilon 的书中的赞成票和反对票。

aa+b1.65ab(a+b)2(a+b+1)
其中
a=1+u
b=1+d

u是赞成票数,是反对票数。d

使用从该公式获得的分数对数据进行排序,结果如下表(最高分在前):

id  total  yes  no     score
13      2    2   0  0.430479
27      4    3   1  0.372679
17     10    6   4  0.357720
18      1    1   0  0.277758
26      1    1   0  0.277758
21      2    0   2 -0.069521