德甲比赛事实技巧:使用 AWS 上的机器学习量化足球运动员的素质

源节点: 1195672

在足球中,就像在许多运动中一样,关于个人球员的讨论一直是乐趣的一部分。 “谁是最佳得分手?” 或“谁是防御者之王?” 是粉丝们常年争论的问题,而社交媒体放大了这场争论。 想想看,仅 Erling Haaland、Robert Lewandowski 和 Thomas Müller 在 Instagram 上就拥有 50 万粉丝。 许多球迷都知道莱万多夫斯基和哈兰德等明星球员创造的令人难以置信的统计数据,但这样的故事只是冰山一角。

考虑到德甲有近 600 名球员签订了合同,每支球队都有自己的冠军——球员被介绍为在比赛中发挥特定技能。 以 FC Augsburg 的 Michael Gregoritsch 为例。 在撰写本文时(第 21 场比赛),他在 21/22 赛季打进了 1.7 个进球,这在谈论伟大射手的谈话中不会让任何人提及他。 但让我们仔细看看:如果您累积 Gregoritsch 本赛季所有得分机会的预期进球 (xGoals) 值,您得到的数字是 194。 这意味着他的射门得分超过了 3.2%,比预期多进了 1.6 个球。 相比之下,莱万多夫斯基仅高出 7 个进球(+XNUMX%)。 多么壮举! 显然,格雷戈里奇为奥格斯堡带来了一项特殊技能。

那么,我们如何揭示所有关于德甲球员、他们的技能以及对比赛结果的影响的隐藏故事呢? 输入由 AWS 提供支持的名为 Skill 的新德甲比赛事实。 技能是通过 DFL 和 AWS 的深入分析开发的,以识别具有四个特定类别技能的球员:发起人、终结者、球获胜者和短跑运动员。 这篇文章深入探讨了这四项技能,并讨论了它们是如何在 AWS 基础设施上实施的。

另一个有趣的点是,直到现在,德甲比赛事实都是相互独立开发的。 Skill 是第一个德甲比赛事实,它使用基于构建的流式架构实时组合多个德甲比赛事实的输出 亚马逊托管流媒体卡夫卡 (亚马逊 MSK).

引发剂

发起者是执行大量有价值的第一次和第二次助攻的球员。 为了识别和量化这些助攻的价值,我们引入了新的指标 xAssist。 它是通过跟踪射门前的最后一次和第二次传球来计算的,并将相应的 xGoals 值分配给这些动作。 一个好的发起人通过以高难度成功完成传球,在充满挑战的情况下创造机会。 为了评估完成给定通行证的难度,我们使用现有的 通行证 模型。 在这个指标中,我们特意排除了传中和任意球,以关注那些通过公开比赛的精准助攻创造得分机会的球员。

技能分数使用以下公式计算:

让我们以当前的 Rank 1 发起人 Thomas Müller 为例。 在撰写本文时(第 9.23 场比赛),他收集了 21 的 xAssist 值,这意味着他为下一个射门的球员的传球产生了 9.23 的总 xGoal 值。 每 90 分钟的 xAssist 比率为 0.46。 这可以从他本赛季的总上场时间来计算,这是非常了不起的——超过 1,804 分钟的上场时间。 作为第二次助攻,他的总价值为 3.80,即每 0.19 分钟 90 次助攻。 总的来说,他的 38 次首次助攻中有 58 次是高难度传球。 而作为第二次助攻,他的11次传球中有28次也是高难度传球。 凭借这些统计数据,托马斯·穆勒 (Thomas Müller) 将自己一跃成为发起人排名的第一名。 为了比较,下表列出了当前前三名的值。

.. x辅助 xAssistper90 x第二辅助 x第二助手per90 困难通行证 困难通过辅助2 最后的比分
托马斯·穆勒 – 排名 1 9.23 0.46 3.80 0.18 38 11 0.948
Serge Gnabry – 等级 2 3.94 0.25 2.54 0.16 15 11 0.516
Florian Wirtz – 等级 3 6.41 0.37 2.45 0.14 21 1 0.510

整理

终结者是指非常擅长进球的球员。 他有很高的射门效率,并在他的上场时间完成了许多目标。 该技能基于实际得分及其与预期目标(xGoals)的差异。 这使我们能够评估机会是否被充分利用。 让我们假设两名前锋的进球数相同。 他们同样强大吗? 还是其中一个在轻松的情况下得分,而另一个在具有挑战性的情况下完成? 对于射门效率,可以回答这个问题:如果进球数超过 xGoals 的数量,则表明一名球员表现出色,并且是比平均水平更高效的射手。 通过这种差异的大小,我们可以量化射手的效率超过平均水平的程度。

技能分数使用以下公式计算:

