声明:原创文章发自中羽在线,转载请保留出处和作者!
一、引言
之前逛中羽论坛时,发现有球友提到目前缺乏合理的衡量球员实力的量化指标,尤其是对于不同时期的顶级球员实力对比有着比较大的争议(虚空对比)。出于比较不同顶级球员实力的好奇心,我希望能够引入成熟的评分方法,对不同时期的羽毛球男单运动员的水平进行一个评分。
本文的第二节将会介绍评分的具体方法。在这部分中,我会介绍如何获取球员对阵数据,以及使用的评分算法。我比较了ELO等级分和WHR等级分在羽毛球领域的适用性,并最终选择了WHR等级分。如果球友不感兴趣可以略去这一部分。
本文的第三节将会展示不同时期的顶级男单球员的WHR等级分,并进行一些我个人的分析(不可避免会带有部分个人偏向)。我希望能做到仅输出数据,不输出观点。
二、评分方法介绍
1. 对阵数据的获取
羽毛球比赛的对阵数据可以在这个网站上找到,并且该网站没有限制爬取次数的防火墙。我编写了爬虫,将1989年以来的男单比赛的所有对阵数据进行了爬取,包括20000+位男单球员,以及200000+场对阵。
2. ELO等级分的不适用
获取到数据之后,就需要选择一种合适的评分算法。目前对于网球项目,已经存在非常成熟的使用ELO 等级分对不同历史时期的球员进行实力评估的方案,例如这个网站。ELO等级分是一个比较广为人知的评分方法,成功应用在了很多领域,因此我首先考虑使用ELO等级分对球员的实力进行评估。
Elo会用一个数字来衡量运动员的水平,每场比赛结束后,赢家会从输家那里获得积分。两名运动员之间的积分差异,决定一场比赛后,获得或者失去的积分。
如果评分高的运动员获胜,那么只会从评分低的运动员那里,获得一点点积分。相反,如果评分低的运动员爆冷,就会抢走评分高的运动员大量的积分。如果平局,评分低的运动员,同样会抢走评分低的运动员一定的积分。
只要运动员的场次足够多,Elo就会真实地反应出运动员的真实水平。
我实现了ELO等级分算法,并使用男单对阵数据进行训练。但是发现拟合效果非常不稳定,调整其K值参数,最终的积分排名会出现很大的变化。我研究之后,发现有以下原因:
A)ELO等级分的内蕴缺点:时滞性。一个球员如果一直不打球,他的等级分将会维持不变,无法准确评估其实力。众所周知,羽毛球是周期性备战的,许多顶尖球员都会选择性参赛,在关键赛事上发力。
由于ELO 等级分是增量算法,只能“向前看”,而不能“向后看”,因此它是没法准确判断放假归来的林丹、禁赛回归的桃田、伤愈归来的桃田分别是个什么水平的,与他们进行比赛的等级分修正就会非常不合理。因此ELO等级分非常不稳定。
B)ELO等级分的内蕴缺点:通货膨胀。在无关选手水平的情况下,平均的ELO等级分会自发地出现上涨现象。为了解决这个问题,我查到的解决办法(参考网球的思路)主要是增加“缺席惩罚”。例如林丹很久没参加比赛,那么会自动下调他的等级分,让跟林丹比赛的对手没那么容易增长等级分。但这个方法最终的效果会很奇怪,因为大赛前夕有很多球员会选择备战不参赛,那么最终参加大赛的时候就会等级分很低,比较不符合常理。
C)ELO等级分没有考虑到不同赛事的重要程度。世锦赛和挑战赛在ELO算法的眼中地位相同,对于某些在小比赛实验打法的球员不太友好。
3. 使用WHR等级分
A) 我最终选择了全历史等级分(Whole-History Rating, WHR)作为评分方法,它是ELO算法的优化版。
该评分方法的应用领域也比较多,例如著名的围棋“ 野榜”(GoRatings)就是使用了此算法。该算法的优点在于,a) 会考虑一个选手在不同时间的实力变化,认为一个选手在一段时间内的表现满足正态分布;b) 使用牛顿迭代来拟合评分,使得比赛结果的贝叶斯后验概率最大。用白话来说,就是用该评分来预测比赛是非常准的。
由于并非是增量算法,WHR可以通过结果来推导积分。例如2013年的林丹获得了世锦赛冠军,那么可以反向推导出他放假归来时的等级分,并相应修改其对手的等级分。
B) 参数设置
我选择将参数w2设置为14(原论文代码推荐的值)。同时我根据不同赛事的重要程度不同,设置了不同的权重: (由于我是00后球迷,搞不太清羽联的几次积分改革,为了不厚今薄古,仅考虑了几个顶级赛事,求轻喷)
奥运会:3 世锦赛:2.5 亚运会:2.5 全英:1.5 总决赛:1.5 其他比赛:1
这样更高等级的比赛,会有更高的权重。同理,我根据比赛中的轮次,设置不同的权重:
决赛:2.5 半决赛:2 铜牌赛:2 1/4决赛:1.5 其他轮次:1 牛顿迭代次数选择为400轮,训练大概需要40min。
三、对全历史等级分的分析
1. 球员的巅峰WHR等级分比较
我最关心的就是关公战秦琼了,下表列出了巅峰WHR等级分前20名的球员。
由于我是00后球迷,对有些老将不太熟悉,不知道通常怎么翻译,这里就用英文名代替了。
A) 可以看到,林李的WHR等级分一骑绝尘,是唯二超过3700的选手。
B) 这里值得一提的是安塞龙的分数,可以看到他在今年的分数达到了历史第三。但是不能不考虑一个因素,WHR 等级分假设球员在一段时间内的表现会呈正态分布,因此会根据之后的比赛结果适当修改球员的当前分数。例如2013-2014 的林丹,可能就是因为2014末期的糟糕表现,导致被WHR算法认为是林丹在慢慢下滑,因此会略微低于2012年的等级分。
安赛龙目前的高分有很大的原因是无法获取之后的成绩。如果安塞龙之后的比赛表现低迷,那么目前的得分将会受到修正。
作为参照,在2020年之前,安塞龙的上一个小巅峰是2017年,他的峰值WHR等级分是3449,排在陈宏之后。
C)按照算法的设计,相差400分时胜率大概在90%。
D)这个排名是算法的结果,仅根据对阵情况进行分析,未考虑技战术,也未考虑场外因素。不能说穿越时空进行1v1男人大战,就一定符合实际情况,所以大家如果感觉不太对的也可以一笑置之了。
2. 单人世界冠军的难度(含金量)比较
这也是个热门话题,我统计了2004-2021年世锦赛、奥运会的世界冠军们,在夺冠路上的对手的WHR等级分,见下表所示。
A) 需要解释的一点,是对手的WHR往往会偏低,因为他这场输了嘛,所以WHR算法会给他减分,因此可能看起来分数会有点差距。可能这场比赛之前或是之后,对手的分数又会高起来,正态分布嘛。
B) 平均WHR看起来会比较小,因为一二轮往往是那种很菜的对手,所以拉低了均分。但是我也不敢仅仅统计1/4决赛以上的对手,毕竟安塞龙第一轮就被淘汰了。。
C) 还是一样,这个排名是算法的结果,也不能说穿越时空进行1v1男人大战,就一定符合实际情况,所以大家如果感觉不太对的可以一笑置之。
3. 顶级选手WHR变化图
这里统计的是每一年的最后一天的WHR等级分。我分5个周期画出了每年的WHR等级分前5的球员的等级分走势。由此可能可以对竞争环境做一个比较简单的判断?这里直接整的是英文名字。
四、总结
本文中列出的WHR等级分,是采用WHR算法、仅根据对阵情况计算出来的评分,没有分析技战术,也没有考虑场外因素,因此可靠性无法评估,仅供娱乐参考。具体采用的参数以及训练方法可以见第二节。由于WHR算法没有引入随机因素,因此相信是容易复现的。
希望本文能起到一个抛砖引玉的作用,有更多大佬可以使用更加优秀、科学的方法进行羽毛球的分析,大家一起进步。
五、FAQ
1. 盖德的等级分问题 我也觉得盖德的等级分有点奇怪,就把盖德的整个生涯的等级分走势图给打了出来,如下图所示。
我对盖德同志以往的战绩不太了解,不知道早年的数据符不符合大家的预期。 我观察了下其巅峰WHR是出现在2011年的 苏迪曼杯之后。观察那时的战绩,我觉得大概是因为盖德在那段时间主要输的都是林丹和李宗伟两个超级高手,导致其WHR没怎么下降(因为差距挺大的),因此等级分一路飞涨。
|