他山之石可以攻玉。
华为AI Gallery社区的技术贴。文章中将预测结果进行了二分类问题的处理(胜/平负两类)。
写这篇文章主要是分析其技术路线及其优缺点。
基于机器学习的欧洲杯赛事预测
由于2020年疫情的影响,欧洲杯延期到了今年举行,24支劲旅将在31天内,展开51场精彩对决。作为与奥运会、世界杯比肩的世界顶级三大体育赛事之一,四年一届的欧洲杯吸引了全世界球迷的目光。
欧足联为纪念欧洲杯60周年,本届赛事将采无主办国的巡回赛方式在欧洲的12个国家13个城市举行:丹麦哥本哈根、比利时布鲁塞尔、匈牙利布达佩斯、荷兰阿姆斯特丹、爱尔兰都柏林、罗马尼亚布加勒斯特、苏格兰格拉斯哥、西班牙毕尔巴鄂、阿塞拜疆巴库、德国慕尼黑、意大利罗马、俄罗斯圣彼得堡、英格兰伦敦。其中半决赛和决赛都将在伦敦的温布利球场举行。
本届比赛的参赛球队共24支,分成6个小组,每个小组前两名和4支成绩最好的第三名球队晋级16强,随后是淘汏赛,直至决出最后冠军。
分组情况如下:
A组:土耳其、意大利、威尔士、瑞士。 B组:丹麦、芬兰、比利时、俄罗斯。 C组:荷兰、乌克兰、奥地利、北马其顿。 D组:英格兰、克罗地亚、捷克、苏格兰。 E组:西班牙、瑞典、波兰、斯洛伐克。 F组:德国、法国、葡萄牙、匈牙利。 作为一名AI攻城狮和球迷,我采用了AI开发平台ModelArts 对各参赛队伍的实力情况进行分析,并结合数据挖掘、机器学习等人工智能技能来分析和预测欧洲杯赛果。
运行环境
进入Notebook后,请在本页面的右上角确认所选择的kernel是PySpark-2.3.2,选择的规格是CPU:2核 4GB
该规格下运行全部cell大约需要17分钟
Notebook内容概述
总体上,本notebook从数据处理、模型构建、赛果预测三部分进行介绍。
1 数据处理
本案例数据集为Kaggle从1872年到2021年5月28日的所有比赛数据,包括FIFA世界杯、世界杯预选赛、欧洲杯、友谊赛等,共 42105 场比赛的数据。
该数据集共包含9个特征:
- date:比赛日期
- home_team:主队名称
- away_team:客队名称
- home_score:主队分数(不含点球)
- away_score:客队分数(不含点球)
- tournament:比赛类型(FIFA世界杯、世界杯预选赛、欧洲杯、友谊赛等)
- city:比赛所在城市
- country:比赛所在国家或地区
- neutral:比赛是否在中立场地进行
预测足球赛事的输赢可以看做一个二分类问题(将平局看做负)。
本次预测标签为赛果(win_result),计算home_score和away_score的差值,若两者差值大于0,则赛果win_result为胜(1),反之为负(0)。
1.2 特征衍生
本小节将做特征进行衍生,主要分为5种衍生方式:
- 主队最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球(主队分数减去客队分数)均值。
- 主队与当前客队的最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球均值。
- 主队最近15、7、3、2、1年比赛的胜负情况,包括总场数、胜利场数、失败场数。
- 主客队历史上全部赛事的胜负情况,。
- 赛事发生的月份、季节。
1.2.1 主队最近5、2、1场比赛的胜负情况
当前主队在历史上的比赛场次有可能少于5场、2场、1场。
获取的12个衍生特征:
- num_5:最近5场比赛场次(可能出现不满5场的情况)
- win_num_5:最近5场胜场次
- lose_num_5:最近5场负场次
- diff_mean_5:最近5场得分差平均值
- num_2:最近2场比赛场次(可能出现不满2场的情况)
- win_num_2:最近2场胜场次
- lose_num_2:最近2场负场次
- diff_mean_2:最近2场得分差平均值
- num_1:最近1场比赛场次(可能出现不满2场的情况)
- win_num_1:最近1场胜场次
- lose_num_1:最近1场负场次
- diff_1:最近1场得分差平均值
1.2.2 主队与当前客队的最近5、2、1场比赛的胜负情况
主队与当前客队在历史上的比赛场次有可能少于5场、2场、1场。
获取的12个衍生特征:
- num_team_5:最近5场比赛场次(可能出现不满5场的情况)
- win_num_team_5:最近5场胜场次
- lose_num_team_5:最近5场负场次
- diff_mean_team_5:最近5场得分差平均值
- num_team_2:最近2场比赛场次(可能出现不满2场的情况)
- win_num_team_2:最近2场胜场次
- lose_num_team_2:最近2场负场次
- diff_mean_team_2:最近2场得分差平均值
- nu_team_1:最近1场比赛场次(可能出现不满1场的情况)
- win_nu_team_1:最近1场胜场次
- lose_num_team_1:最近1场负场次
- diff_team_1:最近1场得分差平均值
1.2.3 主队最近15、7、3、2、1年比赛的胜负情况
获取主队在过去的15年、7年、3年、2年、1年中的比赛场数、胜利场数、失败场数。
1.2.4 主队过去全部比赛的胜负情况
获取主客队在过去全部比赛的比赛场数、胜利场数、失败场数、胜率、净进球均值。
- home_num:当前主队作为主场的比赛场次
- home_win_num:当前主队作为主场的比赛胜场次
- home_lose_num:当前主队作为主场的比赛负场次
- home_win_rate:当前主队作为主场的胜率
- away_num:当前客队作为客场的比赛场次
- away_win_num:当前客队作为客场的比赛胜场次
- away_lose_num:当前客队作为客场的比赛负场次
- away_win_rate:当前客队作为客场的胜率
1.2.5 比赛发生的月份和季节
以上是华为AI Gallery作者通过比赛基本信息为特征构建的模型框架。
从用意来讲,该基本面方式进行足球胜平负预测的优缺点如下:
优点:通过基本面预测可以较为合理的找出双方之间的实力差。
缺点:完全按照基本面进行预测很难找出冷门,这种预测遇到强队VS弱队,必然是强队获胜的。
下期介绍该技术思路的数据预处理及其代码。