足球的数学建模(足球)

2020-11-27 02:08:05

今年秋天,我参加了乌普萨拉大学的足球数学建模课程。该课程由David Sumpter教授教授,我相信这是同类课程中的第一门学术课程。涵盖的主要主题是事件(在球动作上)的建模和分析,运动和俯仰控制(跟踪数据),球员评估以及比赛结果模拟。利物浦足球俱乐部首席数据科学家William Spearman和巴塞罗那足球俱乐部运动分析主管JavierFernández也进行了一些客座演讲。

使用的工具是带有NumPy,Pandas和Matplotlib的Python(使用Anaconda)。该课程涉及很多工作,尤其是作业,但我真的很喜欢它并且学到了很多东西。

我从今年夏天的Sumpter教授的推文中找到了关于这门课程的信息。课程听起来很有趣,所以我报名了。我有资格正式注册,但是即使您没有注册,几乎所有课程材料都可以免费获得。

既然我已经了解Python,并且之前参加过许多数学课程,并且像足球一样,我认为这门课程对我来说很容易。但是我错了。我以前使用过NumPy和Pandas,但仅在“计算投资”课程中使用过,因此对我来说大部分都是新的。而且,许多数学都在使用各种统计回归来使数据适合函数。您不需要了解如何使用它的细节,但这是我不熟悉的数学领域。但是,该课程对我来说是很多工作的最大原因是作业需要大量工作。

读了Sumpter教授的书《 Soccermatics》之后,我开始在Twitter上关注他。正如我在评论中所写的那样,这本书以一种非常有趣的方式将足球和数学结合在一起。除了开设本课程外,Sumpter教授还是瑞典斯德哥尔摩Hammarby团队的数据分析师。这很棒,因为他然后知道足球分析如何在实践中使用,而不仅仅是在理论上。 Sumpter教授也非常参与“跟踪之友”小组,该小组与课程有很多重叠之处。

大多数课程都使用几年前的季节和锦标赛的公开可用数据集。我使用了2018年世界杯,英超联赛和西甲2017/18赛季的数据,以及瑞典俱乐部哈马比(Hammarby)在2019年打的比赛。

游戏的事件数据是随球发生的任何事情。数据提供者Wyscout发出的事件示例包括:传球,传中,任意球,空中决斗,射门,掷界外球,角球,犯规。对于每个事件,都有一个带有亚秒级分辨率,开始和结束坐标,玩家,团队和比赛ID的时间戳。在我们观看的英超联赛赛季中,一场比赛中大约有1700场比赛,因此平均每三秒钟就有近一场比赛。

在课程中,重点是分析和可视化数据。 GitHub上有许多示例程序。在许多讲座中都有代码演练,解释了代码的工作原理。这在处理作业时非常有用。

第一周的第一个演讲将讲解如何加载和处理事件数据以及如何绘制动作。所使用的示例是在游戏中在球场上射门的位置。然后,彼得·麦基弗(Peter McKeever)在一场精彩的客座演讲中,一步一步地展示了如何对阿森纳在过去10个赛季中的进球差异进行专业的可视化分析。

下周将介绍行动的统计模型。预期目标(xG)就是一个例子。 xG值给出了从球场上给定位置射门将导致进球的可能性。例如,如果xG值为0.2(20%),则从该位置射出5张照片中的1张通常会导致进球。要建立xG模型,请从至少一个联赛赛季的所有射门事件数据开始。对于进球的每个镜头,事件数据均具有该镜头从何处获得的x和y坐标,以及是否导致目标。要构建模型,您需要理论上哪些因素会影响它。在讲座中,我们假设到目标的距离以及与目标的角度将影响目标是否得分。由于xG函数的结果应该是概率,因此可以使用二项式逻辑回归来找出最适合数据的参数。找到参数后,您将具有一个功能,可以在其中输入到球门的距离和到球门的角度,结果是从该位置射门成为球门的概率。

本节的第三部分讨论如何模拟匹配结果。桑普特教授首先(从事件数据中显示)在比赛的每一分钟都有可能进球。近年来,平均每场比赛有2.7个进球。可以将其建模为具有给定速率的泊松过程。通过将得分的实际数量与Poisson过程的得分进行比较,我们发现它们确实非常匹配。通过获取一个完整赛季的所有比赛结果,并对结果进行Poisson回归拟合,您可以得出每支球队在国内外的得分都比其他球队更高的得分。使用这些比率,可以很容易地模拟整个赛季并查看表中不同球队的排名。此博客文章是此方法的一个很好的写法。

