Statistics 1对1投票:计算评分(Flickchart.com)
我希望有1对1的“战斗”,而不是评分从1到10的项目。两个项目显示在一起,您可以选择更喜欢的项目。根据这些“战斗”结果,算法应该计算每个项目的评分 您可以在使用此方法对电影进行分级的位置上看到此方法 看起来是这样的:Statistics 1对1投票:计算评分(Flickchart.com),statistics,charts,ranking,voting,Statistics,Charts,Ranking,Voting,我希望有1对1的“战斗”,而不是评分从1到10的项目。两个项目显示在一起,您可以选择更喜欢的项目。根据这些“战斗”结果,算法应该计算每个项目的评分 您可以在使用此方法对电影进行分级的位置上看到此方法 看起来是这样的: if rank(loser) == null and rank(winner) == null insert loser at position estimated from global rank insert winner at position estimat
if rank(loser) == null and rank(winner) == null
insert loser at position estimated from global rank
insert winner at position estimated from global rank
else if rank(winner) == null or rank(winner) < rank(loser)
then advance winner to loser's position and demote loser and all following by 1
正如你所看到的,如果他们赢得了一场“战斗”,物品就会向上推。排名总是根据“战斗”结果而变化。但这不能仅仅基于胜诉报价(这里是54%),因为击败“泰坦尼克号”比击败“25小时”更难
有几件事我很不清楚:
-评级是如何计算的?你如何决定哪部电影排名第一?你必须考虑一个项目获胜的次数和被打败的项目有多好。
-如何选择有“战斗”的物品
当然,你不能告诉我Flickchart到底是如何做到这一切的。但也许你能告诉我怎么做。提前谢谢 这可能并不完全是flickchart所做的,但您可以使用国际象棋(和其他运动)中使用的算法的变体,因为这些基本上都是他们赢/输的战斗/游戏 基本上,所有电影一开始都是0胜/负,每次赢了都会得到一定的分数。你的平均得分通常在20分左右(但任何数字都可以),如果你赢了一部与你相同评级的电影,你会得到20分。战胜一部糟糕的电影可能得10分,而战胜一部更好的电影可能得30分。反过来说,输给一部好电影你只会损失10分,但如果输给一部坏电影,你会损失30分
该算法的详细信息在维基百科链接中。或者您可能希望使用PageRank的变体,请参见。 (或原名为的) 评级是如何计算的?你如何决定哪部电影排名第一?你必须考虑一个项目获胜的次数和被打败项目的好坏。 你想要的是一个加权评级,也称为贝叶斯估计 我认为这是一个更好的起点,使排名网站。有些电影的票数超过300000张,而有些电影的票数不足50000张。IMDB使用贝叶斯估计对电影进行排名,而不会对流行电影进行不公平的加权。算法在页面底部给出: 加权评级(WR)=(v÷(v+m))×R +(m÷(v+m))×C式中:
- R=电影的平均值(平均值)= (评级)
- v=选举的投票数 电影=(投票)
- m=最低票数 需要列入前250名 (目前为3000人)
- C=平均投票数 整个报告(目前) (6.9)
Rank Movie Votes Avg Rating Weighted Rating
---- ----- ----- ---------- ---------------
219 La Strada 15,000+ 8.2 8.0
221 Pirates of the 210,000+ 8.0 8.0
Caribbean 2
这两部电影的收视率都有所下降,但对《斯特拉达》的影响更为显著,因为它的得票率较低,因此不如《波塔》的收视率具有代表性
对于您的具体情况,您在“战斗”中有两个项目。您可能应该按照以下方式设计表格:
Items
-----
ItemID (pk)
FightsWon (int)
FightsEngaged (int)
平均等级为FightsWon/FightsEngaged。使用上述公式计算加权评级
当用户在战斗中选择胜利者时,将获胜物品的FightsWon字段增加1,将两个物品FightsEngaged字段都增加1
希望这有帮助!
-朱丽叶至于flickchart,我一直在玩弄它,我认为评级系统相当简单。在伪代码中,我猜它看起来像这样:
if rank(loser) == null and rank(winner) == null
insert loser at position estimated from global rank
insert winner at position estimated from global rank
else if rank(winner) == null or rank(winner) < rank(loser)
then advance winner to loser's position and demote loser and all following by 1
如果排名(失败者)==null,而排名(获胜者)==null
在根据全球排名估计的位置插入失败者
在根据全球排名估计的位置插入赢家
否则,如果排名(赢家)=空或排名(赢家)<排名(输家)
然后将胜利者提升到失败者的位置,并将失败者降级,然后所有人按1
我为什么这么想?首先,我完全相信他们的贝叶斯先验并不是基于对我之前选择的仔细挖掘。他们似乎无法猜测,因为我喜欢《绝地归来》,所以我喜欢《帝国反击战》。事实上,他们无法理解,因为我看过《孤家寡人2》,所以我可能看过《孤家寡人1》。在经历了数百次的收视率之后,选择还没有出现
其次,如果你看上面的代码,你可能会发现一个小错误,你肯定会在网站上注意到。你可能会注意到,有时你会做出选择,胜利者会以一比一领先。这似乎只发生在输家之前没有加入的情况下。我的猜测是,正在发生的事情是,输家被加得比赢家高
除此之外,你会注意到排名根本不会改变,除非排名较低的电影直接击败排名较高的电影。我认为这不是真的