分析方法说明(v1 · Poisson + Dixon-Coles)
PitchWise v1 的预测引擎基于经典的足球进球分布模型。本页解释模型怎么算的、数据从哪来、置信度怎么解读,便于你在阅读 AI 解读时知道它在说什么。
核心模型
模型对每个比赛分别估计两队的预期进球 λ,再用独立泊松 + Dixon-Coles 低分修正展开 0–10 × 0–10 的比分概率网格,归一化后得到三路胜率。
λ_home = homeAttack × awayDefense × leagueBaseline × (1 + 0.18) # 主场加成
λ_away = awayAttack × homeDefense × leagueBaseline
P(i, j) = τ(i, j, ρ) × Poisson(i; λ_home) × Poisson(j; λ_away)
P(home) = Σ_{i > j} P(i, j)
P(draw) = Σ_{i == j} P(i, j)
P(away) = Σ_{i < j} P(i, j)ρ ≈ -0.08,τ 是 Dixon-Coles 对 (0,0)/(0,1)/(1,0)/(1,1) 四个低分格的修正项。 该模型自 1997 年以来在英超历年回测中始终优于规则引擎(log-loss、Brier、top-1 三项指标都更好)。
球队强度来源
- 攻击强度:该队场均进球 ÷ 联赛场均进球。
- 防守强度:该队场均失球 ÷ 联赛场均失球。越低越强。
- 伤停折扣:深度档调用时,主队 / 客队伤停影响(0–1)作为 attack × (1 - impact × 0.35) 的乘子注入。
- 联赛基准:默认采用当前积分榜的联赛整体场均进球;若某队样本不足则退回 1.35 的中性值。
5 维因子(基础 / 标准档)
模型的输出是概率,但每个分析页都会附 5 个可解释因子,把概率背后的来源拆给你看:
- Poisson 模型(权重 0.45)—— 上面那张表算出来的三路概率 + λ。
- 近期状态(0.18)—— 近 5 场胜率对比。
- 历史交锋(0.12)—— 近 N 次对决的主 / 平 / 客分布。
- 市场赔率(0.15)—— 多家机构平均隐含概率,作为对照信号。
- 伤停折扣(0.10)—— 当前深度档的伤停注入对模型输出的修正方向。
深度档的额外维度
- 伤停名单:BBC + Guardian RSS 抓到的最新伤停 + 12 条本地缓存,按 impact_score 加权注入模型。
- 新闻动态:自动分类为 injury / transfer / tactics / personal / team_news / match_report。
- 个人 / 家庭事件:通过关键词命中(妻子 / 家庭 / 婚变 / 助教 等)识别,可能影响出场状态。
- 综合解读:模型摘要 + 伤停名单 + 新闻摘要合并输出
deep_summary。
置信度怎么算
置信度 = top1 概率 − top2 概率,再 anchor 到 0.50。最大概率与次大概率差距越大,模型越笃定。 区间固定在 [40%, 92%],避免极端值;这是"模型确定度"的代理指标,不是"真实命中率"。
回测与校准
运行 npm run backtest 会同时跑两路:
- 真实回测:遍历
status=finished的真实比赛,计算 log-loss / Brier / top-1。 - 合成回测:从当前强度表采样 96 场合成比赛(Poisson 自洽),用来检验实现是否与模型理论一致。
合成回测典型输出:log-loss ≈ 0.86、Brier ≈ 0.50、top-1 ≈ 62%;三路校准偏差 < 3 个百分点,说明模型实现是正确的。
数据来源
- BBC Sport RSS(
feeds.bbci.co.uk/sport/football/rss.xml) - The Guardian Football RSS(
theguardian.com/football/rss) - 伤停:默认 12 条 demo;通过
PITCHWISE_INJURY_FEED_URL可对接任意 JSON 端点。 - 赔率:演示数据;接入 Pinnacle / Betfair 后可显著提升 market factor 准确度。
已知局限与不做的事
- 演示用 32 队 / 4 联赛,真实部署需要接入完整赛事数据源。
- 球员级 xG / 位置数据尚未进入模型。
- ELO 增量、天气、赛程密度、主帅倾向等高维特征尚未接入。
- 本工具不提供任何博彩服务,所有概率与建议仅供赛事分析与观点交流,不构成投注建议。
- 评论接口已内置敏感词白名单 + 黑名单,禁止出现盘口推荐 / 投注链接 / 博彩引流。