事件数据记录与球位置有关的动作。另一方面,跟踪数据给出了整个比赛的球和所有球员每秒25次的位置。因此,与事件数据相比,有更多的数据要处理。利用跟踪数据,您可以在任何给定时刻找到玩家的速度和加速度。

您也可以制作用于音高控制的模型。如果球出现在给定的位置,哪个队将首先到达。在最简单的情况下,对于球场上的每个位置,您都可以测量哪个团队的球员最接近该点。如果绿色队中的一名球员离比赛较近,则绿色队“控制”球场的那部分。对球场上的所有点执行此操作,将为您提供绿色团队控制的空间以及其他团队控制的空间的地图。

一个更高级的模型将考虑每个球员的奔跑方向和速度,并使用概率模型确定第一个到达球的球员控制球的可能性。

本课程的最后一部分从评估单个玩家的贡献的模型开始。一个非常简单的模型是正负模型。进球时,球场上的球员会受到青睐;进球后,球员会受到处罚。但是,此模型存在许多问题。在足球比赛中,得分很少(与篮球相比),因此很难从中得出结论。此外,正负模型也无法说明对手的技能或队友的技能。

更好的方法是使用事件数据并查看各个方面,例如进球数,传球完成率,拦截,铲球等。这些不同方面可以组合成玩家雷达。它显示了给定球员在每个类别中的表现,与联盟中处于同一位置的其他球员相比,表现如何。此博客文章是此类分析(在讲座中提到)的一个很好的例子。

接下来,介绍了如何传球的马尔可夫模型,但是这些模型并不能深入说明球队和球员的表现。提出的下一个想法是拥有权链–您分析导致某个目标的所有事件,以便找到有助于该目标的行动。最后,给出了将音调控制与动作的预期值(具有最终得分目标)相结合的模型。还有一个关于如何分析和使用球员健康数据的讲座。

本课程的很大一部分是通过修改和编写程序来应用您所学到的知识来分析数据集。您可以选择Python或R。我的感觉是大多数人都使用Python,这可能是因为讲座中的所有示例都使用Python。 Sumpter教授还使用Anaconda进行交互式编码和变量检查。之前,我没有在Python中进行过多的交互式探索性编码,但是我非常喜欢它。变量检查特别好,特别是对于大型且深度嵌套的JSON结构。

前两个作业各10分,最后一个项目20分。我的成绩是40分中的31分(77.5%),我对此感到非常满意。

第一项任务是绘制并分析球员在最近的男女世界杯中的行为。这只是为了让我们前进,并不计入课程等级。

我记得我曾经以为Luka Modric在2018年世界杯上过得很好。因此,我在决赛中绘制了他的传球–法国对克罗地亚(4 – 2)。我还想看看他在克罗地亚是否是一名“重要”传球手,所以我计算了决赛中每位球员(两队)的所有传球。事实证明,他在克罗地亚获得了第二高的传球次数(77)。最多的通过(99)是Marcelo Brozovic。那场比赛的前六名传球手全部来自克罗地亚。法国的第一位选手是保罗·波格(Paul Pogba),成绩为34。克罗地亚获得了554张传球,法国获得了292张。因此,通行证也需要采取某种质量措施,以便他们讲述更多故事。

这项作业是关于评估传球的能力,以便确定擅长传球的球员。 Wyscout事件数据包含一个完整赛季中所有通过的数据,包括是否成功。但是,有些传球(例如进入最后三分之一)比其他传球(例如您自己的一半)难。因此,我们希望找到擅长传球的球员。

第一步是创建一个统计模型(例如逻辑回归),该模型根据传球在球场上的位置来预测传球成功。接下来,应该通过添加其他参数(例如长度或到对手目标的距离)来改进模型。使用此模型,然后应使用它来识别擅长进行艰难传球的球员。您应该提交可运行的,带注释的代码以及包含说明,图解和结果的两页文档。

最初对我来说,一个大问题是代码缓慢。该示例代码在所有遍次上使用了循环。但是当在一个完整的季节里跑步时,它会慢下来。看来这是由于在添加到大数据帧时内存分配问题引起的,最后我通过预先分配它来解决它。还有许多其他困难,主要与如何正确有效地使用NumPy和Pandas有关。我从Slack渠道获得了很多帮助,但是我仍然花很多时间在这项工作上。

在这里,我们应该使用Signality的比赛数据来分析2019年夏季以来的Hammarby游戏。首要任务是计算所有玩家的速度和加速度,并绘制四种情况下所有玩家的位置和速度。接下来,我们必须绘制15秒间隔内玩家的速度,加速度和距目标的距离。最后,我们必须按照导致进球的顺序绘制最接近队友和最接近对手的距离。

