射門特徵擴充與射門發生機率的兩種Model
Mbappé 在禁區邊接球,防守球員逼近。他先作勢,再用一步甩開對手,然後起腳。FBRef 為這記射門給出 0.5 的 xG。整個過程中最考功夫的部分,即甩開防守球員、把一個受阻的角度變成乾淨的射門,在傳統 xG 裏沒有任何數字。
2025 年下半年有兩篇文章從不同方向修補這個缺口。第一篇是 Shriyansh Singh 發表於 Journal of High School Science 的 Improving expected Goals (xG) models: methods, results, and novel extensions,走的是加深射門特徵的路:用 StatsBomb 的 freeze frame 資料計算防守球員對射門角度的遮擋,再加入比分、時間與起腳前的傳球數。第二篇是 Wharton Sports Analytics and Business Initiative 的研究筆記 Beyond Expected Goals: A Possession-Aware View of Chance Creation in Soccer,作者 Jonathan Pipping、Tianshu Feng 與 Paul Sabin,走的是改變問題定義的路:不只問「這記射門會否入球」,還問「下一秒會否有射門」,再把兩個機率相乘。
本文將兩篇並讀。前半隨 Singh 的流程走一遍特徵工程、共線性檢查與 SHAP 結果;後半隨 Wharton 的框架走一遍 xS、xG 與控球回合聚合;最後比較兩者的資料要求、目標與限制。
本文重點
兩篇文章的起點相同:只用距離與角度的 xG,漏掉太多決定入球機率的資訊。分歧在於漏掉的是甚麼。
Singh 認為漏掉的是射門那一刻的情境,包括防守球員站位、門將位置、比分與起腳前的組織。他的做法是在 StatsBomb 事件數據上加入約十個特徵,訓練一個 XGBoost,在約 8.7 萬記射門上取得 AUC 0.8776 與 Brier 0.0686。
Wharton 團隊認為漏掉的是射門之前的一切。沒有起腳的高威脅時刻在 xG 是零,門前混戰中連續補射的 xG 相加又可以超過 1。他們的 xG+ 在每一秒同時估計「會否射門」與「射門會否入球」,再在控球回合層面以「至少入一球」的方式聚合。用三個英超球季的追蹤數據測試,xG+ 在預測球隊入球與球員來季表現上都勝過標準 xG。
一、同一個起點,兩種診斷
傳統 xG 把每記射門變成一個 0 至 1 的機率。它比入球數穩定,因為把機會質素與運氣分開。但主流公開模型依賴的主要是距離、角度與射門類型。Singh 在引言引述 Mead 等人(2023)的說法:這限制了模型的準確度與通用性,對踢法非典型的球隊尤其如此。
Wharton 的研究筆記從另一端出發,列出兩個結構性盲點。第一,xG 以射門為條件。只差半步的傳中、最後一刻被截斷的倒三角、球員製造出空間卻遲了半秒起腳,全部因為沒有射門而記為零。第二,門前混戰時幾記補射各自有 xG,相加後可能超過一個控球回合最多只能入一球的上限。
兩種診斷不互相排斥。第一種是在同一條問題上加入資訊;第二種是改換問題。這個分別直接決定了兩篇文章需要哪些資料。
二、路線一:xG-NextGen 的特徵工程
Singh 使用 StatsBomb 公開事件數據。流程先把每場的事件 JSON 與陣容 JSON 合併,以陣容判斷主客,逐事件追蹤比分以得出起腳前的入球差,再把 freeze frame(射門一刻所有可見球員的位置)攤平為一張表。清洗後約 87,000 記射門,入球約 11%,另有約 110 萬個 freeze frame 座標點。
特徵分五組。
空間:射門點到球門的距離與角度。
比賽情境:是否主場、入球差及其絕對值、比賽分鐘。
起腳前的組織:前五個事件中的傳球數(n_prev_passes),以及助攻類型,分為傳中、直線傳球與其他三類。
射門與球員:身體部位、射門類型(運動戰、罰球等)與球員位置,全部 one-hot 編碼。
防守壓力:三個由 freeze frame 計算的指標。defenders_in_5m 是射手 5 米內非隊友球員的數目;gk_distance 是射手到最近對方門將的距離;angular_pressure 是本文提出的新指標。
angular_pressure 的定義是:對每個 5 米內的防守球員,計算該球員偏離「射門點至球門」直線的角度;凡落在 ±20° 之內的,按 exp(−距離) 加進一個總和。防守球員愈正面擋在射門線上、離射手愈近,數值愈高。作者指出這與 StatsBomb 的 Keeper Cone 概念對應。
模型為 XGBoost,100 棵樹,reg_alpha 0.1,reg_lambda 1,未作大規模調參。訓練與測試按 70/30 分層切分,測試集約 2.6 萬記射門。並未在 XGBoost 原生輸出之上再做 Platt 或 isotonic 校準。
三、共線性:作者先自行檢查
這篇文章有一節大多數 xG 研究省略的內容:特徵之間的共線性診斷。
Pearson 相關顯示幾何特徵之間高度相關。距離與門將距離 r = 0.834,距離與角度 r = −0.743,角度與門將距離 r = −0.568。防守壓力與幾何之間有中度相關,5 米內防守球員數與門將距離 r = −0.411。
VIF 進一步量化冗餘:距離 18.6、門將距離 14.2,都超過慣用的 10;角度 4.7、分鐘 4.05、5 米內防守球員數 3.55,其餘特徵都在 3.5 以下。
作者做了兩項穩健性檢查。第一,置換重要度顯示,當距離、門將距離與角度各自被移除時,AUC 分別下跌 0.032、0.037 與 0.103,三者同時在模型內亦沒有互相抵消。第二,因為入球差與進攻組織可能相關,作者把 n_prev_passes 對 goal_difference 殘差化後重新訓練,AUC 由 0.8776 變為 0.8781,幾乎不變。
結論是共線性存在,尤其在幾何變項之間,但對預測表現與 SHAP 歸因的實際影響有限。作者同時承認高共線性可能放大 SHAP 數值,並列為限制。下一節的 SHAP 份額,宜帶着這一點去讀。
四、結果與 SHAP:入球差佔三成
測試集上 AUC-ROC 0.8776、Brier 0.0686,10 格校準曲線貼近對角線,作者報告校準 R² 為 0.98。
SHAP 的平均絕對值份額如下:
特徵 | 平均絕對 SHAP | 佔比 |
goal_difference | 1.049 | 31.03% |
angle | 0.821 | 24.30% |
angular_pressure | 0.322 | 9.52% |
gk_distance | 0.318 | 9.40% |
distance | 0.294 | 8.69% |
minute | 0.211 | 6.25% |
defenders_in_5m | 0.171 | 5.05% |
n_prev_passes | 0.084 | 2.50% |
is_home | 0.067 | 1.97% |
abs_goal_diff | 0.043 | 1.28% |
方向與直覺一致:距離愈遠 xG 愈低,角度愈闊 xG 愈高,門將離射手愈遠 xG 愈高,angular_pressure 與 defenders_in_5m 愈高 xG 愈低。兩個新的壓力特徵合計約 19%,與距離屬同一量級。傳球數與主場只佔 2% 至 3%。
入球差排第一,佔 31%,是這張表最需要停下來看的地方。作者的解釋是比賽狀態系統性改變射門的類型,落後的球隊會嘗試更多投機性的射門。這個解釋成立,但 goal_difference 的份額高於角度與距離的總和,在 xG 文獻中並不常見。讀者至少要記住兩點:第三節已指出 SHAP 數值可能被共線性放大;而且作者亦提到,射門特徵會隨賽事而異,公開數據的賽事組成與職業球會使用的全聯賽數據不同。
比較方式也要分開看。文章把 0.878 與 Mead 等人(2023)的約 0.80、Iapteff 等人(2025)七個特徵的 Bayesian 模型的 0.801 並列,並在統計評估一節寫道,這個 AUC 高於任何現有業界 xG 模型。但這幾個數字來自不同數據集與不同射門樣本,文章沒有在同一份資料上做「有新特徵」與「無新特徵」的對照。新特徵有幫助是合理的推斷,幅度有多大則未有受控實驗支持。
文章附帶一個 Streamlit 應用:單記射門模式以滑桿輸入所有特徵並顯示 SHAP waterfall;批量模式上載 CSV,若含實際結果,會回報 Brier 與 AUC。程式碼與應用均已公開。
五、路線二:xG+ 把一個機率拆成兩個
Wharton 團隊不加入特徵,而是改變問題。
在控球回合的每一個時刻 t,定義兩個量。xS_t 是下一秒會出現射門的機率;xG_t 是假如在 t 起腳、該射門會入球的機率。兩者相乘:
xG+_t = xS_t × xG_t
要得出整個控球回合的入球期望,方法不是把每秒的 xG+ 相加,而是用「至少入一球」的形式:
xG+_poss = 1 − Π_t (1 − xG+_t)
這條式子達到三個效果。沒有起腳但威脅很高的時刻,因為 xS 高、xG 也高,會被計入價值;門前混戰的連續補射,因為聚合方式有上限 1,不會累加至超過一球;全場 xG+ 的總和仍可解讀為入球期望。
回到開首的 Mbappé 例子。在他甩開防守球員之前,xS 與 xG 都不高;甩開之後,射門空間出現,兩個機率同時上升。xG+ 在機會被創造出來的那一刻已經上升,毋須等到起腳才記錄。
資料方面,作者使用 Gradient Sports 的追蹤加事件數據,涵蓋英超 2022 至 2025 三個球季。xS 與 xG 分別訓練一個梯度提升樹。特徵包括足球的距離、角度、高度與速度,門將位置,以及最近五名進攻與防守球員的距離與方位摘要。
兩個模型都由距離主導。一個「空門」代理變項對 xG 幫助較大;足球速度較高時 xS 上升,因為快球通常觸發射門,但 xG 略降,因為倉卒的射門較難轉化。這與一般對倉卒起腳的直覺相符。
六、球隊層面:按比賽日交叉驗證
xG+ 是否比 xG 更能預測入球?作者用以比賽日為折的交叉驗證回答。每一折內,把 xG、xS 與 xG+ 分別轉換成球季、球隊與對手效應,以一個簡單的混合效應 Poisson 模型擬合,再在樣本外預測入球。
結果是 xG+ 的均方誤差低於標準 xG(包括直接相加的版本)與單獨的 xS。作者另外指出,無論用「至少入一球」聚合,還是用每回合取最大值的簡化代理,都勝過把每記射門獨立相加,原因是前兩者更貼近進攻實際展開的方式。
這種驗證方式與隨機切分不同:每次留出一整個比賽日的所有場次作測試,比隨機留出射門更接近實際使用時的情況。
七、球員層面:創造射門比把握射門穩定
球員評估的關鍵是哪些能力會延續到下一季。作者比較三個「高於預期」殘差的逐年相關:
指標 | 逐年相關 |
入球高於 xG(goals over expected) | 0.12 |
射門高於 xS(shots over expected) | 0.63 |
xG+ | 0.35 |
「射門高於預期」,即球員在相同情境下比模型預期更常成功起腳,逐年相關為 0.63;「入球高於預期」則只有 0.12。散點圖上,位處橫軸右方的球員(穩定創造射門)來季仍在右方;縱軸大幅向上的球員(射門轉化高於預期)來季往往回落。
作者把這解讀為:射門創造是可重複的能力,射門轉化的逐年延續性則很低。xG+ 把兩者合成一個數字,逐年相關 0.35,落在兩者之間,同時捕捉 Mbappé 與 Haaland 一類球員持續帶來的價值。
限制方面,作者列出追蹤數據的噪音、xS 只用一秒視窗,以及各隊曝光時間不同。未來方向包括以序列模型估計 xS、加入階層式球員與球隊效應,以及建立防守端的鏡像指標,量度壓制對手創造機會的能力。
八、兩篇並讀
xG-NextGen(Singh) | xG+(Wharton) | |
修補方向 | 加深射門一刻的特徵 | 改問題:先估計會否射門 |
資料 | StatsBomb 公開事件數據加 freeze frame | Gradient Sports 追蹤加事件數據,英超三季 |
樣本單位 | 射門(約 8.7 萬) | 控球回合中每一秒 |
模型 | 一個 XGBoost | 兩個梯度提升樹(xS、xG) |
主要新特徵 | angular_pressure、gk_distance、goal_difference | 足球速度與高度、最近五名球員摘要、空門代理 |
評估 | AUC 0.8776、Brier 0.0686,70/30 分層切分 | 按比賽日交叉驗證的 Poisson MSE;逐年相關 |
可移植性 | 任何含 freeze frame 的事件數據 | 需要逐幀追蹤數據 |
第一條路線的門檻低。StatsBomb 公開數據免費,freeze frame 已足夠計算 angular_pressure 一類指標,任何人都能複現。但代價是它只能改良「射門之後」的評估,起腳前的價值仍然是零,補射累加的問題也依然存在。
第二條路線解決的是結構問題,但需要逐幀追蹤數據。這類資料目前主要在職業球會與供應商手上,公開研究難以複製。Wharton 團隊也承認一秒視窗與追蹤噪音的限制。
兩篇文章有一個共通點:都把校準放在與區分能力同等的位置。Singh 報告 Brier 與校準曲線;Wharton 以 Poisson 樣本外誤差而非分類指標評估。對下游應用而言,一個 AUC 高但機率偏高或偏低的 xG,會系統性地誤導球隊評估。
對球隊評估與賽果預測的啟示
Wharton 那張逐年相關表對預測系統有直接意義。入球高於 xG 的逐年相關只有 0.12,射門高於 xS 卻有 0.63。用「實際入球減 xG」去判斷一支球隊或一名球員是否把握力強,多數時候是在讀噪音;用射門創造能力去判斷,訊號穩定得多。
AIP 系統 建立球隊評估時,採用同一個原則。除了射門質素一類指標,模型會把機會創造與推進類訊號納入特徵,並以樣本外、按時間切分的數據檢驗校準,再與市場隱含機率對照。Singh 那篇文章提醒的另一點也適用:不同數據集之間的 AUC 不能直接比較,模型改動是否有效,要在同一份資料上做受控對照。若差距不足,或關鍵數據缺失,系統不會產生推介。
總結:加資訊,或換問題
兩篇文章對 xG 的修補各有清晰的適用範圍。Singh 的 xG-NextGen 示範了在公開事件數據上,用 freeze frame 計算防守遮擋與門將位置,可以得到校準良好的模型;它同時示範了共線性診斷應該怎樣做,以及跨研究比較 AUC 的限制。Wharton 的 xG+ 把射門創造帶入同一個機率框架,用追蹤數據在球隊與球員兩個層面都取得比標準 xG 更穩定的訊號,代價是資料門檻高。
概念 | 內容 | 章節 |
兩種診斷 | 特徵太薄,或以射門為條件本身有問題 | 一 |
angular_pressure | 5 米內、±20° 之內的防守球員按 exp(−距離) 加總 | 二 |
共線性 | 距離 VIF 18.6、門將距離 14.2;殘差化後 AUC 幾乎不變 | 三 |
xG-NextGen 結果 | AUC 0.8776、Brier 0.0686;goal_difference 佔 SHAP 31% | 四 |
xG+ 定義 | xS × xG;控球回合用 1 − Π(1 − xG+) 聚合 | 五 |
球隊預測 | 按比賽日交叉驗證,xG+ 的 Poisson MSE 低於 xG 與 xS | 六 |
球員穩定性 | 逐年相關:入球高於 xG 0.12、射門高於 xS 0.63、xG+ 0.35 | 七 |
資料門檻 | 事件加 freeze frame,對比逐幀追蹤 | 八 |
Reference
S. Singh. Improving expected Goals (xG) models: methods, results, and novel extensions. Journal of High School Science 9(3): 475–485, 2025. https://doi.org/10.64336/001c.144180
J. Pipping, T. Feng, P. Sabin. Beyond Expected Goals: A Possession-Aware View of Chance Creation in Soccer. Wharton Sports Analytics and Business Initiative Research Note, 13 Nov 2025. https://wsb.wharton.upenn.edu/beyond-expected-goals/
J. Pipping-Gamón, T. Feng, P. Sabin. Beyond Expected Goals: A Probabilistic Framework for Shot Occurrences in Soccer. arXiv:2512.00203. https://arxiv.org/abs/2512.00203
J. Mead, A. O'Hare, P. McMenemy. Expected goals in football: Improving model performance and demonstrating value. PLoS ONE 18(4): e0282295, 2023.
L. Iapteff, S. Le Coz, M. Rioland, T. Houde, C. Carling, F. Imbach. Toward interpretable expected goals modeling using Bayesian mixed models. Frontiers in Sports and Active Living 7: 1504362, 2025.
StatsBomb Open Data. https://github.com/statsbomb/open-data
xG-NextGen 程式碼與 Streamlit 應用。https://github.com/mobambas/xG-NextGen
原文 Paper




