第二名解决方案 | NCAAM 2021
2021年NCAAM锦标赛
比赛排名:第2名
Beat Navy 团队
Dusty Turner: dusty.s.turner@gmail.com
- 前工程师军官,现任弗吉尼亚州贝尔沃堡陆军分析中心的陆军运筹系统分析师。
- 在俄亥俄州立大学获得工业与系统工程硕士学位及应用统计学辅修学位。
- 2016年至2019年在西点军校担任助理教授,教授各类统计学课程。
- 热爱R语言、体育,喜欢在句子里不必要地大写字母R。
Jim Pleuss: jim.pleuss@gmail.com
- 前通信军官,现任西点军校计划、分析与人事助理院长。
- 在堪萨斯州立大学获得运筹学硕士学位。
- 2016年至今在西点军校担任助理教授,教授概率论与统计学。
- 花费大量时间观看、参与及探讨体育赛事。
开篇感言
在深入介绍模型摘要之前,我们想先说明几点:
- 感谢所有参与和运营这次比赛的人,过程非常有趣。
- 我们认为我们的模型“相当不错”——但我们确实处于方差的高位。如果篮球在某些比赛中没有朝着我们有利的方向弹跳,我们的模型就会从“相当不错”变得“平平无奇”。最值得注意的是,我们的模型预测奥罗尔罗伯茨大学击败俄亥俄州立大学的概率为30%,击败佛罗里达大学的概率为37%,但击败阿肯色大学的概率仅为5%(这些结果都对我们有利……勉强算是)。
话虽如此……
摘要
我们使用了随机森林模型来预测比赛胜负。我们考虑了赛季末的汇总统计数据、关键胜负记录、特定的Massey排名以及效率指标。我们通过选择具有最佳分类准确率的参数来调整随机森林参数(事后看来应该使用对数损失,但这对我们来说行得通)。我们在截至2014年的所有赛季上训练了多个模型,在2015-2019年赛季上进行测试,并选择了Kaggle得分(对数损失)最低的模型。
模型中的关键因素
- 所有Massey排名的平均排名
- 基于进攻效率、防守效率、三分得分占比、每场球权数、助攻失误比进行的球队聚类
- 胜率
- 罚球率
- Massey排名中的COL排名
- 联盟与其他所有联盟的胜负关系
- 第一象限胜利和第四象限失败
- 球队锦标赛种子排位
- 赛程排名
- 赛季最后3场比赛的以下平均统计数据:
外部数据
我们使用了以下链接的数据来获取球队效率、三分得分占比、每场球权数和助攻失误比。
https://www.teamrankings.com/ncb/rankings/
建模工作流
虽然我们认为创建模型最重要的部分是特征开发,但我们的建模工作流有助于保持条理。我们做了以下工作:
- 我们创建了一个R脚本用于所有数据清洗,并在执行脚本中引用它。
- 我们创建了一个R脚本包含所有使用的函数,并在主执行脚本中引用它。
- 我们创建了一个模型注册表,用于跟踪模型中使用的因素、模型类型、调优网格大小、模型性能以及我们想要跟踪的特殊说明。
- 我们创建了一个主要函数来执行模型。该函数执行以下操作:
- 检查模型注册表以查看模型是否已执行。
- 使用tidymodels工作流创建测试/训练数据,开发调优网格,通过交叉验证调整模型,选择最佳模型参数,将其应用于整个数据集,然后将其应用于验证数据。
- 将模型性能信息保存到模型注册表。
尝试过但效果不佳的方法
我们尝试了XGBoost和弹性网络模型,但它们的表现不如随机森林。
最小可行代码