返回列表

6th Place Solution

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

开始: 2023-02-15 结束: 2023-04-04 赛事预测 数据算法赛

第六名解决方案

作者: David Scott

排名: 第6名

发布日期: 2023年4月9日

竞赛: 2023年三月机器学习疯狂赛

背景

我于2006年毕业于苏格兰爱丁堡的赫瑞瓦特大学,获得精算数学与统计学学位。

此后,我一直在英国和澳大利亚的多家银行工作,主要从事信用风险建模。这涉及创建数学模型以帮助组织做出正确决策。此外,我还研究过监管模型和拨备预测。目前,我是一家位于马德里的分析公司的分析咨询总监。

这项竞赛已成为我的年度爱好。我于2017年首次发现它,那时我才知道什么是"疯狂三月"。在那次比赛中我获得了第5名,但我不太满意所采用的方法,之后进行了改进。

今年我投入了比平时更多的时间,因为我将处理流程从本地计算机迁移到了Kaggle上运行。作为其中的一部分,我审查并更新了所有旧代码,确保它们按预期运行,并更新了整个流程。这包括改用R代码,而不是之前用于某些步骤的SQL库。我已将代码分享在这里(https://www.kaggle.com/code/djscott1909/march-madness-2023-ds),欢迎查阅,但请多多包涵。我在这些比赛中自学了R语言,因此如果代码效率不高,我深表歉意。

总结

我的代码分为多个部分。前6个部分使用竞赛提供的数据,并探索生成变量的不同方法。这些代码包括为各队建立一系列自定义评分:

  • 简单评分系统 – 基于各队赛季结果和每场比赛的胜差来生成评分。
  • ELO评分 – 概念相同,但使用ELO流程(https://en.wikipedia.org/wiki/Elo_rating_system)生成球队评分。
  • 汇总统计 – 利用比赛信息生成可能有益的统计数据,包括胜率、得分与失分、赛程强度、 quadrant 1 胜利等。

最后两部分专注于为男子和女子比赛分别建立独特的模型。我使用所有可用信息,不引入仅在后续年份才有的统计数据,即不使用详细结果数据集、位置信息(仅区分主场、客场或中立)、538数据、赔率或使用0/1方法进行优化。我曾在往年使用过赔率和0/1方法,但鉴于今年的变化,我认为这不值得。我也未使用覆盖方法,即设定1号种子有100%获胜几率。在某些年份这肯定会有帮助,但我只想看看模型的纯粹表现。

模型本身采用逐步回归。我从没有变量的模型开始,逐步过程会添加最具预测性的变量并重复该过程。我倾向于使用同时审查模型中变量的逐步过程,如果变量不再增加价值则将其移除。这有助于确保所有被考虑的变量真正增加价值。

我的最终模型如下:

男子组

女子组

有趣的发现

我决定在模型开发中测试一些变量转换。这包括为变量创建证据权重分箱(WoE)、移除异常值以及变量标准化。

在热身赛期间,我小心地只考虑开发数据,并利用时间外样本帮助判断下一步的方向。在此期间,似乎表明标准化对女子比赛没有太大帮助。我只能假设某些变量的分布使其效果更好,但我没想到两者之间会有差异。我明年的计划是进一步研究这一点。

简单特征和方法

今年,鉴于赛制的变化,我决定创建2个模型,而不是利用2次提交机会使用0/1方法。我认为今年的奖励不如往年高,因此采取了不同的方法。

我有一个更简单的模型,不包含WoE字段。不幸的是,它似乎过于简单(或者可能只是今年运气不好)。这个模型只能排到第329名,所以我可能需要为明年的第二个模型研究替代方案。

由于我的模型开发方法是使用逐步回归并开发单一模型,因此与其他方法相比,模型最终相当简单(我认为)。虽然模型看起来有很多变量,但实际上是同一变量的不同WoE分箱,因此底层特征相当少。

补充说明

我一直很喜欢这些比赛,但我想特别提到@zdbradshawhttps://www.kaggle.com/competitions/march-machine-learning-mania-2023/discussion/397987)所做的工作。他公开提交结果的工作让我在决赛阶段知道该为哪些结果加油,使比赛更加有趣。我真的很鼓励大家明年分享解决方案,以便可以进行类似的实践。这为我的参赛体验增添了很多乐趣。

今年情绪起伏很大(前4场比赛后排名800+),但随着比赛的进行我变得更幸运,这就是我一直参加比赛的原因。希望这个比赛能持续很多年。

同比赛其他方案