开源项目如何量化进攻三区效率值?

wen 开源项目 1

本文目录导读:

开源项目如何量化进攻三区效率值?

  1. 先明确“进攻三区”的边界
  2. 核心量化维度
  3. 复合“进攻三区效率值”公式(推荐)
  4. 开源项目中的具体实现路径
  5. 常见陷阱与规范化建议
  6. 可直接参考的开源项目
  7. 总结一句话

在足球数据分析(尤其是开源项目如 socceraction、StatsBombPy、FBref 爬虫项目等)中,“进攻三区效率值”并不是一个单一的标准指标,而是一类用来衡量球队或球员在进攻三区(Attacking Third / Final Third)内将控球转化为实质性威胁能力的复合指标。

下面从定义、数据来源、计算框架、开源实现四个层面来说明如何量化。


先明确“进攻三区”的边界

开源项目中通常有两种划分:

划分方式 说明 常见项目
按场地长度三等分 距对方底线 1/3 区域 大多数
按 x 坐标阈值 x > 80(Opta 120 坐标系)或 x > 66.7% StatsBomb、Opta
按“前场 + 禁区前沿” 加入 zone 14 概念 战术类项目

在开源代码里一般写成:

attacking_third = df[df['x'] > 80]  # Opta 坐标

核心量化维度

一个合理的“进攻三区效率值”应包含以下四个子维度:

进入效率(Entry Efficiency)

衡量把球推进到进攻三区的成功率。

Entry_Efficiency = 成功进入三区次数 / 尝试进入三区次数
  • 分母:在中场区域的传球/带球尝试
  • 分子:接球点落在三区内的次数
  • 开源实现:socceraction 的 VAEP 中 pass 事件带 end_x

控球效率(Possession Efficiency)

进入三区后,控球是否稳定。

Possession_Eff = 三区内传球成功数 / 三区内传球总数

可加权:向前传球权重 > 回传权重。

威胁创造效率(Chance Creation Efficiency)

这是最核心的部分。

Threat_Eff = 三区内产生的 xG + 0.5 * xT / 三区内触球次数
  • xG(Expected Goals):射门质量
  • xT(Expected Threat):Karun Singh 提出,开源实现广泛
  • VAEP:socceraction 的核心,评估每次动作对得分概率的提升

转化效率(Conversion Efficiency)

Conversion_Eff = 三区内射门进球数 / 三区内射门数

复合“进攻三区效率值”公式(推荐)

开源项目常用加权和形式:

AT_Efficiency = w1 * Entry_Eff
              + w2 * Possession_Eff
              + w3 * Threat_Eff_norm
              + w4 * Conversion_Eff
  • 权重可通过 逻辑回归 / XGBoost 用历史进球数据拟合
  • Threat_Eff_norm 用 min-max 或 z-score 归一化
  • 常见权重示例(社区经验值):w1=0.2, w2=0.2, w3=0.4, w4=0.2

开源项目中的具体实现路径

方案 A:基于 StatsBomb 开放数据 + socceraction

import socceraction.spadl as spadl
import socceraction.vaep as vaep
# 1. 加载数据
actions = spadl.statsbomb.convert_to_actions(events, pitch_length=105)
# 2. 筛选进攻三区
at_actions = actions[actions['start_x'] > 70]
# 3. 计算 VAEP 值
values = vaep.value(actions, model)
# 4. 聚合
at_efficiency = at_actions.groupby('team')['vaep_value'].sum() / len(at_actions)

方案 B:基于 xT 的开源实现

  • 项目:karunsingh/Expected-Threat(GitHub)
  • 流程:把球场划成 16×12 网格 → 用马尔可夫链计算每格 xT → 每次三区内动作累加 xT 增量
at_xt = actions[actions['x'] > 80].groupby('player')['xt_delta'].sum()
at_xt_per_touch = at_xt / touches_in_at

方案 C:FBref + 自定义指标

FBref 提供 Att 3rd、Passes into Final Third、SCA、GCA 等字段,可直接组合:

AT_Eff = (SCA + 2*GCA + PassesIntoFinalThird) / 90

常见陷阱与规范化建议

问题 建议
样本量小(单场) 用滚动窗口或贝叶斯收缩
对手强度未调整 引入 opponent strength 权重
比分状态偏差 分领先/落后场景分别计算
位置偏差 按球员位置分组归一化
坐标系统一 统一到 105×68 或 120×80

可直接参考的开源项目

项目 用途
socceraction VAEP、xT、SPADL 数据模型
statsbombpy 拉取 StatsBomb 开放数据
mplsoccer 可视化三区热图
football-data(Karun Singh) xT 原始实现
FBref-scraper 抓取三区相关统计
understat-scraper xG 数据补充

总结一句话

进攻三区效率值 = 进入三区的成功率 × 三区内控球稳定性 × 每次触球创造的威胁(xT/VAEP)× 射门转化率,再用历史数据拟合权重,在 socceraction 或 xT 开源框架上即可实现。

如果你告诉我你用的是哪个开源项目(StatsBomb / Opta / Wyscout / FBref),我可以给出更具体的代码模板和字段映射。

抱歉,评论功能暂时关闭!