人群排名的最佳匹配算法?

时间:2012-02-16 23:44:49

标签: algorithm sorting crowdsourcing

我想建立一个系统,人群可以从一组中找到最好的10个项目,这些项目可以从20到2000个不等(排名前10位并不重要)。对于进行实际排序的算法,有一个很好的stackoverflow帖子 How to rank a million images with a crowdsourced sort。我倾向于向用户询问两个项目之间最喜欢的用户,然后使用TrueSkill算法。

我的问题是我正在使用像TrueSkill这样的东西,决定向用户展示哪些项目对的最佳算法是什么?我将有限的机会向人们询问他们最喜欢哪些项目,因此重要的是所呈现的对将为系统提供识别前10名的最有价值的信息。再次,我最感兴趣的是找到前十名,更不用说其他项目如何在他们自己之间排名,甚至排名前十的人如何排在他们自己之间。

2 个答案:

答案 0 :(得分:1)

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

也许您可以充分修改它以满足您的需求。

答案 1 :(得分:1)

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

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