作为一位狂热的足球迷,看到这篇在今年KDD上获得应用赛道最佳奖的论文,实在想不出有什么理由不分享给大家。作为应用向,这篇论文总体上非常简单,但是它的一些结果和论证技巧却比较有趣。因为自己也是球迷,所以在解读这篇文章时会“显示地”表明自己的部分观点。
一个显而易见的事实是:对足球运动员在场上的行为进行评分是复杂且困难的。这个结论不光针对智能算法而言,对人来讲也是如此。我们几乎看不到任何针对足球比赛中球员行为的评分(例如梅西这脚射门该得多少分?C罗的这个点球该得多少分?),我们能看到的是关于球员在整场比赛后的综合得分。至于这个分是怎么来的,我相信它绝不是依据球员的每个行为得分综合而来,更可能的情况是靠专家的脑袋。所以这篇论文做的事情本身是复杂的。
复杂不代表没人做。作者在文中指出了之前一些研究存在的主要问题,当然这也就是这篇论文的核心动机了。
注:如果您是球迷朋友但不是计算机科学的研究者,请务必理解某些对人简单的行为对计算机而言是极其困难的。例如对于资深球迷,我相信只要给您足够的时间(并不需要太长),你总能设计一套对球员行为评分的方法,并且可能有点效果。但是对计算机程序而言,它很难理解球场上发生的一切,这需要大量当前AI领域的其它技术,例如行为识别、人员跟踪、场景理解等。然而这一切都非常不成熟。所以耐心看看当前最富成果的这篇论文吧。
针对这几个问题,这篇KDD应用赛道最佳论文诞生了!
名字挺玄乎的,其实简单来讲,作者定义了一种规则(名字就是SPADL)来描述球员的行为。在进一步介绍之前,先对文章使用的数据作一些说明。对于一场足球比赛,国外有一些公司(如Wyscout、Opta等)会通过比赛录像生成关于比赛的结构化事件数据。例如,一场比赛的第一个事件一定是“开场哨”;然后诸如“上半场10分10秒,中国队李可将球成功地传给了武磊”也是一个事件。那么一场比赛就是由很多这样的事件构成。不同的公司提供的事件数据的细节也是有区别的。例如Wyscout居然没有射门发生的位置信息!Opta能够细节到每个犯规的具体类型(手球、冲撞等)。
因为作者关心的是球员的行为,因此SPADL的作用就是把这些商业公司提供的“事件数据”转换成“球员的行为数据”。转换的结果就是每个行为由一个九元组构成:
StartTime: 行为开始时间;
EndTime: 行为结束时间;
StartLoc: 行为开始时所处位置(x,y);
EndLoc: 行为结束时所处位置(x,y);
Player: 执行行为的球员;
Team: 执行行为球员所属的球队(通常以“主队”或“客队”表示);
ActionType: 行为类型(如传球、射门、带球等);
BodyPart: 执行该行为的球员身体部位(如手、左脚、头等);
Result: 行为的结果,要么“成功”,要么“失败”。
所以实际上SPADL定义了球员行为的数据结构。
这部分仍然会很简单,只是公式会多点。令 a i \ a_i ai表示比赛中的第 i \ i i个行为, i \ i i也可以理解为时间。那么在任意时刻 i \ i i时,比赛状态定义为 S i = { a 0 , a 1 , . . . , a i } \ S_i = \left\{ a_0, a_1,...,a_i \right\} Si={a0,a1,...,ai}. 换言之,时刻 i \ i i时的状态就是之前所有行为构成的集合。作者认为,球员每个行为的目的都是两方面的:一方面是改变本队的进球概率(增加或降低);另一方面是改变本队的失球概率(增加或降低)。用 h \ h h表示主队,用 v \ v v表示客队,令 p s c o r e ( S i , h ) \ p_{score}(S_i,h) pscore(Si,h)表示主队在状态 S i \ S_i Si未来一小段时间内(可以定义为 S i \ S_i Si之后的数个行为,例如2或3)取得进球的概率;令 p c o n c e d e s ( S i , h ) \ p_{concedes}(S_i,h) pconcedes(Si,h)表示主队在状态 S i \ S_i Si未来一小段时间内失球的概率。类似的,定义 p s c o r e ( S i , v ) \ p_{score}(S_i,v) pscore(Si,v)和 p c o n c e d e s ( S i , v ) \ p_{concedes}(S_i,v) pconcedes(Si,v)分别表示客队在在状态 S i \ S_i Si未来一小段时间内进球和失球的概率。上述四个概率的具体求法将在下一节中介绍,这里可以假设对任意时刻 i \ i i,我们都能够得到这四个概率。
那么时刻 i \ i i时的行为 a i \ a_i ai对本队进球的贡献得分定义为该行为对进球概率的改变值:
(1) Δ P s c o r e ( a i , x ) = P s c o r e ( S i , x ) − P s c o r e ( S i − 1 , x ) . \Delta P_{score}(a_i,x)=P_{score}(S_i,x)-P_{score}(S_{i-1},x). \tag{1} ΔPscore(ai,x)=Pscore(Si,x)−Pscore(Si−1,x).(1)
同理,时刻 i \ i i时的行为 a i \ a_i ai对本队失球的贡献得分可定义为该行为对失球概率的改变值:
(2) Δ P c o n c e d e s ( a i , x ) = P c o n c e d e s ( S i , x ) − P c o n c e d e s ( S i − 1 , x ) . \Delta P_{concedes}(a_i,x)=P_{concedes}(S_i,x)-P_{concedes}(S_{i-1},x). \tag{2} ΔPconcedes(ai,x)=Pconcedes(Si,x)−Pconcedes(Si−1,x).(2)
其中 x \ x x取值为" h \ h h"(主队)或" v \ v v"(客队)。注意, Δ P s c o r e ( a i , x ) \ \Delta P_{score}(a_i,x) ΔPscore(ai,x)越高,表示行为 a i \ a_i ai对本队取得进球越有利,所以 Δ P s c o r e ( a i , x ) \ \Delta P_{score}(a_i,x) ΔPscore(ai,x)越高越好;而 Δ P c o n c e d e s ( a i , x ) \ \Delta P_{concedes}(a_i,x) ΔPconcedes(ai,x)越高,则表示行为 a i \ a_i ai对本队取得丢球越有利,因此 Δ P c o n c e d e s ( a i , x ) \ \Delta P_{concedes}(a_i,x) ΔPconcedes(ai,x)需要越低越好。基于此,定义行为 a i \ a_i ai的最终评价得分为:
(3) V ( a i , x ) = Δ P s c o r e ( a i , x ) − Δ P c o n c e d e s ( a i , x ) . V(a_i,x)=\Delta P_{score}(a_i,x) - \Delta P_{concedes}(a_i,x). \tag{3} V(ai,x)=ΔPscore(ai,x)−ΔPconcedes(ai,x).(3)
最后使用如下方法将球员的行为得分转换为球员的综合得分。记 A P T \ A^T_P APT为球员 P \ P P在一段时间 T \ T T内的所有行为集合,那么 P \ P P的综合得分为:
(4) r a t i n g ( p , x ) = 90 m ∑ a i ∈ A P T V ( a i , x ) rating(p,x)=\frac{90}{m}\sum_{a_i \in A^T_P }V(a_i,x) \tag{4} rating(p,x)=m90ai∈APT∑V(ai,x)(4)
其中 m \ m m为该球员上场时间(分钟)。简单来讲,公式(4)把球员在 m \ m m分钟的行为放大至90分钟。例如假设萨拉赫在上半场十分钟内射门了1次,并且该次射门的评分值为0.1,然后立马被拉莫斯搞翻下场,那么按照公式(4),萨拉赫在90分钟的表现相当于射门了9次,并且每次射门的评分都为0.1.这种做法显然比较粗暴了一点,但确实也很难有更好且简单的策略能够代替。
至此,我们已经得到了球员的每个行为得分的计算方法和球员综合得分的计算方法。
记 g o a l ( h ) \ goal(h) goal(h)表示主队进球; g o a l ( v ) \ goal(v) goal(v)表示客队进球; F i k = [ a i + 1 , a i + 2 , . . . , a i + k ] \ F_i^k = [a_{i+1}, a_{i+2}, ..., a_{i+k}] Fik=[ai+1,ai+2,...,ai+k]表示时刻 i i i后的连续 k k k个行为。那么第三节中的四个概率值可以表示如下:
(5) P s c o r e ( S i , h ) = P ( g o a l ( h ) ∈ F i k ∣ S i ) . P_{score}(S_i,h)=P(goal(h) \in F_i^k | S_i). \tag{5} Pscore(Si,h)=P(goal(h)∈Fik∣Si).(5)
(6) P c o n c e d e s ( S i , h ) = P ( g o a l ( v ) ∈ F i k ∣ S i ) . P_{concedes}(S_i,h)=P(goal(v) \in F_i^k | S_i). \tag{6} Pconcedes(Si,h)=P(goal(v)∈Fik∣Si).(6)
(7) P s c o r e ( S i , v ) = P ( g o a l ( v ) ∈ F i k ∣ S i ) . P_{score}(S_i,v)=P(goal(v) \in F_i^k | S_i). \tag{7} Pscore(Si,v)=P(goal(v)∈Fik∣Si).(7)
(8) P c o n c e d e s ( S i , v ) = P ( g o a l ( h ) ∈ F i k ∣ S i ) . P_{concedes}(S_i,v)=P(goal(h) \in F_i^k | S_i). \tag{8} Pconcedes(Si,v)=P(goal(h)∈Fik∣Si).(8)
以公式(5)和(6)为例进行说明。前文提到, P s c o r e ( S i , h ) \ P_{score}(S_i,h) Pscore(Si,h)表示主队在状态 S i \ S_i Si未来一小段时间内取得进球的概率。那么公式(5)将该概率定义为:由状态 S i \ S_i Si开始,主队在接下来的 k \ k k个行为内取得进球的概率。 k \ k k可以人为设定。那么 P c o n c e d e s ( S i , h ) \ P_{concedes}(S_i,h) Pconcedes(Si,h)就容易理解了,主队失球相当于客队进球,因此 P c o n c e d e s ( S i , h ) \ P_{concedes}(S_i,h) Pconcedes(Si,h)表示为客队在接下来的 k \ k k个行为内取得进球的概率。
接下来,作者使用机器学习的方法来训练模型,以使其在给定一组行为后能够预测未来一段时间内取得进球的概率(球迷朋友们可以跳过看下一节结果)。以预测 P s c o r e ( S i , h ) = P ( g o a l ( h ) ∈ F i k ∣ S i ) \ P_{score}(S_i,h)=P(goal(h) \in F_i^k | S_i) Pscore(Si,h)=P(goal(h)∈Fik∣Si)为例,其学习标签的构造比较简单,对于每个状态 S i \ S_i Si,如果在接下来的 k \ k k个行为内主队取得了进球,那么 S i \ S_i Si对应的标签为1,反之为0.而在构造 S i \ S_i Si的特征时,作者只考虑了前三个行为: [ a i − 2 , a i − 1 , a i ] \ [a_{i-2}, a_{i-1}, a_{i}] [ai−2,ai−1,ai]。而由这三个行为构成的特征集合可以分为三大类:
作者用的模型是CatBoost。
作者的实验数据相当丰富,从12/13赛季(五大联赛)至17/18赛季(你大概可以猜一下作者花了多久时间做的这篇paper)。
作者给出的第一个有趣的实验是2017年12月23号巴萨对皇马的比赛。作者用他们的模型计算了在92至93分钟巴萨球员的行为分值,如下图:
这图画的有点不好理解,慢慢看。首先(1)是布教授将球传给了梅西,这个行为得0分,当前总的进球概率为0.03。得0分的原因是这个球没有明显地将进攻推向对手腹地。而梅西在接球后选择将球回传给布教授,此时注意布教授移动到了(3)的位置。梅西的此次传球得分-0.01,因为他将球向离对方球门更远的方向传了过去,并且该区域很难直接对对方球门构成威胁。布教授随后将球准确的传给了跑动至(4)的梅西,此次传球得分0.01。然后牛逼的梅西登场了,首先是直接突破至位置(5)得分0.05,然后回传比达尔得分0.09,梅西的这两次操作直接将进球概率提升了0.14。而比达尔射门得分,自然获得了剩下的所有得分。作者的这个例子是想说明他的模型能够识别出梅西在这次进攻中扮演的重要作用,而其它模型则几乎完全会忽略掉,至少会忽略那次突破。
接着,作者比较了17至18赛季英超球员的进攻贡献。作者认为,传统的评价方法主要依靠进球数和助攻数,因此作者首先统计了17至18赛季英超球员场均进球、场均助攻和场均进球+助攻排名前十的球员,如下所示。
表中 R v a e p \ R_{vaep} Rvaep表示采用作者模型的情况下该球员的排名(参与排名的共有305位球员)。作者这里的观点就很直接了,有些球员的进球和助攻数据都不太好,但是对于球队至关重要,这在传统评价方法中根本无法量化。而作者的模型则能够发现(重点是可量化)德布劳内、阿扎尔和马赫雷斯等这类对球队至关重要的球员。另外,由作者模型得到的排名前十的球员身价总和是所有四个表中最高的!这真是一个非常厉害的论证点!
然后,作者用17-18的数据评估了1997年1月1号出生后的最有潜力的新星。作者把球员分成了两组:英超和西甲;法甲、荷甲和比利时联赛(不知道怎么叫…),见下表。
Mount击中你了吗?!
接着作者用他们的模型进一步比较球员的风格。他们说先以内马尔转会说起,比较了内马尔与其替代者登贝莱和库蒂尼奥的风格。
简单一句话,带球内马尔是王,其它好像就。。。
2018年夏天,C罗转会了,所以作者又比较了C罗和当时潜在的替代者拉什福德(现在都没去)和阿扎尔(现在去了)。
个人感觉这幅图太牛逼了,非常客观地刻画了近年这三位球员的风格。
接着作者又画了一幅评估行为数量和质量的图,如下。
作者直接用了“Messi is clearly in a class of his own”这样的评价。可以看出,梅西在行为的数量和质量上确实明显异于其他球员。C罗因为年龄原因,确实开始逐渐转为射门机器,这可能是导致他行为数量很低的重要原因。
博主是二十年的球迷了,喜欢一切带给我们足球美好记忆的球员,梅罗带给了大家多少无与伦比的回忆无需我多说,希望大家理智看球,珍惜每个奔跑在球场上的球员。也希望这种有意思的研究方向能够吸引更多人去参与。