根据配对比较进行排名

4

假设我有一个非常长的图像列表,我想按人们认为它们的“好”程度对它们进行排名。

我不想让用户直接给图片评分(1-10等)并根据此排序,我想尝试一些新方法。

我想到的一个有趣的方法是:

  • 向用户展示两张随机图片,他们选择更好的那一张
  • 收集大量的“比较”
  • 使用所有的比较来确定排序

事实证明,这种方法经常被使用,例如(使用功能而不是图片),这似乎是Uservoice的Smartvote的工作方式。

我的问题是是否有一种良好的已知方法可以将这个长列表中的比较构建成所有图像的相对排名,但不需要研究论文中发现的复杂度。

我已经阅读了一堆讲座和研究论文,但我想知道是否有任何人推荐的示例代码?

2个回答

3
似乎你只需要获得某种数字排名系统,然后根据此进行排序。可以借用胜负比赛或国际象棋的算法,并将每个图像比较视为一场比赛。我找到了一些示例代码,用Java编写的算法如下Java。 你也可以借用这个库来编写Python python。如果搜索ELO,你会发现它在任何语言中都有版本。一旦获得数字图像排名,就可以按任何方式对它们进行排序。当然,还有其他排名算法可供参考,但当我谷歌搜索“国际象棋排名”时,这是我第一个看到的方法。

好的,我研究了一下ELO和其他一些排名方式,似乎主要的缺点是很多成对排名算法假设“每个人都与每个人比赛”,而在我的情况下这是不可行的。我认为在我宣布ELO成功之前,需要更多的比较。 - Pete Hamilton
1
ELO似乎不需要每个人都与每个人比赛,但每张图片的比较次数越多,他们的评分就越有意义。这并不意味着您需要n ^ 2个比较。即使每张图片只有二十次比较,也具有统计学意义,随着时间的推移,排名将变得越来越准确。 - NathanTempelman

1

对于每张图片,计算其参与决斗的次数并除以决斗总次数,得到该比例作为您的排名分数。

示例:

A B、A CA D、B C、B D

结果如下:

B: 67%,C、D: 50%,A: 33%

除非进行大量比较,否则将会有许多平局。


假设数据不一致且随机抽样良好,我能想到很多情况会出现问题,但这种方法可能是可行的。 - Slater Victoroff
是的,推荐使用随机化。 - user1196549
我已经用随机的“决斗”进行了测试,表面上看起来是一个相当直观的算法。这是一种已经确立的排名方法吗?@SlaterTyranus 你想到了哪些潜在的陷阱?阅读了许多复杂的解决方案后,肯定有一个原因,为什么这不是通常使用的方法。我想象中,在这里将平局视为失败的事实并不好。 - Pete Hamilton
@PeterHamilton 其中有很多,主要是围绕着每个比较都是相等的谬论。如果你想象一下大多数比较是各向异性的情况,就会发生冲突。话虽如此,通过大量试验和良好的随机化,它作为一个不错的近似值得到了表现。 - Slater Victoroff
这是一个好主意。然而,该算法的主要缺点是它没有考虑到两个竞争图像的相对排名。与排名最高的图像获胜被视为与排名最低的图像获胜相同。这种排名差异是有价值的数据,在这里被丢弃了。将其纳入考虑范围可能会在新图像的排名何时变得统计显著方面产生巨大差异。 - NathanTempelman
我发现在测试中,这经常出现问题(例如,给出了我不太预期的奇怪排名或排序),可能是由于你所概述的问题。感谢所有评论的人,但是到目前为止,ELO已被证明对我的目的更有效。 - Pete Hamilton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接