2012-02-16 102 views
5

我想设置一个人群来源从一组可以从20-2000项(排名amoung十大并不重要)改变最好10个项目的系统。在算法上有一个很好的stackoverflow帖子,用于做 How to rank a million images with a crowdsourced sort的实际排序。我倾向于向用户询问他们最喜欢的两项内容,然后使用TrueSkill算法。匹配排名的最佳匹配算法?

我的问题是给我使用类似trueskill评分系统,什么是决定哪些项目配对,以显示用户评价最好的算法?我将有数量有限的机会向人们询问他们最喜欢的物品,因此,重要的是,所呈现的对将为系统提供识别前10名时最有价值的信息。同样,我最感兴趣的是找到前十名,更不用说其余的项目如何排在他们自己之间,甚至是前十名之间的排名如何。

回答

1

这个问题是非常相似的举办淘汰赛比赛,其中的玩家技能不为人所熟知和玩家数量是非常高的(认为校企网球比赛)。由于循环赛(O(n^2)比赛)非常昂贵,但一个简单的淘汰赛太简单了,通常的选择是去k-elimination结构。基本上,每个玩家(在你的上下文中都是一个物品)在输掉k场比赛后被淘汰出局。看看双消除结构:http://en.wikipedia.org/wiki/Double-elimination_tournament

或许你可以充分地修改以满足您的需求。

1

另一个公知的算法为这个制作在Go或象棋比赛以计算排名。你可以看看MacMahon Algorithms,它们同时计算这样的配对和等级。应该可以截断这个算法,这样它只会产生一组10个最好的项目。

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