数据驱动的三月疯狂赛预测

数据驱动的三月疯狂赛预测

原文:towardsdatascience.com/data-driven-march-madness-predictions/

三月疯狂赛》臭名昭著地难以预测,是一场完美的风暴,其中热门球队跌落,黑马球队崛起,完成不可能的任务。每年三月,64 支男子和 64 支女子大学篮球队为荣耀而战,而数百万的球迷、分析师和投注市场都在争先恐后地预测结果。但选择完美胜负表的几率是多少?9.2 亿亿分之一(90 亿亿)。即使你是篮球专家,你的机会也几乎不会提高,可能只有 120 亿分之一。在整个锦标赛的历史上,没有人曾经 100%正确,记录是 49 场比赛直到第一次出错。当一份三月疯狂赛的邀请函落在我的邮箱里时,我感到完全不知所措。作为一个居住在美国的荷兰人,我根本不知道这些球队是谁,不得不对锦标赛的运作进行快速学习。但有一件事我知道:编程。

寻找正确的数据

不同的来源提供不同的衡量球队实力的方法,每种方法都有其特点。一些更常用的来源包括;KenPom 排名内特·西尔弗的 FiveThirtyEight 预测NCAA 排名和球队统计数据,甚至拉斯维加斯赔率和投注市场。后者是预测比赛的一个有趣的方法,因为它考虑了来自公众或专家的大量不同情绪。

每个这些来源都有其优势和劣势,有些更侧重于统计方法,甚至结合了各种数据来源,例如内特·西尔弗,而有些则使用原始赛季信息和历史趋势。在决定在您的胜负预测中信任哪些数字时,理解这些来源之间的差异是关键。

在深入研究关键指标之前,重要的是要承认一个基本限制:在一个理想的世界里,一个完全优化的模型将结合过去赛季的每场比赛统计数据、球员表现数据和历史趋势。不幸的是,我没有访问到这种细粒度数据,其次,由于这只是一个有趣的项目,我不想让它过于复杂。因此,我不得不依靠自己的大脑,并使用基于 KenPom 排名数据的代理。最大的问题仍然是:这个模型的表现将如何?我并不声称它将是完美的。事实上,三月疯狂赛唯一确定的是它将会出错。但至少,这个模型提供了一种结构化、数据驱动的决策方式,即使我对大学篮球队的了解有限。

解锁获胜胜负的关键指标

在构建 March Madness 的预测模型时,挑战在于决定哪些统计数据真正重要。并非每个统计数据都重要,有些提供了对球队表现的更深入洞察,而有些则只是造成混淆。为了在预测能力和简单性之间取得平衡,我选择了一些关键指标,这些指标捕捉了整体球队实力、一致性和潜在的意外性。这些包括效率评级、运气、势头、节奏和波动性,每个都在模拟现实锦标赛结果中扮演着关键角色。

队伍效率(净效率和调整效率)

净效率:这是球队进攻效率与防守效率之间的差异。这个指标给了我一个衡量整体球队实力的度量。Kenpom 通过计算球队每 100 次控球比对手多出的分数来计算这个指标。

调整效率:由于一些联赛比其他联赛更具竞争力,我觉得仅仅依靠净效率是不公平的,这会对待那些在激烈竞争中表现不错的队伍。因此,我使用联盟平均竞争力作为调整因素,以确保那些在较弱联盟中表现优异的队伍受到惩罚,而面对强劲对手的队伍则获得加分。

越快,跌得越重

我这里的逻辑是,那些比赛节奏较快的队伍每场比赛能创造更多的控球机会。这有一个缺点,那就是不仅增加了得分的机会,也增加了失误的机会。因此,这种较高的节奏可能会导致表现上的更大波动。而表现上的高波动性使得队伍更容易陷入高风险、高回报的场景,从而导致一边倒的胜利或令人震惊的失败。这也使得那些在纸面上处于不利地位的队伍有机会缩小与对手在质量上的差距,给对手制造更大的困难。那些依赖高节奏比赛风格的队伍就是这样的。

运气因素

并非所有的胜负都能完全讲述故事。有些队伍相对于数据预测的胜负,实际上赢得的比赛更多。而有些队伍可能表现不佳,例如,他们输掉了本应属于他们的关键比赛。然而,运气可能是最难真正信赖的指标,就像我甚至不相信自己的运气一样…

那么,我如何将运气因素纳入其中?根据 Kenpom 的数据,运气衡量的是一支球队的胜负记录与其预期记录之间的差异。运气高的球队赢得了比预期更多的比赛。而运气差的球队可能在关键时刻输掉比赛,尽管他们整体表现良好。

势头:高点和低点

在一个理想的世界里,我会通过观察一支球队过去 10-20 场比赛的表现来衡量势头,识别那些在锦标赛前感觉不可战胜的球队。但因为没有直接访问这些数据,我不得不发挥创意,找到一个替代指标。

我将势头定义为球队相对于联赛平均水平的超额表现程度。我比较球队的净评级与整个联赛的平均值,表现远高于平均水平的球队被认为有更多的势头,而低于平均水平的球队则减少。

疲劳:锦标赛是一场马拉松,而不是短跑

并非所有胜利对球队的能量水平都有相同的影响。与强队进行的紧张加时赛胜利可能比轻松的两位数胜利有严重的后果。为了解决这个问题,我使用疲劳因素重新调整球队的评级。这个因素通过惩罚预测获胜概率微小的球队来计算。

总结来说,这六个因素是计算球队获胜或失败概率的主要成分。但了解这些指标只是故事的一半。现在,我需要一个可以完全模拟锦标赛的代码,我希望我能得到比仅仅依赖最可爱的吉祥物(我喜欢狗狗!)或基于种子的假设更现实的结局。

