当前位置:  开发笔记 > 编程语言 > 正文

如何使用众包排序对一百万个图像进行排名

如何解决《如何使用众包排序对一百万个图像进行排名》经验,为你挑选了5个好方法。

我想通过制作一个游戏来对一组风景图像进行排名,网站访问者可以对它们进行评分,以便找出人们认为最吸引人的图像.

这样做的好方法是什么?

热门风格?即显示单个图像,要求用户从1-10排名.在我看来,这可以让我平均得分,我只需要确保我在所有图像中均匀分配投票.实施起来相当简单.

选择A或B?即展示两个图像,要求用户选择更好的图像.这很有吸引力,因为没有数字排名,这只是一个比较.但是我该如何实现呢?我的第一个想法是将其作为一个快速排序,比较操作由人类提供,一旦完成,只需重复排序ad-infinitum.

你会怎么做?

如果您需要数字,我在一个每天访问20,000次的网站上谈论一百万张图片.我想可能会有一小部分玩这个游戏,为了争论,让我说我每天可以产生2000次人类排序操作!这是一个非盈利的网站,最终好奇的将通过我的个人资料:)



1> Laplie Ander..:

正如其他人所说,排名1-10不能很好地运作,因为人们有不同的水平.

与该问题拾取A-或-B方法是,其不保证该系统能传递(A可以打败B,但乙节拍C,和C节拍A). 使用非传递性比较运算符会破坏排序算法.对于快速排序,对于此示例,未选择作为枢轴的字母将彼此错误地排名.

在任何给定的时间,你想要所有图片的绝对排名(即使它们中的一些/全部被绑定).你也希望你的排名不会改变,除非有人投票.

我会使用Pick A-or-B(或tie)方法,但确定类似于Elo评级系统的排名,该系统用于2个玩家游戏(原本国际象棋)中的排名:

Elo球员评分系统将球员的比赛记录与对手的比赛记录进行比较,并确定球员赢得比赛的概率.该概率因子根据每场比赛的结果确定球员评分上升或下降的点数.当玩家击败具有更高等级的对手时,玩家的等级上升比他或她击败具有较低等级的玩家更高(因为玩家应该击败具有较低等级的对手).

Elo系统:

    所有新玩家的基本评分都是1600

    WinProbability = 1 /(10 ^((对手的当前评级 - 玩家的当前评级)/ 400)+ 1)

    ScoringPt = 1分如果他们赢了比赛,0如果他们输了,0.5是平局.

    玩家的新评级=玩家的旧评级+(K值*(ScoringPt-Player's Win Probability))

用图片替换"玩家",您可以根据公式调整两张图片的评级.然后,您可以使用这些数字分数执行排名.(K值这里是锦标赛的"等级".小型本地锦标赛为8-16,大型邀请赛/区域赛为24-32.你可以使用像20这样的常数.)

使用这种方法,您只需要为每张图片保留一个数字,这比使每张图片的各个等级保持为彼此图片要少得多.

编辑:根据评论添加一点肉.


elo系统绝对是对A/B方法进行排名的方法.但是,您也可以使用比上面的增量方法更好的方法.看看Bayeselo:http://remi.coulom.free.fr/Bayesian-Elo/
传递性根本不重要.你只想汇总人们的意见,你会期望他们在排名方面存在分歧.人是嘈杂的数据来源而且不一致.
我的观点是,如果你有A> B> C> A,那么简单地使用">"作为比较是一个问题,因为你的排序永远不会完成(正确)并且你的列表将处于不断变化的状态,即使没有其他人投票.我的回答提供了解决这个问题的方法.

2> Cody Hatch..:

对这个问题最天真的方法有一些严重的问题.最糟糕的是bash.org 和qdb.us如何显示引号 - 用户可以向上投票(+1)或向下投票(-1),最佳报价列表按总净得分排序.这遭受了可怕的时间偏见 - 较旧的报价通过简单的长寿积累了大量的积极投票,即使它们只是略微幽默.如果笑话随着年龄的增长而变得更有趣,那么这个算法可能会有意义但是 - 相信我 - 他们不会.

有各种各样的尝试来解决这个问题 - 查看每个时期的正投票数量,加权最近的投票,实施旧投票的衰退系统,计算正投票与负投票的比率等.大多数都受到其他缺陷的影响.

我认为最好的解决方案是网站The Funniest The Cutest,The Fairest和Best Thing使用的 - 一个改进的Condorcet投票系统:

系统根据它所面对的事物给出每个人一个数字,通常是它们的百分比.所以每个人得到百分比得分NumberOfThingsIBeat /(NumberOfThingsIBeat + NumberOfThingsThatBeatMe).此外,在将它们与合理的百分比进行比较之前,事物被排除在顶部列表之外.

如果该组中有Condorcet获胜者,则此方法将找到它.因为这不太可能,鉴于统计性质,它找到了一个与Condorcet获胜者"最接近"的人.

有关实施此类系统的更多信息,排名对的维基百科页面应该会有所帮助.

该算法要求人们比较两个对象(你的Pick-A-or-B选项),但坦率地说,这是一件好事.我相信在决策理论中,人们在比较两个对象方面比在抽象排名方面要好得多.数百万年的进化使我们擅长从树上采摘最好的苹果,但在决定我们采摘的苹果与真正的柏拉图形式的苹果有多接近时,我感觉很糟糕.(顺便说一句,这就是为什么分析层次结构过程如此漂亮......但这有点偏离主题.)

最后要说的是,SO使用算法来找到最佳答案,这与bash.org的算法非常相似,可以找到最佳报价.它在这里运作良好,但在那里非常失败 - 很大程度上是因为这里有一个旧的,高评价但现在过时的答案可能会被编辑.bash.org不允许编辑,现在还不清楚如何编辑关于现在已经过时的互联网模因的十几岁的笑话,即使你可以...无论如何,我的观点是通常正确的算法取决于您的问题的详细信息.:-)



3> 小智..:

我知道这个问题已经很老了,但我认为我会做出贡献

我将介绍Microsoft Research开发的TrueSkill系统.它就像ELO,但收敛时间要快得多(与线性相比看起来呈指数级),因此每次投票都能获得更多收益.然而,它在数学上更复杂.

http://en.wikipedia.org/wiki/TrueSkill



4> Jeremy Ruten..:

我不喜欢Hot-or-Not风格.不同的人会选择不同的数字,即使他们都喜欢图像完全相同.另外我讨厌评价十分之一的东西,我永远不知道选择哪个数字.

选择A-or-B更简单,更有趣.您可以看到两个图像,并在网站上的图像之间进行比较.



5> Osama Al-Maa..:

来自维基百科的这些方程使得计算Elo评级更简单/更有效,图像A和B的算法将很简单:

从您的数据库中获取Ne,mA,mB和等级RA,RB.

通过使用执行的比较次数(Ne)和比较图像的次数(m)和当前等级来计算KA,KB,QA,QB:

ķ

QA

QB

计算EA和EB.

EA

EB

获胜者的得分为S:获胜者为1,失败者为0,如果你的抽奖为0.5,

使用以下方法计算两者的新评级: 新评级

更新新的额定值RA,RB并计算数据库中的mA,mB.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有