就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵ - 知乎

admin 21 0

就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵ - 知乎

  本文使用机器学习建模对 FIFA 2022世界杯结果进行了预测,赛后将其与真实结果进行比较,可以看出:小组赛到1/4决赛的预测准确率很高,半决赛和决赛的预测准确率为0,冠亚季军无一预测准确。 作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/tutorials/41 /> 本文地址:https://www.showmeai.tech/article-detail/400 声明:版权所有,转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩内容

  FIFA 2022世界杯已经落幕!关于哪支球队将赢得冠军的讨论,也有了明确答案。恭喜梅西!恭喜阿根廷!赛前 ShowMeAI 使用数据科学和机器学习的技能,开发一个基于历史数据的模型来预测 FIFA 2022 世界杯比赛结果。现在尘埃落定,让我们一起看看机器学习的预测与实际比赛结果,有多大大大大的差距吧!

  对比下方官网发布的赛程结果汇总, ShowMeAI 将机器学习的预测结果可视化后与之进行了比较。

  可以看到,从小组赛开始直到1/4决赛,机器学习模型预测的正确率都是比较高的。然而从半决赛开始,模型预测准确度急转直下,不论是参赛球队还是输赢判断都降为0,冠亚季军无一预测正确。

  但这也正是足球的魅力所在。正是竞技体育中存在的不确定性,让我们更深刻地感受到了奋斗、勇气、英雄和梦想的含义。(下文是赛前完整的建模过程,一起来看看吧!)

  我们先为机器学习建模准备数据,我们需要一些数据来体现各支球队的表现。我们本次用到的是FIFA 相关的数据: 1872到2022历史比赛数据 和 FIFA 排名数据,数据可以直接在Kaggle平台获取,也可以在ShowMeAI的百度网盘获取。实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [35]基于机器学习的2022世界杯预测实战 『FIFA 2022数据集』 ⭐ ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub

  哪些特征会影响足球比赛的胜负结果?这个开放的问题涉及很多特征维度:从选定的球员到当天球场的温度。我们简单一点处理,仅使用参与比赛的每个团队的过去统计数据构建一个数据集,优先考虑可以通过简单方式收集的可量化统计数据,例如进球数、平均排名、赢得的分数等。这些数据可以在我们上面谈到的两个数据集中整合得到。

  另外,我们仅分析 2018 之后的数据,这样我们可以更聚焦在本届世界杯备战这几年球队队员表现的变化。数据构建代码如下:

  最终的数据集结果如下: 对特征工程细节感兴趣的同学,可以阅读ShowMeAI的详解文章,学习理论知识与实战方法: 机器学习实战 | 机器学习特征工程最全解读

  准备好数据之后,我们就可以进行特征工程了,我们希望从原始数据中构建有预测能力的特征信息,我们这里采用了如下特征:世界杯周期和最近 5 场比赛的平均进球数。世界杯周期和最近 5 场比赛的平均失球数。每支球队之间的 FIFA 排名差异。国际足联排名每支球队在世界杯周期比赛和最近 5 场比赛中平均面对。从第一场比赛到现在,FIFA 排名的积分变化。FIFA 排名 5 场比赛前和现在的积分变化。世界杯周期和最近 5 场比赛的平均局分。根据世界杯周期和最近 5 场比赛中的排名位置加权平均赢得的比赛积分。表征比赛公正友好的类别变量字段值。

  我们选取以上特征的原因是:前两个特征用于量化一支球队的进攻力和防守力;国际足联在比赛中排名位置的差异是用来量化国际足联计算的两队实力的差异;平均排名用于分析球队面对的对手的实力;国际足联排名积分的变化是为了分析世界杯周期和最近5场比赛中球队能力的变化;球队的场均胜率量化球队的表现,而球队的场均胜负加权平均是根据球队所面对的对手的排名位次进行加权,以更精准分析球队的表现。

  在建模之前,我们对于数据做一点分析。比赛的结果有3种情况:赢、平、输,但作为 3 类分类问题进行建模,类别不均衡是一个很大的问题,且评估也会有点麻烦,我们做一点合并和调整:汇总到「主队赢」和「主队平/输」2种情况。 关于数据分析与可视化的详细教程,可以阅读ShowMeAI关于的数据分析系列教程与文章 图解数据分析:从入门到精通系列教程 Python数据分析 | 基于Pandas的数据可视化 Python数据分析 | Seaborn工具与数据可视化

  我们按照不同的结果(赢/输平)来对不同的特征维度进行分布分析,我们这里使用小提琴图。

  对于第一组数据,目前的特征中只有(两队排名的差值)对 target classes 有影响。因此,我们考虑创建更多差异特征,这类特征似乎是很强的特征信息,构建如下特征:进球差异。失球差异。球队进球与对手进球之间的差异。

  我们再次使用小提琴图分析。

  进球差异和失球差异特征对目标有很好的区分度。然而,球队进球与对手进球之间差异的特征没有影响。那我们再考虑:排名差异。世界杯周期和最近 5 场比赛的进球差异。在世界杯周期和最近 5 场比赛中出现净胜球。

  此外,我们还可以计算积分的差异、排名位置的差异以及排名所获得的积分差异。而且,为了衡量对手的水平,我们可以考虑:排名所造成的进球与失球之间的差异。

  我们用提琴图和箱线图对数据进行分析:

  积分差异、排名的进球差异、排名的积分差异是很好的特征。但是,我们有一些特征之间的相关度非常高,我们通过进行联合分布分析:

  分析相关性可以看出,我们选择其中的1组特征就好,这里我们选择了考虑全周期的版本。最后保留的特征有下面这些:球队排名差异()世界杯周期和过去 5 场比赛平均进球数之间的差异( / )世界杯周期和过去 5 场比赛平均失球数之间的差异( / )世界杯周期和最近 5 场比赛的平均排名差异( / )世界杯周期平均排名加权进球数之间的差异()世界杯周期和过去 5 场比赛中排名平均得分之间的差异( / )表示球赛是否公平友好的类别变量()

  这样,我们最终的数据集如下,包含后续机器学习模型所需的全部特征。

  关于机器学习建模与调优的相关知识与实战方法,可以查看ShowMeAI的系列教程与文章 机器学习****实战:手把手教你玩转机器学习系列 AI****垂直领域工具库速查表 | Scikit-Learn 速查表

  下面我们就可以开始建模了,我们使用两个模型 Random Forest 和 Gradient Boosting 来建模,进行效果对比。对于模型调参,我们使用 SkLearn 的 GridSearchCV 进行参数优化,挑选最佳模型。

  我们对随机森林也进行调参和优化:

  输出结果:

  我们使用混淆矩阵和ROC-AUC曲线进行了模型分析,结果是:

  对随机森林进行分析:

  随机森林模型的性能稍好,但结果上有一点过拟合。分析 Gradient Boosting 模型的 AUC-ROC,它风险较低,我们最终选择它。

  下面我们基于这个模型将预测世界杯结果。我们先使用了 Pandas的read_html 方法获取参加世界杯的球队名单。

  我们的模型对主队获胜和客队获胜/平局进行了分类。那这里面又怎么区分平局呢? 我们处理的办法如下,我们以两种形式进行预测:A 队 x B 队(模拟 1)B 队 x A 队(模拟 2)

  如果两个预测都是 A 队或 B 队获胜,则直接判定该队获胜。如果一次预测A队获胜,而第二次预测B队获胜,则判定结果为平局。下面我们构建代码来逐场模拟比赛,计算分数。

  结果是:

  上面的模型有一些结果很有趣,比如巴西和瑞士以及丹麦和法国之间的平局。

  在季后赛中,思路是一样的:

  结果如下:

  我们以图示的方式来展示我们的结果。

  模拟世界杯的结果如下,我们的模型预测巴西队获胜,决赛中对阵英格兰队的概率为 56%! 模型预测结果中最大的冷门是比利时击败德国和英格兰进入决赛,在四分之一决赛中淘汰法国。看到一些概率非常小的比赛很有趣,比如荷兰对阿根廷。

  在本篇内容中,ShowMeAI应用机器学习的方法,对世界杯参赛球队进行分析和建模,模拟与预测世界杯比赛结果。全篇内容包括详细的数据预处理、数据分析、特征工程、机器学习建模与模型调参优化,模型应用及结果可视化。当然,世界杯的有趣之处就在于,比赛场上瞬息万变,任何的结果都可能会发生,让我们一起跟随世界杯,欣赏每一场精彩的比赛吧! GridSearchCV Pandas的read_html 图解数据分析:从入门到精通系列教程:https://www.showmeai.tech/tutorials/33 机器学习实战:手把手教你玩转机器学习系列:https://www.showmeai.tech/tutorials/41 Python数据分析 | Seaborn工具与数据可视化:https://showmeai.tech/article-detail/151 AI垂直领域工具库速查表 | Scikit-Learn 速查表:https://www.showmeai.tech/article-detail/108 机器学习实战 | 机器学习特征工程最全解读:https://showmeai.tech/article-detail/208 数据分析实战系列 :https://www.showmeai.tech/tutorials/40 机器学习数据分析实战系列:https://www.showmeai.tech/tutorials/41 深度学习数据分析实战系列:https://www.showmeai.tech/tutorials/42 TensorFlow数据分析实战系列:https://www.showmeai.tech/tutorials/43 PyTorch数据分析实战系列:https://www.showmeai.tech/tutorials/44 NLP实战数据分析实战系列:https://www.showmeai.tech/tutorials/45 CV实战数据分析实战系列:https://www.showmeai.tech/tutorials/46 AI 面试题库系列:https://www.showmeai.tech/tutorials/48

  • 评论列表

留言评论