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

wen 开源项目 3

本文目录导读:

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

  1. 先定义清楚三个要素
  2. 核心公式(推荐起步版)
  3. 分维度拆解(更细粒度,适合开源实现)
  4. 开源实现路径(以 socceraction 为例)
  5. 归一化与可视化
  6. 关键陷阱与建议
  7. 推荐参考项目

在足球数据分析(尤其是开源项目如 socceractionStatsBombPyFBref 相关工具)中,“进攻三区效率值”并不是一个单一的标准指标,而是一个需要自定义口径的复合指标,下面给出一套可直接落地的量化框架。

先定义清楚三个要素

要素 常见定义 备注
进攻三区 对方球门 1/3 区域(x ≥ 2/3 场地长度) StatsBomb 用 x ≥ 80(120 制);Opta 用 x ≥ 66.7%
效率 产出 / 投入 产出=进球、xG、射门;投入=触球、传球、推进次数
可归一化到 0–100 或每90分钟 便于跨球员/球队比较

核心公式(推荐起步版)

进攻三区效率值 = (0.6·xG_created + 0.3·xA + 0.1·Goals) 
               / (FinalThird_Touches + Progressive_Passes_into_FT)
               × 90  (归一化到每90分钟)

更简化的版本:

# 伪代码
ft_efficiency = (xg + xa) / final_third_touches
ft_efficiency_p90 = ft_efficiency * 90 / minutes

分维度拆解(更细粒度,适合开源实现)

传球效率

FT_PassEff = 成功进入三区的传球 / 尝试进入三区的传球
FT_ProgPass_p90 = 推进传球进三区次数 / 90

持球/推进效率

FT_CarryEff = 三区内成功带球推进距离 / 三区触球次数

终结效率

FT_ShotEff = 三区内射门数 / 三区触球数
FT_xG_per_shot = 三区总xG / 三区射门数

综合效率(加权)

FTE = w1·(xG+xA)/FT_touches 
    + w2·FT_PassEff 
    + w3·FT_CarryEff 
    + w4·FT_ShotEff

权重可用 PCA熵权法 从数据中学习,避免拍脑袋。

开源实现路径(以 socceraction 为例)

from socceraction.spadl import statsbomb as sb
from socceraction.xthreat import ExpectedThreat
# 1. 加载数据
games = sb.convert_to_actions(events, home_team_id)
# 2. 计算 xT(威胁值)
xt = ExpectedThreat()
xt.fit(actions)  # 训练转移矩阵
# 3. 筛选进攻三区动作
ft_actions = actions[actions['end_x'] >= 80]  # StatsBomb 120 制
# 4. 计算效率
ft_touches = len(ft_actions)
xg = ft_actions['xG'].sum()
efficiency = xg / ft_touches if ft_touches else 0

归一化与可视化

# z-score 标准化
fte_z = (fte - fte.mean()) / fte.std()
# 映射到 0-100
fte_score = 100 * (fte - fte.min()) / (fte.max() - fte.min())

可视化建议:

  • 散点图:X=三区触球数,Y=效率值,颜色=球员位置
  • 雷达图:传球/带球/射门/创造四个维度

关键陷阱与建议

  1. 样本量:三区触球 < 30 的球员效率值不稳定,需做 贝叶斯收缩(向均值回归)。
  2. 对手强度:需按对手防守强度调权,否则刷弱队数据虚高。
  3. 位置偏差:边锋和中锋的三区触球性质不同,建议分位置标准化
  4. 公开数据源限制:StatsBomb 免费数据有限,FBref 只有汇总值,需要权衡。
  5. 可复现性:把权重、阈值写成配置文件(YAML),方便社区 review。

推荐参考项目

项目 用途
socceraction xT、VAEP 计算框架
mplsoccer 场地可视化
StatsBombPy 免费事件数据
FBref + soccerdata 抓取汇总统计
kloppy 多源数据统一接口

如果你告诉我你用的是哪套数据(StatsBomb / Opta / Wyscout)和目标(评价球员还是球队),我可以给出具体的字段映射 + 可运行代码

上一篇综合开源项目,阵型克制关系有规律吗?

下一篇当前分类已是最新一篇

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