【模型】基于elo模型的世萌选手mmr分数模型
世萌吧
全部回复
仅看楼主
level 12
云团榜是基于elo模型为主体设计的模型,可以通过计算分析出各个选手的能力分,从而对各个选手的战斗能力进行比较。elo模型在现在的电子竞技中常有使用,比如dota和dota2的天梯分,隐藏mmr等。
相信吧友肯定有熟悉这个elo模型的,这篇文章也只是浅谈,本人也是算法小白,如果有错误和问题的话欢迎一起讨论。
在发完之前请不要在主贴里面进行插楼。
2018年06月10日 14点06分 1
level 12
elo算法是指由匈牙利裔美国物理学家阿帕德·埃洛创建的一个衡量各类对弈活动水平的评价方法,是当今对弈水平评估的公认的权威方法。被广泛用于国际象棋、围棋、足球、篮球等运动。我将它扩展到萌战的范畴中
elo模型原先采用正态分布。但是实践显明棋手的表现并非呈正态分布,所以改进后的elo排名系统通常使用的是logistic分布。
其中F(x)为分布函数,f(x)为密度函数,也就是我们使用的概率。
2018年06月10日 14点06分 2
level 12
两个函数长这个样子:
(这两个图来自百度百科)
这个logistic增长模型其实很好理解,就是高中生物书上的生物数量增长模型,含有一个环境容纳量(k),当k为二分之一的时候增长速度最快,在上图中也有体现。
F(x)就是这个增长模型的图像,f(x)是这个模型的求导结果,显示了其增长速率的变化速度,在上图x=0时增长速度最快,对应的是二分之一最大值。
转换到萌战思路中,可以把f(x)的图像类比为正态分布图,最高点横坐标代表着角色的水平,角色的战力可能有浮动,但一定在这个点的周围,而且越往外概率越低。
当两名选手battle的时候,两人的战力分别为u1和u2,带入上面的式子可以得出一个方程,解出的结果t带入下面的公式中,可以得到a选手战胜b选手的概率P。
经过计算(其实是借鉴棋类运动的elo算法结果),得出获胜概率为:
2018年06月10日 14点06分 3
发现自己的积分没有写dx
2018年06月11日 02点06分
level 12
棋类运动有一个问题,战果只有三种情况:胜利(1),平局(0.5)和失败(0),而世萌中如果采用这种计算胜利的方法,那么会导致强大的一方一直缓慢增加分数,直到两个实力相近的选手进行battle的时候才能够对分数进行合适的修正,而世萌的赛程不允许这样的方式。因此我采用通过计算得票率的方式判定胜负。
而得票率有这样的公式:
其中需要得到a和b票数之比(设为c),要将上面两个式子进行联立,得:
上面的数据,使用10代替e为指数的底,形状参数设为3000。
通过这个公式,可以通过选手的分数计算出两选手的期望得票率。假如一位选手在比赛中的真实得票率和他的胜率期望值不同,则他的等级分要作相应的调整。具体的数学公式为:
SA为实际得票率,EA为理论得票率,K为系数,具体K的变化不会导致选手分数的突增,主要由运营人员由场合进行判断。
2018年06月10日 14点06分 4
level 12
举个例子,选手小鸟游六花积分2300,优库里伍德积分1800,两人实际得票为6000:4000,k取500.
六花的理论得票率为0.5947,实际得票率为0.6,六花战后积分为2303,优库里伍德为1797.
2018年06月10日 14点06分 5
level 12
下图为分数差和得票倍率的关系,由图可知当两者分数差3000的时候出现10倍杀.
下图为分数差和得票率的关系,从-3000到3000
2018年06月10日 14点06分 6
感觉前面看得吃力的看这楼就行
2018年06月10日 14点06分
level 12
END
2018年06月10日 14点06分 7
level 13
学渣看的脑壳痛[小红脸]
2018年06月10日 14点06分 8
吧务
level 15
用得票率的确比较科学。
几个建议:
1.希望如果有机会,可以从某一个时期开始补档;
2.(在第1条的基础上)设置对于由于一些原因长期没有比赛的角色的积分衰减/补偿制度;
3.(在1~2条的基础上)就可以真正做一个全时段的世萌榜单啦!
2018年06月10日 14点06分 10
全时段还是够呛,这个还是基于每年来的
2018年06月10日 14点06分
@一个大大的团子 我们有个小吧就在从头做ELO的排名演算,只是目前刚推进到2009的样子。不过只要能够让程序自主计算,以及时间充分,还是有可能的。
2018年06月10日 14点06分
第二条已有类似基于elo的算法,引入一个随时间变化的类似不稳定度的参数
2018年06月10日 14点06分
回复 下一站绵阳 :鸽了![阴险]
2018年06月10日 16点06分
level 12
围观[滑稽]
2018年06月10日 14点06分 11
level 14
我在世萌学概率统计系列[滑稽][大拇指]
2018年06月10日 14点06分 13
level 12
我记得之前的算法是根据每轮的两人等级分算出期望得票率,然后根据实际得票去修正每轮之后的等级分,不过那时候因为是循环赛,所以相对稳定,可以迭代进行修正,现在每个赛期结束就少了一部分人,随机性变大了
2018年06月10日 15点06分 14
循环赛确实更稳定,对于这种砍掉低分选手的做法,可能导致分数慢慢变高,但是我感觉通过得票率的排名还是可以看的
2018年06月10日 15点06分
level 12
针对以得票率替代胜平负的期望值这一点,个人感觉可能会有个问题。
就是如果比赛积累到一定数量后,大多数角色的积分振荡幅度没有趋于平缓,就代表得票率并不能很好地代表角色的实际水平。
不过,这一点要到统计的比赛多了再判断了。
2018年06月10日 15点06分 16
没有趋于平缓其实也是没有问题的,目前选用较大的k值,尽量在少量的比赛中就将角色的mmr定下,在接下来的比赛中如果角色的票力有减小之类的话会体现在mmr上
2018年06月10日 16点06分
我想说的是,目前的mmr是基于得票率更加能反映角色实力的假设上的,而这一点其实并没有直接的依据,而如果积分振幅在微观上趋于平缓,将提高这一假设的合理性,反之则会削弱这一合理性。即便角色的票力有所变化,其将体现在宏观的趋势上,而非微观的变化幅度。
2018年06月10日 16点06分
level 12
顺带一提,如果要做全时间段的积分,会出现另外一个问题,就是新星的定位。要是新星在第一场比赛之前都定分在初始积分,用得票率计算的话,会给予老选手很大的不利。
2018年06月10日 15点06分 17
1 2 尾页