根据开源项目,Whoscored评分对比?

wen 开源项目 4

Whoscored评分对比:开源项目与官方评分的差异

Whoscored的评分体系是足球数据分析领域最常被引用的指标之一,但官方算法并未公开,开源社区为此做了不少逆向工程和替代实现,下面从几个维度做对比。

根据开源项目,Whoscored评分对比?


Whoscored官方评分体系回顾

Whoscored评分基于超过200项原始统计数据,通过专有算法加权计算,范围通常为 0 – 10.0:

事件类型 权重倾向
进球 极高正向
助攻 高正向
关键传球 中正向
抢断/拦截 中正向
失误导致丢球 高负向
犯规/黄牌 低负向
传球成功率 低权重(位置相关)

关键特点:

  • 位置相关权重(后卫与前锋的评分标准不同)
  • 有"基准分"(通常6.0左右),表现平平者接近该值
  • 算法不公开,只能通过回归拟合近似

主要开源项目对比

socceraction(ML-KULeuven / StatsBomb生态)

  • 定位:基于StatsBomb事件数据的动作价值评估框架
  • 方法:VAEP(Valuing Actions by Estimating Probabilities)
  • 输出:每动作的期望得分增量,而非4–10评分
  • 与Whoscored差异:
    • 不做"单场评分"直接映射
    • 更强调动作概率价值,学术性强
    • 可聚合成球员评分,但尺度不同

expected-Goals / xG模型类项目(如 understat 爬虫、football-xg)

  • 定位:单指标(xG/xA)估算
  • 与Whoscored差异:
    • Whoscored是综合评分,xG只是其中一个子项
    • 无法直接对比,但可作为评分的输入特征

FBref / Opta 衍生开源评分

  • 定位:基于Opta数据的替代评分
  • 与Whoscored差异:
    • 数据源不同(Opta vs Whoscored自有)
    • 评分尺度和权重不同,绝对值不可直接比较
    • 趋势和排名相关性较高(约0.7–0.85)

个人逆向工程项目(GitHub上多个 whoscored-scraper + 回归模型)

  • 定位:尝试复现Whoscored评分
  • 方法:
    • 爬取Whoscored原始事件数据
    • 用线性回归/GBDT拟合官方评分
  • 结果:
    • 单场评分 R² 约 0.85–0.92
    • 主要误差来自:位置权重未知、防守动作归属模糊、官方未公开的微调

kloppy + 自建评分

  • 定位:标准化事件数据解析
  • 与Whoscored差异:
    • kloppy本身不评分,只是数据管道
    • 需自行设计评分函数

关键差异总结

维度 Whoscored官方 开源项目
算法透明度 闭源 开源可复现
数据源 自有事件数据 StatsBomb/Opta/Wyscout等
评分范围 0–10.0 各异(VAEP为增量值)
位置权重 有,未公开 多数项目简化或手动设定
防守动作处理 精细 常被低估或简化
可解释性 低 高
与官方相关性 排名相关0.7–0.9,绝对值偏差大

实践建议

  1. 若目标是"接近Whoscored评分":

    • 用Whoscored自身事件数据 + GBDT回归,是当前最可行路径
    • 单纯用StatsBomb/Opta数据无法完全对齐
  2. 若目标是"更科学的球员评估":

    • 推荐 VAEP / xT(Expected Threat) 框架
    • 比Whoscored评分更可解释、更少位置偏见
  3. 若做对比研究:

    • 不要直接比较绝对值,应比较排名相关性(Spearman)
    • 注意样本:不同联赛、不同位置的评分偏差不同
  4. 注意事项:

    • Whoscored评分对进球/助攻过度敏感,对组织型中场和中后卫常偏低
    • 开源替代方案在防守贡献和无球跑动上仍普遍弱于官方

推荐开源项目清单

项目 用途 与Whoscored可比性
socceraction VAEP/xT评分 中(需转换尺度)
kloppy 事件数据标准化 低(仅数据层)
mplsoccer 可视化 无
statsbombpy 数据获取 低
football-xg-model xG估算 子项对比
GitHub whoscored-scraper 数据爬取 高(同源数据)

目前没有开源项目能完全复现Whoscored评分,但通过同源数据 + 回归拟合可达到较高相关性(排名层面),若追求方法论严谨性,VAEP类框架是更好的替代;若追求与Whoscored数值接近,只能用其自身数据做逆向工程。

需要我针对某个具体项目(如socceraction的VAEP实现)给出代码级对比或复现思路吗?

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