对于终结者,我们更关注目标。 下表详细介绍了当前的前三名。

.. 理想中 目标每 90 射击效率 最后的比分
罗伯特·莱万多夫斯基 – 排名 1 24 1.14 1.55 0.813
Erling Haaland – 排名 2 16 1.18 5.32 0.811
Patrik Schick – 等级 3 18 1.10 4.27 0.802

罗伯特·莱万多夫斯基本赛季打进了 24 个进球,这让他位居榜首。 虽然哈兰德的射门效率更高,但哈兰德排名第一还不够,因为我们给进球赋予了更高的权重。 这表明莱万多夫斯基从助攻的质量和数量上都获得了很高的收益,尽管他的得分非常好。 帕特里克·希克比哈兰德多进了两个球,但每 90 分钟的进球率更低,射门效率更低。

短跑运动员

短跑运动员具有达到最高速度的身体能力,并且比其他人更经常这样做。 为此,我们评估了球员当前赛季所有比赛的平均最高速度,并包括每 90 分钟的冲刺频率以及其他指标。 如果玩家以 4.0 m/s 的最小速度跑步超过两秒,并且在此期间达到至少 6.3 m/s 的峰值速度,则计为冲刺。 sprint 的持续时间以第一次和最后一次达到 6.3 m/s 阈值之间的时间为特征,并且需要至少 1 秒长才能被确认。 只有在速度再次低于 4.0 m/s 阈值后,才能认为发生了新的冲刺。

技能分数使用以下公式计算:

该公式使我们能够评估我们可以查看球员冲刺的多种方式,并且比仅仅查看这些球员产生的最高速度更进一步。 例如,Jeremiah St. Juste 目前的赛季记录为 36.65 公里/小时。 但是,如果我们查看他的冲刺频率,我们会发现他平均每场比赛只冲刺 36.08 次! 另一方面,Alphonso Davies 可能没有 St. Juste(最高时速 31 公里/小时)那么快,但每场比赛进行了惊人的 XNUMX 次冲刺! 他以更高的平均速度更频繁地冲刺,为他的球队在球场上打开了空间。

球赢家

具有这种能力的球员会导致对方球队丢球,无论是总数还是与他的上场时间相关。 他赢得了大量的地面和空中对决,他经常抢断或拦截球,为自己创造了一个安全的控球,并为他的球队提供了反击的可能性。

技能分数使用以下公式计算:

在撰写本文时,第一名球得主是达尼洛·苏亚雷斯(Danilo Soares)。 他总共有235次防守对决。 在 235 场防守对决中,他赢了 75 场,在对峙中击败了对手。 本赛季他在防守后卫的位置上拦截了51个球,让他的胜率约为32%。 平均而言,他每 2.4 分钟拦截 90 个球。

技能示例

Skill Bundesliga Match Fact 让我们能够揭示德甲球员的能力和优势。 技能排名将球员置于聚光灯下,这些球员以前在进球等传统统计数据的排名中可能会被忽视。 例如,以迈克尔·格雷戈里奇(Michael Gregoritsch)这样的球员为例。 格雷戈里奇是奥格斯堡足球俱乐部的前锋,截至第 21 场比赛,他在射手排名中排名第六。到目前为止,他已经打进了 663 个进球,这不会让他在任何进球排名中名列前茅。 然而,他只用了 97 分钟就做到了! 其中一个进球是第 XNUMX 分钟的扳平比分,帮助奥格斯堡避免了客场输给柏林的比赛。

通过Skill Bundesliga Match Fact,我们还可以认识每个球员的各种素质。 这方面的一个例子是多特蒙德球星埃尔林哈兰德,他也获得了短跑运动员和终结者的徽章,目前在德甲短跑运动员中排名第六。

所有这些指标都基于球员运动数据、目标相关数据、球动作相关数据和传球相关数据。 我们在数据管道中处理这些信息,并根据技能提取必要的相关统计数据,使我们能够实时计算所有指标的发展。 上述许多统计数据都是按在球场上的时间标准化的,考虑到那些上场时间很少但在上场时表现惊人的球员。 指标的组合和权重组合成一个分数。 结果是所有玩家在四位玩家技能上的排名。 排名前 10 的球员将获得技能徽章,以帮助球迷快速识别他们为球队带来的卓越品质。

实施和架构

迄今为止开发的德甲比赛事实相互独立,仅依赖于位置和事件数据的摄取,以及它们自己的计算。 但是,新的德甲比赛事实技能改变了这一点,它根据现有比赛事实产生的数据计算技能排名,例如 xGoals 或 xPass。 一个事件的结果,可能是一个令人难以置信的进球,进入的机会很小,可能会对终结者的技能排名产生重大影响。 因此,我们构建了一个架构,每当底层数据有更新时,它总是提供最新的技能排名。 为实现技能的实时更新,我们使用 Amazon MSK(一种适用于 Apache Kafka 的托管 AWS 服务)作为数据流和消息传递解决方案。 这样,不同的德甲比赛事实可以实时传达最新事件和更新。

