543. March Machine Learning Mania 2023 | march-machine-learning-mania-2023
我于2015年毕业于剑桥大学数学专业。毕业后,我在曼城足球俱乐部工作,随后自学编程并获得了在旧金山初创公司Tribe Dynamics的职位。在那里我学习了专业编程和数据科学技能。在旧金山工作5年后,我离开Tribe Dynamics,成为Gro Intelligence(现位于纽约)的机器学习工程师。
我从2018年开始参加这项比赛,每年都很享受这个过程——既因为我喜欢电视上的比赛本身,也因为这让我有机会在工作之外进行数据科学实践。我每年使用大致相同的方法,随着改进,表现也逐年提升。在过去5年中,我总共投入了大约3周时间,今年在加入新数据前做了一些小的调整。
我的模型实现了ELO评级系统,并利用这些评级来预测每场比赛,同时考虑其他几个特征(篮板、投篮命中率(总体和三分)、种子排名)。评级差异和调整值通过链接函数转换为比赛的获胜概率。
训练过程主要涉及调整模型参数,特别是特征调整值和ELO评级在赛后更新的速率。单次训练运行会模拟2010年以来的所有比赛,跟踪评级变化,并以每个赛季的锦标赛得分作为评估参数集的指标。常规赛中还对主客场队伍进行了调整,但锦标赛中所有比赛均视为中立场地。
我认为训练过程未来可以优化——我进行了参数空间的网格搜索,让MacBook运行一整天来遍历参数空间。
锦标赛队伍的最终ELO评级分布在约400分的范围内,因此以下权重均与该评级范围相关。
男子组:
'k': 150 # ELO评级更新速度 - 参数范围的高端
'seed': -40 # 种子排名差异调整 - 中等水平
'link': 'N' # 评级差异转换为概率的响应函数 - 正态分布
'fgp': 1200.0 # 投篮命中率差异 - 高端水平
'fgp3': -10.0 # 三分命中率差异 - 低端水平
'reb': 15.0 # 篮板平均差异 - 中等水平
女子组:
'k': 80 # 中等水平
'seed': -40 # 中等水平
'link': 'L' # 逻辑函数
'fgp': 1200.0 # 高端水平
'fgp3': 0.0 # 低端水平
'reb': 15.0 # 中等水平
我认为我去年(当时排名前50)对模型的关键改进,以及今年帮助我的地方,是模拟锦标赛比赛并在整个锦标赛期间更新评级。例如,如果R2比赛是W1对W8,那么W1必须击败了W16,W8必须击败了W9,因此你可以在预测锦标赛的每场比赛前更新评级。我发现一个更重视近期表现的评级系统今年表现更好,可能帮助应对了今年的冷门(例如我在女子锦标赛后期高度评价的Iowa)。
另一件对我有帮助的事情是挑选一支球队会有好表现,并调整他们的评级作为某种"赌博"。我认为现在有126场比赛的情况下这没那么重要了,但我选择了普林斯顿大学在男子锦标赛中表现出色并更新了他们的评级。我认为,如果你在超过1000名参赛者中竞争,他们可能都有很好的模型,有5%的机会获得分数大幅提升意味着,虽然你的平均分数可能下降,但获胜的可能性会增加(要么大赢要么回家)。话虽如此,事后看来,我只应该预测他们赢2场比赛来获得我需要的提升,因为当他们输掉第三场比赛时,我的大部分优势都被抹去了。事后想想,重新运行没有这个手动选择的模型仍然会得到一个能让我保持第4名的分数。
从机器学习的角度来看,我的模型实际上相对简单。它不使用任何高级ML库,而是一个用于评级运动队/运动员(主要是国际象棋)的经过验证的算法,我很高兴能找到将其应用于锦标赛的方法。我认为耗时的部分来自于构建实际代码来实现ELO模型,以及处理数据结构和在参数空间上运行网格搜索。
我非常喜欢这场比赛,过去几年即使我没有接近前列时也如此享受——它将体育年度的亮点之一变成让我可以深入研究的机会。我会继续参加这场比赛,并期待明年思考模型的改进方案。
我也 appreciate 在排行榜顶端分数如此接近,且比赛经常由最后投篮决定,几个篮板的命中或错失就可能让我在排行榜上暴跌。基于体育的比赛之美在于,当你实时观看模型表现时,戏剧性会逐渐展开,这真是一个有趣的几周,也是时候获得一点幸运了。
```