第四部分 · 数据革命
期望进球 xG 与现代分析:冰球 xG 直接借自足球
上一课,Corsi 把「谁在压着谁打」这件事量出来了——它聪明地放弃了每场只有几个的稀有进球,改去数每场几十次的高频射门尝试,样本一下大了近二十倍。可我们在上一课的结尾,就已经把它的短板钉死在墙上了:Corsi 只会数「次数」,完全不看「质量」。一次门前无人盯防、几乎必进的空网机会,和一次蓝线外隔着三个人、几乎不可能进的乱射,在 Corsi 眼里是同一个「1」。这显然荒唐——这两脚对「进球」的贡献,一个八九成、一个百分之几,差了几十倍。所以数据革命的第二步,几乎是被 Corsi 这个短板逼着迈出来的:能不能给每一次射门,按它的位置、角度、类型,各算一个「进球概率」的带小数的分,把「射门质量」这一维也补上?能——这个分,就叫期望进球 xG。而最惊人的一点是:冰球用来算它的模型,几乎就是从足球那边直接借来的同一套。
一、缺口:Corsi 数得清次数,却看不见质量
先把上一课的结论收紧成一句话,因为这一课整个是被它逼出来的。Corsi 干了一件极漂亮的事:它绕开了稀有的进球,改数高频的射门尝试,于是「谁在压着谁打」这件事第一次被又快又稳地量了出来。但它为这份「高频、好数」付出了一个明确的代价——它把每一次射门尝试,都当成一个平等的「1」来数。
回想上一课那个刺眼的例子:一支球队疯狂在蓝线附近倒球、隔着人放冷枪,攒下一大堆低质量的射门尝试,Corsi% 很漂亮;可它们从不敢、也打不进那片门前最危险的甜点区(slot,第 07 课那片球门正前方的扇形)。另一支球队射门次数不多,但每一次都是精心打穿防线、送到门前的高质量机会。只看 Corsi,你会误判前者占优——因为 Corsi 数得清次数,却看不见质量。
那缺的是什么?缺的是给「一次射门到底有多可能进」定一个价。Corsi 已经把「次数」这一维做到了极好(高频、稳定、代理领地);现在要补的,是「质量」这一维。而补法其实呼之欲出——你在第 09 课门将那一课,已经偷偷见过它一次了:我们说门将的 GSAx,是「把每一脚射门先按它的期望进球定价,看你比一个平均门将多救了几个」。那个「期望进球」,就是 xG。这一课,我们把它正式请出来,从进攻方的角度、从头把它讲清楚。
二、xG 的定义:给每一脚射门,按处境算一个进球概率
xG 的想法朴素得近乎笨:既然我不知道这一脚会不会进,那我就去翻历史上千千万万脚「长得跟它一模一样」的射门,看其中有百分之多少进了。这个频率,就是这一脚的期望进球。它不在乎这一脚最后进没进,它只回答一个反事实问题:站在出杆那一刻,凭历史经验,这种机会通常能进多少。
关键词是「同类」。模型怎么定义「同类」?它把每一脚射门拆成一组特征(features),然后在历史数据里找特征相近的那一大堆射门,算它们的进球率。冰球 xG 常见的特征,你会发现和这门课前面讲的每一课都严丝合缝:
- 到球门的距离——越近,进球率越高(这是最强的单一因素)。这就是第 07 课「门前才是甜点」的量化。
- 射门角度——更准确地说,是从射门点看过去,球门两根门柱张开的那个夹角。正对球门时这个角很大、门「很宽」;被逼到底线附近,角度被压成一条缝、几乎射不进。这正是第 09 课门将「靠几何压小你能看到的那片网」的另一面——进攻方要的就是把出杆点挪到张角大的地方。
- 射门类型——腕射(wrist shot)、击球(slap shot)、抢射(one-timer)等,历史进球率不同。门前的快速抢射往往质量最高。
- 是不是补射 / 反击(rush)——这两类最能拉高 xG。补射(rebound)之所以致命,是因为门将刚扑完一脚、重心和站位全乱、来不及重新封角(回扣第 09 课门将的几何被打散);反击 rush 之所以致命,是因为防线还没落位、门前是失衡的空当(回扣第 06 课攻防转换、第 07 课的 odd-man rush)。同一个位置,一次冷静的阵地射门 xG 可能 0.08,但如果它是一次补射或快攻,xG 会跳到零点一几甚至更高。
- 面前的防守人数 / 是否被遮挡——身前每多一个能封堵、能遮挡门将视线的身体,进球率的账要重新算(第 07 课「制造混乱、遮挡视线」正是在人为抬高 xG)。
把这些特征喂给一个在历史射门数据上训练好的概率模型(通常是逻辑回归之类,本质就是「给定这些特征,进球的概率是多少」),它就吐回一个 0 到 1 的数。这个数,就是这一脚射门的诚实的价。
三、本课的心脏:冰球的 xG,几乎就是足球那套 xG
现在讲这一课真正的重头戏,也是整个「球类的逻辑」系列在数据这条脊柱上最直白的一个证据。你如果读过姊妹课 《足球的逻辑》第 12 课 · xG,把上面那段冰球 xG 的定义和它一对照,会有一种强烈到近乎离奇的既视感——因为它们几乎就是同一个模型:都是「给每一脚射门,按位置、角度、距离、类型、防守,用历史进球频率算一个 0~1 的概率」。冰球的 xG 不是「受足球启发」这么客气,它在建模思路、特征选择、甚至连「xG」这个名字上,都是从足球那边直接搬过来的。
为什么偏偏是足球和冰球共享同一套模型?因为在这个系列的「连续 ↔ 离散」谱上,它俩是紧挨着的一对双子:都连续(没有天然的回合边界,是一条不停的河流)、都低分(进球稀有、比分里全是运气)、都是争空间(第 03 课就说透了:冰球本质是足球的空间之争被搬到冰面、开到最高速)。既然两项运动的底层结构如此同构——都是「在连续流动中,稀有地把球送进一个框」——那么用来给「一次射门机会有多好」定价的数学,自然也就长得一模一样。冰球借走足球的 xG,不是偷懒,是因为要解决的根本就是同一个问题。
五者用的是同一个数学:期望值(概率 × 价值,再求和)。如果你想看清这个工具本身——什么是概率、什么是期望、为什么求和能把噪声抹平——可以回到《数学的逻辑》第 13 课(概率)。而如果你想看清「结果(比分)是嘈杂的价格、底层质量(xG)是更稳的价值,短期看价格、长期看价值」这套思路在别处怎么用,去读 《市场的逻辑》——一支「xG 远高于实际进球」的球队,就像一只「价值远高于价格」被暂时低估的股票,均值回归站在它这边。五项运动的「数据革命」,说到底就是把这一行数学,认真地、彻底地用在了运动上。
四、xG 在冰球里怎么用:给球员、门将、球队都定价
xG 一旦算出来,它最大的力量在于可加性——单脚的 xG 可以往上加,加成球员、门将、球队三个层面的诚实评价:
- 球员的 xG 贡献——把一名前锋在场上打出(以及助攻创造)的所有射门的 xG 加起来,衡量他持续地创造了多少高质量机会。这比数「他进了几个球」稳得多——进球稀有、方差大,但「他创造的机会质量」是更可重复的东西。一个赛季 xG 很高却进球偏少的球员,往往只是运气差,下一段大概率会兑现(正是「价值 vs 比分」)。
- 门将的 GSAx(扑救超越期望)——这就是第 09 课埋下的那条线,现在闭合了。把门将面对的所有射门的 xG 加起来(=对手按这些机会的质量「本该」进多少),减去他实际放进多少:GSAx = (面对射门的 xG 之和) − (实际失球数)。为正 = 你扑出了本该进的球(超神);为负 = 连该扑的都没扑住。它用 xG 把「球有多难」除掉了——防守稀烂、天天面对高危射的门将,save% 天生更低却可能更强,GSAx 会还他公道。进攻方用 xG 给射门定价,门将用同一把 xG 尺子反过来给扑救定价,两边共享同一个思想。
- 球队的 xG 差(xG diff / xGF%)——把全队打出的 xG 减去对手打出的 xG。它是 Corsi 的升级版:Corsi 告诉你「谁在压着谁打(领地)」,xG 差进一步告诉你「谁在制造更危险的压制(质量)」。一支 Corsi 高但 xG 差平平的球队,就是那种「射门多但都是外围垃圾」的队;一支 Corsi 一般但 xG 差很正的球队,才是真正在门前造威胁。
- 高危射区地图(heat map)——把每个位置的历史 xG 画成一张热力图,你会看到球门正前方那片甜点区 slot 烫得发红,越往外围、越靠底线越冷。这张图,就是前面所有战术课(cycling 拉散防守、门前制造混乱、rush 打失衡)的共同目标的可视化:一切进攻,归根结底都是想把出杆点挪进那片红区。
五、诚实:xG 是工具,不是真理(冰球尤其要谨慎)
把 xG 捧上天,会犯和「迷信 Corsi」一样的错——只是错得更精致。xG 是个模型,模型就有边界和噪声,必须说清楚,而且有几条在冰球里比在足球里更要紧:
- 它不知道「这一脚射得多好」。标准 xG 看的是「出杆那一刻的处境」(位置、角度、类型、防守),但大多不知道这一脚射得多刁——同样的位置,顶级射手能抽穿门将手套的死角,普通球员可能直接打在门将胸口,基础 xG 给的却是同一个数。(有射门后加入球速、落点的进阶版,但那是另一套。)
- 冰球样本比足球还少、还吵。这是冰球 xG 独有的、必须加倍强调的谨慎:冰球每场进球更少、单脚 xG 更低(大量低质量外围射门),而且冰面上有遮挡、折射、门前混战、补射链这些足球少见、又极难量化的东西。冰球的一次进球,常常是从门前一团乱麻里被捅进去的(第 07 课),这种「混乱价值」标准 xG 抓得很吃力。所以冰球 xG 的噪声,通常比足球更大——更要看大样本和趋势,别拿它给单场、单脚下结论。
- 模型之间不一致。不同厂商特征不同、训练数据不同,同一脚射门的 xG 会差零点零几(见上方数据小注)。没有「唯一正确的 xG」。
- 它只覆盖「射门」。一次精彩的拦截、一个化解险情的回追、一记造成对方失误的逼抢、一次没形成射门的关键传球,标准 xG 都不计分。它量的是「射门机会的质量」,不是「比赛的全部价值」。
所以正确的态度是:xG 是一把比 Corsi 又进了一步、但依然会抖动的尺子。Corsi 把「谁在压着谁打」从玄学里拽出来,xG 再把「这些压制有多危险」也拽了出来——这是巨大的进步;但它不是上帝视角的真理。会用它的人,用它看趋势和大样本,尤其在冰球里,更要克制,别拿它给一场球、一个球员盖棺定论。
六、动手:拖动射门点,看 xG 怎么变
下面这块进攻区,让你亲手拨动 xG 的核心变量——射门的位置(决定到球门的距离和角度),以及它是不是补射 / 反击。拖动那个白色的射门点,注意从它射向球门时,两根门柱张开的那个夹角怎么变:正对球门、离得近(门前甜点区 slot),夹角大、xG 高;往边上挪、往蓝线退,夹角被压扁、xG 暴跌。再点「类型」按钮切到补射或反击,看同一个位置的 xG 怎么被抬高——因为门将来不及重新封角、或防线还没落位。
玩几下你会得到一个比任何公式都牢的直觉:xG 几乎全由「那个张角」「距离」和「射门类型」决定,而这门课前面讲的所有进攻战术,归根结底就是把出杆的那一刻挪到「张角大、距离近、且最好是补射 / 反击」的处境去。cycling(第 07 课)是为了把防守拉散、松出门前的高 xG 空当;门前制造混乱(第 07 课)是为了创造补射、遮挡门将;打 rush(第 06、07 课)是为了在防线落位前偷一个高 xG 的失衡机会。而门将(第 09 课)则反着来:靠几何把你逼到张角小、距离远的低 xG 处境,并尽量不给你补射的第二下。整门课的攻防拉锯,第一次有了一把统一的、带小数的计分尺。
七、常见误解
- 误解:xG 高的一方就该赢、xG 输了就是打得差。 (澄清:xG 是长期更可靠的信号,单场照样高方差——尤其冰球进球稀少、还有门将偷系列赛这种事(第 09 课)。看趋势,别拿单场 xG 下结论。)
- 误解:既然有了 xG,Corsi 就没用了、可以扔掉。 (澄清:两者是互补的两维。Corsi 数「次数 / 领地」,xG 加上「质量」;Corsi 样本更大、更稳,xG 更贴近真实威胁但噪声也更大。成熟的分析两个一起看——Corsi 高但 xG 差平平=外围垃圾射门多,Corsi 一般但 xG 差正=真在门前造威胁。)
- 误解:冰球 xG 是冰球界自己独立发明的一套东西。 (澄清:恰恰相反,这是本课的核心——冰球 xG 在建模思路、特征、甚至名字上都几乎直接借自足球,因为两者是「连续、低分、争空间」的双子,要解决的是同一个问题。这正是整个系列数据革命同源最直白的证据。)
- 误解:xG 知道这一脚射得有多好。 (澄清:基础 xG 只看出杆那一刻的处境,不知道你随后是抽死角还是打在门将胸口;同样位置,球星和普通球员是同一个 xG。射门质量是另一套 post-shot xG。)
- 误解:存在唯一正确的 xG 值,而且冰球 xG 和足球一样可靠。 (澄清:不同模型特征、训练数据不同,同一脚会差零点零几;且冰球样本更少、遮挡 / 折射 / 门前混战更难量化,噪声通常比足球更大。xG 是估计,不是测量,冰球里尤其要谨慎。)