6

我想建立一个系统,从一组可以从 20 到 2000 件物品中挑选出最好的 10 件物品(前十名的排名并不重要)。在如何使用众包排序对一百万张图像进行排名时,有一篇关于进行实际排序的算法的优秀 stackoverflow 帖子 。我倾向于询问用户他们最喜欢两个项目之间的哪一个,然后使用TrueSkill算法。

我的问题是我正在使用 TrueSkill 之类的东西,决定向用户展示哪些项目对进行评分的最佳算法是什么?我将有有限的机会询问人们他们最喜欢哪些项目,因此重要的是,所提供的配对将为系统提供最有价值的信息来确定前 10 名。同样,我最感兴趣的是找到前 10 名,更不用说其余项目之间的排名,甚至前十名之间的排名。

4

2 回答 2

1

这个问题非常类似于组织一场淘汰赛,其中球员的技能并不为人所知,而且球员的数量非常多(想想学校级别的网球比赛)。由于循环赛( O(n^2) 比赛)非常昂贵,但简单的淘汰赛过于简单,通常的选择是采用 k-消除结构。从本质上讲,每个玩家(在您的上下文中是一个项目)在输掉 k 场比赛后都会被淘汰出局。看看双重淘汰结构:http ://en.wikipedia.org/wiki/Double-elimination_tournament 。

也许您可以对其进行充分修改以满足您的需求。

于 2012-02-17T00:03:48.810 回答
1

另一个众所周知的算法是用来计算围棋或国际象棋比赛中的排名。您可以查看同时计算此类配对和排名的MacMahon 算法。应该可以截断这个算法,这样它只会产生一组 10 个最好的项目。

您可以在Christian Gerlach 的论文中找到更多详细信息,他在其中描述了实际的优化算法(不幸的是,论文是德文的)。

于 2012-02-17T10:32:29.913 回答