返回列表

2nd Place Solution

543. March Machine Learning Mania 2023 | march-machine-learning-mania-2023

开始: 2023-02-15 结束: 2023-04-04 赛事预测 数据算法赛
第二名解决方案

第二名解决方案

私人排行榜名次: 第2名

私人排行榜分数: 0.17522

更新: 笔记本现已可用。每个笔记本都植入了公共数据,从前序笔记本构建,允许任何人运行任何笔记本。这可将内存需求控制在非付费账户的30GB限制内。

简介

我最初的解决方案结合了R语言的前处理和后处理步骤,并通过API调用DataRobot的AutoML平台来利用特征工程和AutoML功能。我正好在DataRobot工作,能够使用他们最新的软件,但我知道很多人没有这个条件。因此,我尝试在R中复制整个过程,最终得到的输出结果与原始提交的相关性超过0.993,并且排行榜分数非常接近。我已经上传了上述一系列笔记本。

我拥有数学学士学位和统计学硕士学位,作为大学教授、精算师和数据科学家拥有10多年的专业经验。我必须指出,由于只有126个评分观察值,我很有可能是幸运的。但我对其中一些想法在未来几年持续有效持乐观态度。以下是基本流程:

R: 预处理 → R: 会议效应偏移 → DataRobot时间感知特征工程 → DataRobot AutoML → R: 平滑概率预测并输出为Kaggle格式。

主要目标和方法

我希望找到一种方法来利用整个赛季的信息,同时让模型能够关注球队在锦标赛前的表现,以及更像锦标赛的比赛。我利用AutoML来节省时间,因为我的5岁和7岁的孩子才是我真正的老板,他们的要求很高 ;-) 为此,以下是我的方法中最独特的几点:

1) 推导每个赛季的会议效应

我从常规赛非会议赛程中推导出每个赛季的会议效应,即在锦标赛开始时可用的信息。这是在迭代2或3中出现的,当时我看到南达科他州立大学女子队是我整体排名第2的球队。当然,她们在会议中取得了18胜0负的成绩,但她们也参加 Summit 会议,这个会议并不算强。显然,在此之前我的模型没有很好地捕捉到会议效应。

为此,我使用R的glmnet仅对非会议常规赛进行建模,并利用四个主要特征:

  • 每支球队在会议内的得分差,用于控制球队在会议中的实力
  • 主场优势指标
  • 赛季(作为因子),因为许多会议近年来实力有所起伏
  • 会议标签(以及赛季和会议之间的交互)。这正是我真正想要的主要效应。其余的只是控制变量。

真正的魔法可能在于模型矩阵的创建,我没有为主客场重复会议特征,而是为每个会议创建了一列。主队会议标记为+1,客队会议标记为-1。这使我能够将整个会议的信息隔离到一列中,而不是将其拆分到home[conf]和away[conf]中。我使用了两个目标:主队比赛的得分差和主队获胜指标。然后我提取了主队分差模型和主队获胜模型(log-odds)的赛季-会议系数,并将它们分别附加到训练数据集的每场比赛的主队和客队上。我取了主队会议效应和客队会议效应之间的差值,这些差值成为我主模型中的偏移量,以帮助控制那些在相对较少的锦标赛比赛中难以捕捉的会议效应。

2) 中立场地比赛的处理

与上述相关,我必须处理中立场地比赛,因为整个NCAA锦标赛都在中立场地进行(对于男子比赛,以及部分女子比赛)。因此,从Kaggle提供的数据中,我复制了所有中立场地行,翻转“主队”和“客队”,并在比赛在中立场地时使用“主场”指标=0。这使得所有中立场地比赛对“主队”和“客队”特征的影响相似,同时使大多数NCAA锦标赛比赛在模型训练中的权重翻倍。当我去预测锦标赛比赛时,我预测每场比赛的两行数据,然后平均结果。

3) 建立四个模型

在主要训练部分,我建立了四个模型:男子和女子的得分差模型和主队获胜模型。男子锦标赛提供了更多信息,我认为最好将性别分开。我也相信你可以从分差中提取更多信息——因为20分的胜利与1分的胜利并不相同——所以我想确保通过分差来调整获胜概率。为此,使用上面描述的四个模型的输出,我用R的mgcv包构建了一个gam()模型,该模型将预测的主队获胜概率的log-odds对预测的主队得分差进行回归,以“平滑”概率并利用这些得分差。可以说,这帮助了爱荷华女子队的预测,因为她们的预测得分差相对高于原始的预测获胜概率。

4) 时间感知特征工程

我注意到我想识别那些可能变得相对更好或更差的球队,这是如何使用DataRobot的特征发现工具实现的:

  • 推导每个Massey排名(男子)的2周滚动平均值、中位数、最大值、最小值和标准差
  • 推导盒装统计数据的滚动平均值、中位数、最大值、最小值和标准差,回溯6个月(整个赛季)、3个月、1个月和2周
  • 除了提供的盒装统计数据外,我还推导了每场比赛的球队得分差,并将其汇总。例如,对于即将到来的比赛中的指定主队,我会有他们“过去2周的平均进攻篮板得分差”作为其中一个特征
  • 对于所有这些盒装统计数据,我在汇总前按每67次进攻进行标准化

5) AutoML表现

AutoML显示弹性网络回归器在这个数据上表现非常好。我认为这在体育领域有一定道理,因为通常效应是相当单调线性的。你不可能在某件事上“太好”,以至于你需要xgboost或类似算法来检测非单调性或非线性的东西。

顶部特征

  • 主场效应相当大,相当于每场比赛3-4分。例如,男子(未标准化)系数效应为+1.72,这代表了主场与中立场地之间的差距。因此,主客场效应更像是2×1.72 = 3.44,这与你可以从博彩公司赔率中推断出的结果相符。
  • 会议效应非常大,尤其是在早期轮次比赛中,你经常会看到强队会议对阵中游球队。
  • 滞后汇总的进攻篮板得分差:在男子中排名最高,在女子中则不那么重要。
  • 得分差(得分、FGM、FTM)的滞后汇总版本:在男子和女子中都排名很高。一般来说,更长的窗口更有价值(例如,整个赛季优于2周滞后),但男子的FTM在过去一个月中很重要。我假设进入罚球线是球队能够相当程度控制的事情,并且在更短的滚动窗口中存在信号。
  • 个人Massey排名系统在男子中经常出现。我本来以为我的一些汇总数据(如跨系统的中位数排名)会是主要贡献者,但结果却是DOK和7OT都进入了前10名。
同比赛其他方案