543. March Machine Learning Mania 2023 | march-machine-learning-mania-2023
在进入正文之前,我想感谢Kaggle整理所有不同数据集并举办这场比赛。我学到了很多,这是一次挑战自我的绝佳方式。同时感谢所有分享笔记或参与讨论以帮助他人的人!然而,令人遗憾的是,前100名中约60%的位置被一个笔记本的复刻版本占据(没有任何修改)。我惊讶于如此多的人(包括高排名用户)更看重赢得一个任意的奖牌,而不是提升自己的技能和挑战自我。我希望未来的比赛能更加重视原创提交。
我于2022年8月获得圣地亚哥州立大学工商管理学士学位。目前尚无专业经验,但希望从事数据驱动型工作。我自学成才,2023年初开始学习机器学习。不过,我有体育竞技、体育分析的经验,主要专注于构建篮球博彩模型(个人项目)。我肯定不是比赛中最优秀的建模者,但我觉得我在这一特定领域的知识给了我一些优势。
我最喜欢的电影之一是《点球成金》。在电影中,奥克兰运动家队采用统计学方法组建棒球队。他们评估击球手的主要指标之一是OBP(上垒率)。他们的策略是:棒球比赛的胜利主要可归结为让击球手上垒。我一直想把类似策略应用到篮球中,但这很困难,因为这是项非常不同的运动。
我重现"点球成金"策略的方法是:仅使用能够消除比赛节奏、风格、偏见、噪音等差异的特征。为此,我专注于球队在每次球权基础上的表现效率。在每次球权中更高效运作的球队更可能击败对手,无论其实力/种子排位如何。我相当确信这种方法每年都会表现良好,甚至可能扩展到NBA。
在测试阶段,我大部分时间都花在特征选择上。如前所述,此前使用高级篮球统计数据的知识和经验使特征选择容易得多。我还决定从所有使用的数据集中删除"NumOT"(加时赛数)和"WLoc"(比赛地点)。我认为"NumOT"是噪音,因为它无法为判断两队实力提供价值。"WLoc"在我看来无关紧要,因为我认为NCAA锦标赛在中立场地进行,没有主场优势。
以下是每个特征的细分、使用原因及其重要性(将在两队之间取平均值...即AWinRatio和BWinRatio将统称为WinRatio,并使用其平均重要性):
| 特征 | 公式 | 说明 | 重要性 |
|---|---|---|---|
| 胜率 (Win %) | WR = W / G | 这个很直接。胜率高的球队更可能是强队。高胜率且低种子排位的球队可能比预期更强。 | 0.327 |
| 种子排位 | - | 同样很直接。高种子排位的球队比低种子排位的球队更可能是强队。 | 0.052 |
| PPP(每次球权得分) | PPP = PTS / Poss | PPP代表球队每次球权产生得分的效率。PPP越高,球队每次控球产生高效得分的能力越强。低PPP可能表明投篮选择不佳(如长距离两分)、效率低下或进攻糟糕。 | 0.014 |
| 球队 | - | 某些球队表现优于其他球队(反之亦然)。这可能源于更好的招募、优秀教练、联盟差异甚至运气。 | 0.028 |
| EFG%(有效投篮命中率) | EFG = (FG + 0.5 * 3P) / FGA | EFG是考虑三分球比两分球多1分(50%)的投篮效率指标。 | 0.008 |
| TOV%(失误率) | TOV% = (TOV / (FGA + 0.475 * FTA + TOV)) | 每100次球权的估计失误次数。衡量球队在进攻中保护球的能力。失误多的球队效率较低,让防守方重新获得球权。 | 0.008 |
| OREB%(进攻篮板率) | OREB% = OREB / (OREB / OppDREB) | 球队获得进攻篮板的频率估计。高OREB%的球队更可能在投篮不中后创造第二次进攻机会。 | 0.008 |
| Set(赛事类型) | 1 = 锦标赛, 0 = 常规赛 | 我创建此特征让模型可能为常规赛和锦标赛分配不同权重。赢得锦标赛比赛比赢得常规赛更重要。 | 0.008 |
| TS%(真实投篮命中率) | TS% = PTS / (2 * FGA + 0.475 * FTA) | 考虑罚球时的投篮效率指标。传统FG%只使用总投篮(命中和尝试),而TS%考虑了罚球、两分和三分的差异。 | 0.008 |
| FTR(罚球率) | FTR = FTA / FGA | 球队在投篮时造成犯规罚球的能力。高FTR球队能经常站上罚球线,不仅增加得分机会,还能让对手陷入犯规麻烦。 | 0.007 |
| DREB%(防守篮板率) | DREB% = DREB / (DREB + OppOREB) | 球队在对手投篮不中后获得防守篮板的能力。高DREB%球队减少对手进攻篮板机会并获得球权。 | 0.007 |
| 赛季 | - | 我不确定是否保留此特征,但它表现良好。我的理由是:过去几个赛季表现好的球队更可能在当前表现良好。也可用于量化不同年份的比赛风格差异(如三分球使用率远高于2000年代初)。 | 0.007 |
| 4F(四项要素) | - | 参见参考文献。四项要素概念由Dean Oliver在其著作《Basketball On Paper》中创建。 | 0.007 |
| 性别 | 1 = 男子, 0 = 女子 | 用于量化男女比赛风格差异。由于只训练一个模型(男女均用),我认为这可能是解决方案。明年我将训练两个独立模型。它在最终特征重要性列表中权重为零。 | 0.000 |
| ORTG(进攻效率) | ORTG = 100 * (PTS / Poss) | 衡量进攻效率的指标,表示每100次球权的得分。回顾发现,PPP几乎做同样事情——只是不调整为每100次球权。 | 0.000 |
| DRTG(防守效率) | DRTG = 100 * (OppPTS / OppPoss) | 衡量防守允许的每100次球权失分。与ORTG类似,PPP与此高度相关。 | 0.000 |
| 对手数据 | - | 除了计算球队的这些指标,我还计算了对手的平均数据。例如,如果球队赛季"对手EFG"很低,意味着对手对他们的投篮效率不高,表明防守强。一般来说,你希望对手数据比你低(失误率除外)。 | 参见完整重要性列表 |