很难确定Signality使用的坐标-我找不到任何官方文档。查找目标得分的时间也很困难,并且很难将跟踪数据与事件同步。

最终项目分小组进行。不同的小组将从三个不同的角度分析俱乐部:下个赛季的俱乐部表现,球员表现和球员身体素质。我的小组(5人)基于西甲2017/2018赛季的比赛结果来分析皇家马德里。我们将Dixon-Coles模型用于匹配结果,这是对基本Poisson模型的调整。评分是基于书面报告以及向其他小组提供的10分钟演示文稿。除此之外,每个人还必须写一份文件,列出所用方法的优缺点。

我们小组合作很好。我们使用Zoom会议和Slack进行协调,并在我们之间划分了任务。

对于所有分配,都有示例代码开始。但是,通常需要进行更改(例如,通过成功而不是预期目标)。同样,不同的数据提供者对位置使用不同的坐标-有时是绝对数字,有时是间距尺寸的百分比。并以不同的起点为坐标。因此,始终需要进行一些转换。

关于这门课程,有很多事情值得喜欢。桑普特教授在解释材料方面做得很好。他也总是很开朗愉快地听。他还在瑞典最高分部的俱乐部哈马比(Hammarby)担任分析师的事实真是太好了。它确保他具有使用各种方法的实践经验。来自世界上一些领先的足球分析师的嘉宾演讲也令人印象深刻!

我还喜欢使用Anaconda和更探索性的编程方式,在其中您可以执行代码片段并查看结果。我真的很喜欢变量检查,但是却错过了PyCharm的一些更高级的功能和快捷方式(我怀疑我本可以以类似的方式使用PyCharm,但与Anaconda一起工作也很好)。我还从NumPy,Pandas和Matplotlib了解了更多,这很棒。

如果示例代码中包含有关如何有效使用Pandas数组操作的良好惯用示例,那就太好了。该课程是完全远程的,很棒。所有主要讲座都可以在课程页面上找到。但是,某些客座讲座和辅导课程却没有。由于我正在工作,并且只在业余时间参加课程,因此我并非总是可以参加直播节目,这意味着我错过了一些内容。如果以后可以观看所有内容,那就太好了。

我们的作业由Sumpter教授评分,但也有三人参加了本课程的同行评审。这是一个好主意-通过查看其他学生的代码并阅读他们的报告,我学到了很多东西。但是,并不是每个人都进行过同行评审-我总共只收到一个人的反馈。

乌普萨拉大学使用的系统称为Instructure,但不是很好。这非常令人困惑,而且很难知道在哪里寻找信息。例如,您应该做的同行评价显示得不够清晰(也许可以解释为什么我得到这么少的评价)。该课程在Instructure中的聊天也大部分人迹罕至。但是,有一些非常活跃的Slack聊天,主要是为那些没有正式参加此课程的人设置的。我被怪异的NumPy / Pandas问题困扰了好几次,当我在Slack中问时,我在几个小时内得到了非常有用的答案。

我报名参加该课程是因为我对足球和数学都感兴趣,所以听起来很合适。除了看足球之外,我(还是)喜欢自己玩。在工作中,我是“星期日同盟”(瑞典人的科彭)团队的一员。我还与朋友在星期天晚上玩。因此,我也对我从这样的课程中学到的知识感兴趣,这些课程可以在我玩游戏时应用。对我来说,最明显的教训是,如果您离目标很远(从预期目标的计算中得出),您将不太可能得分。

在我的儿子的足球队对我来说太先进之前,我还担任了很多年的教练。除了获得很多乐趣之外,玩自己的东西也非常谦卑。它使您意识到,从旁观的角度来看,一件容易的事情实际上是多么困难。

我也一直在寻找有关如何更好地理解战术的良好资源,以及如何更好地发挥作用的技巧。迈克尔·考克斯(Michael Cox)在英格兰和欧洲都写了两本关于游戏发展的非常好的书。丹·布朗克(Dan Blank)写了几本不错的书,其中包含有关如何更好发挥的技巧,例如《足球智商》。如果有人有其他好的资源可以推荐,我全神贯注。

我真的很喜欢《足球数学建模》,尽管事实证明这比我预期的要多得多(并且只值五个学分)。这么多工作的主要原因是分配是现实的任务-您必须使用真实的大型数据集才能从分析中获得见解。

这也是一个令人振奋的领域,有很多发展,Sumpter教授似乎与许多关键贡献者联系紧密。在最后的任务介绍之后,桑普特教授在推特上说他对结果印象深刻,如果有任何俱乐部需要数据分析人员,他们应该联系他以获得建议。因此,我认为Sumpter教授对此课程也感到满意!