Skill 的底层架构由四个主要部分组成:

  • An Amazon Aurora 无服务器集群 存储现有匹配事实的所有输出。 例如,这包括自引入德甲比赛事实以来发生的每次传球(例如 xPass、球员、预期接球手)或射门(xGoal、球员、进球)的数据。
  • 一个中央 AWS Lambda 函数将德甲比赛事实输出写入 Aurora 数据库,并通知其他组件有更新。
  • 每个单独技能的 Lambda 函数计算技能排名。 只要有新数据可用于计算特定技能,这些函数就会运行。
  • Amazon MSK Kafka 集群充当所有这些组件之间的通信中心点。

下图说明了此工作流程。 每当有事件更新(例如更新的射门事件的 xGoals 值)时,每个德甲比赛事实都会立即向 Kafka 发送事件消息。 每当德甲比赛事实发送此类消息并将此数据写入数据库时​​,中央调度员 Lambda 函数就会自动触发。 然后它通过 Kafka 将包含新数据的另一条消息发送回 Kafka,该消息用作个人技能计算功能的触发器。 这些函数使用来自此触发事件以及底层 Aurora 集群的数据来计算和发布最新的技能排名。 如需更深入地了解此项目中 Amazon MSK 的使用情况,请参阅 Set Piece Threat 博文。

总结

在这篇文章中,我们展示了新的德甲比赛事实技能如何能够在四个核心球员维度上客观地比较德甲球员,实时构建和结合以前独立的德甲比赛事实。 这使评论员和球迷都可以发现以前未被注意到的球员能力,并阐明各种德甲球员所扮演的角色。

新的德甲比赛事实是德甲足球专家和 AWS 数据科学家深入分析的结果,旨在根据客观表现数据对足球运动员的素质进行提炼和分类。 球员技能徽章显示在德甲应用程序的阵容和球员详细信息页面上。 在广播中,玩家技能通过 数据故事查找器 并在球员替换和球员进入各自的前 10 名排名时以视觉方式向球迷展示。

我们希望您喜欢这个全新的德甲比赛实况,并希望它为您提供对比赛的新见解。 要了解有关 AWS 与德甲之间合作关系的更多信息,请访问 AWS 上的德甲联赛!


作者简介

西蒙·罗尔夫斯 作为中场出战288场德甲联赛,打进41球,为德国国家队出场26次。 目前,罗尔夫斯在拜耳 04 勒沃库森担任体育总监,负责监督和发展职业球员名单、球探部门和俱乐部的青年发展。 西蒙还在 Bundesliga.com 上撰写每周专栏,介绍由 AWS 提供支持的最新德甲比赛事实

卢克·菲格多 是 AWS 专业服务团队的高级体育技术专家。 他与球员、俱乐部、联赛和媒体公司(如德甲和一级方程式)合作,帮助他们使用机器学习利用数据讲述故事。 在业余时间,他喜欢学习所有关于思维以及心理学、经济学和人工智能之间的交叉点的知识。

帕斯卡尔·库纳 是 AWS 专业服务团队的一名云应用程序开发人员。 他与各行各业的客户合作,帮助他们通过应用程序开发、DevOps 和基础设施实现业务成果。 他对运动充满热情,业余时间喜欢打篮球和踢足球。

塔雷克·哈舍米 是 AWS 专业服务部的一名顾问。 他的技能和专业领域包括应用程序开发、数据科学、机器学习和大数据。 他常驻汉堡,支持客户在云中开发数据驱动的应用程序。 在加入 AWS 之前,他还是航空和电信等多个行业的顾问。 他热衷于帮助客户进行数据/人工智能云之旅。

雅库布·米哈尔奇克 是 Sportec Solutions AG 的数据科学家。 几年前,他选择了数学而不是踢足球,因为他得出的结论是,他在后者方面做得不够好。 现在,他通过应用机器学习方法在他的职业生涯中结合了这两种激情,以更好地了解这款精美的游戏。 在业余时间,他仍然喜欢踢七人制足球、看犯罪电影和听电影音乐。

哈维尔·波韦达-潘特 是 AWS 专业服务团队中 EMEA 体育客户的数据科学家。 他使观众体育领域的客户能够创新并利用他们的数据,通过机器学习和数据科学提供高质量的用户和球迷体验。 他在业余时间追随对各种运动、音乐和人工智能的热情。

时间戳记:

更多来自 AWS机器学习