算法:模拟疯狂

简而言之,我的疯狂三月模型是基于所谓的蒙特卡洛模拟构建的,这些是概率模拟,将我的篮球指标转化为数以万计的锦标赛结果,以找出哪支队伍可以晋级下一轮。因此,我并不是计算一个单独的赛程表,我的代码运行了数以万计的模拟,每次都在不同的条件下从开始到结束模拟整个锦标赛。

图片由 Arif RiyantoUnsplash 提供

第一步:生成比赛对阵

第一轮的对阵是通过使用 NCAA 的锦标赛种子来构建的,我必须确保我模拟的赛程表会导致适当的球队配对。为此,我使用种子规则,将球队配对为 1 号种子对阵 16 号种子,8 号种子对阵 9 号种子,等等,就像在真正的锦标赛中一样。

第二步:计算获胜概率

每场比赛都使用逻辑概率函数进行模拟。这意味着每场比赛都有某种形式的不确定性,而不仅仅是每次都偏向种子更高的球队。概率然后取决于我上面描述的关键指标:调整后的球队实力、波动性、比赛风格、疲劳效应和运气。最后我添加了一个意外事件生成器,为此我从一个重侧 t 分布中随机抽取一个数字,这些分布非常适合模拟罕见事件,并为预测添加了一些噪声。每个因素都有其自己的权重因子,我可以选择以使某些效果更重要或更不重要,并计算出一个总联合概率。

第三步:运行锦标赛

模拟器以两种模式运行,第一种模式可以确定最可能的赛程;模型在每一轮中模拟每场比赛数万次。在每一轮之后,它计算一个队伍赢得或输掉的频率,并计算一个确定性;赢得的比赛数与比赛总数的比率,这对于寻找潜在的爆冷非常重要。胜者晋级,形成新的对决,然后下一轮重复这个过程。

第二种模式计算冠军预测,这意味着不是每次比赛都运行数万次,而是运行数万次完整的赛程,然后计算每个队伍赢得全部比赛的概率。

步骤 4:分析结果

在进行了数万次模拟锦标赛之后,模型汇总了结果,然后留给我分析结果:

冠军概率(每个队伍赢得全部比赛的概率)

最终四强概率(谁将深入赛程)

最大爆冷机会(哪些排名较低的球队会实现惊人的胜利)

模型并非简单地猜测胜者,而是量化哪些队伍最有可能晋级或赢得冠军,我通过计算它们相对于代码运行的总模拟次数的成功率来得到一个百分比。

基础预测

那么,让我们进入有趣的部分,我如何为疯狂三月挑选?

冠军诞生

对于我找到的前四名冠军:杜克、佛罗里达、奥本和休斯顿。与赌场相比,这看起来相当合理!不出所料,这四支球队也有进入最终四强的最高概率,并且是进入锦标赛时排名最高的种子。如果你没有选择这四支球队中的任何一支作为你的冠军……你可能麻烦了!

决定赛程

一旦我有了完整的赛程和潜在冠军,工作才刚刚开始。今年会有哪些大冷门?这正是这些 Bracket 挑战的参与者所知道的地方。一方面,你希望押注那些胜者非常明确的比赛,并识别出几场可能胜负难分的比赛,然后掷骰子。毕竟,疯狂三月不仅仅是关于每次选择都正确,而是关于选择正确的惊喜。

挑选你的爆冷

因此,最困难的问题仍然是,你如何找到今年的灰姑娘故事?每个锦标赛,排名较低的球队都会给赛场带来惊喜,打破所有预测。但我能预测哪些队伍最有可能实现爆冷吗?

为了找到潜在的爆冷,我专注于两套队伍:

  1. 预计将击败排名更高的对手的队伍

我模型中的某些队伍预计将在比赛中获胜,而他们的对手排名更高。这些是爆冷取胜的绝佳选择!以下是一些来自我最终模拟的例子;

孟菲斯 [5] 对科罗拉多州立 [12] -> 科罗拉多州立 [12]

密西西比州立 [8] 对贝勒 [9] -> 贝勒 [9]

  1. 比赛预计会接近吗?

这更加棘手,最终将取决于运气。任何模型给出至少 40%机会的弱队比赛,我都会将其识别为潜在的意外。一个具体的良好例子是康涅狄格[8] 对俄克拉荷马[9] -> 康涅狄格[8],在我的模拟中这确实是一场真正的抛硬币比赛。选择哪些潜在的意外作为实际意外……这取决于抛硬币的结果。

最后,三月疯狂赛事依赖于混乱。你可以使用数据、概率和过去的表现来做出更明智的选择,但有时最大的意外只是纯粹的运气。明智地选择……

总结:我所学到的

这个项目是对三月疯狂赛事混乱中寻找秩序的深入探索,结合了我对数据科学的了解和大学篮球的不确定性。我建造这个项目时非常愉快,如果说我学到了什么,那就是你不需要代码来计算犯错的概率。犯错是 100%必然的。真正的问题是:你是否比其他人犯的错误更少?有许多不确定性我没有考虑到或者无法避免。意外会发生,灰姑娘的故事会展开,没有任何模型可以完全预测疯狂。

如果你想看看我的代码:github.com/jordydavelaar/MarchMadSim

注意事项:我开发的代码只是一个有趣的周末项目,这份文档的目的是教育性的,而不是财务建议。体育博彩风险很高,虽然数据可以提供洞察,但它不能预测未来。负责任地投注,并在需要时寻求帮助。拨打 1–800-GAMBLER。

致谢:在编写我的代码时,我使用了 LLM ChatGPT,用于预测的数据是付费获取的,并来自Kenpom

posted @ 2026-03-28 10:00  布客飞龙III  阅读(36)  评论(0)    收藏  举报