数据集:我只使用了6个数据集,未加入外部数据(如538、Massey、KenPom)。男子和女子均使用:TourneyDetailedResults、NCAATourneySeeds、RegularSeasonDetailedResults。创建提交时也使用了示例提交文件。
缩放:测试了RobustScaler、MinMaxScaler和StandardScaler。MinMaxScaler的交叉验证分数最佳,因此选用它。
交叉验证:使用带洗牌的KFold,测试了5、8、10折,10折表现最佳。但这是我需要改进的领域,希望未来能进行更有效的交叉验证。
建模:我决定采用分类方法——1表示胜利,0表示失败。似乎许多人采用回归方法预测得分差。但我觉得这不是正确方法,因为我们评分的依据不是得分差的准确性。在这场比赛中,球队赢2分和赢15分没有区别——只有胜负。许多人尝试根据得分差推断获胜概率,但认为这种方法不够准确。
我测试了5种分类模型:LogisticRegression以及投票集成。分类模型包括:XGBoost、LightGBM、RandomForest、KNearestNeighbors、StochasticGradientDescent。测试中投票集成训练时间过长,因此放弃。最终XGBoost表现最佳,成为我的提交模型。
与许多人不同,我没有手动覆盖任何预测。考虑过这样做,但觉得会引入个人偏见(而这正是我想避免的)。不过,对于女子锦标赛,手动覆盖似乎相当安全,但对男子锦标赛风险更大。
我对结果非常满意,并好奇这种方法在往届锦标赛中的得分表现。我完全打算为明年的锦标赛制作提交方案!
再次感谢,祝贺所有获奖者!欢迎在下方提问,我将尽力回答所有问题。