第九章:如何评估足球模型?命中率、LogLoss、Brier
足球预测模型实战

第九章:如何评估足球模型?命中率、LogLoss、Brier

足球模型评估不能只看命中率。真正重要的是概率是否可信、长期是否稳定、回测是否没有泄漏。

2026-05-16浏览 0
正文:17px

很多人训练完足球模型,第一句话就会问:

命中率多少?

这个问题可以问,但远远不够。

如果一个模型预测 100 场比赛,猜中 56 场,命中率是:

56 / 100 = 56%

看起来还不错。

但这并不能说明模型真的可靠。

因为足球预测模型真正输出的不是一个硬结果,而是一组概率。

比如一场比赛模型输出:

主胜概率:52%
平局概率:28%
客胜概率:20%

如果最后主队赢了,硬分类算对。

但这场和下面这种输出完全不是一回事:

主胜概率:82%
平局概率:12%
客胜概率:6%

两场都预测主胜,但前者只是略偏主队,后者非常确信主队。

如果只看命中率,它们都算“对”。

可是从概率质量看,它们差别很大。

再反过来,如果模型给主胜 82%,最后平局了,它不仅错了,而且是非常自信地错了。
如果模型给主胜 52%,最后平局了,它也错了,但错得没有那么严重。

所以,评估足球模型,不能只看“中了没中”。

你必须看:

模型给真实结果的概率是否合理;
模型是否过度自信;
模型说 60% 的事情,长期是否真的接近 60%;
模型在不同联赛、不同时间段是否稳定;
回测是否按时间进行;
有没有未来数据泄漏;
短期成绩是不是只是波动。

这一章要讲清楚:一个足球模型到底应该怎么评估。


一、命中率为什么不够?

命中率是最容易理解的指标。

公式很简单:

命中率 = 预测正确场次 / 总预测场次

比如:

总场次 = 100
预测正确 = 56

命中率 = 56 / 100 = 56%

它的优点是直观。

但缺点也很明显:

命中率只看硬分类,不看概率质量。

例如模型 A:

主胜:41%
平局:30%
客胜:29%

模型 B:

主胜:80%
平局:12%
客胜:8%

如果最终主队赢,两个模型都算命中。

命中率都加 1。

但模型 B 明显比模型 A 更坚定。

如果最终平局,两个模型都算错。

但模型 B 错得更严重。

命中率无法区分这些差异。

这对足球模型非常致命。

因为足球比赛不是确定事件,很多比赛的结果分布很接近。

一个模型如果总是输出比较保守的概率,和一个模型总是过度自信,命中率可能差不多,但长期风险完全不同。

所以,命中率只能作为辅助指标。

不能作为核心指标。


二、命中率还会鼓励模型只猜“大概率类别”

很多联赛里,主胜比例通常比平局和客胜高。

如果模型很粗糙,它可能经常偏向主胜。

这样命中率可能看起来不低。

比如某联赛历史结果大概是:

主胜:45%
平局:27%
客胜:28%

一个非常简单的模型,如果永远预测主胜,理论上也能有 45% 左右命中率。

但这个模型没有真正理解比赛。

它完全忽略平局和客胜。

所以,命中率有一个问题:

它可能让模型倾向于预测最常见类别,而不是输出真实概率分布。

对足球胜平负模型来说,平局尤其容易被低估。

如果一个模型主胜和客胜还行,但平局长期严重偏低,命中率可能仍然看起来不错。

但概率模型质量是不合格的。

因此,评估时必须单独看:

主胜表现;
平局表现;
客胜表现;
不同概率区间的真实发生率。


三、LogLoss:评估概率模型最重要的指标之一

LogLoss 是评估概率预测非常常用的指标。

它不仅看你是否预测对,还看你给真实结果的概率有多高。

多分类 LogLoss 的核心形式可以写成:

LogLoss = - (1/N) × Σ log(p_i)

这里:

N = 样本数量
p_i = 第 i 场比赛中,模型给真实结果的概率
Σ = 对所有样本求和
log = 自然对数

举个例子。

某场比赛真实结果是主胜。

模型输出:

主胜:70%
平局:20%
客胜:10%

真实结果是主胜,所以:

p_i = 0.70

这场比赛的损失:

-log(0.70)

约等于:

0.357

如果另一个模型输出:

主胜:40%
平局:35%
客胜:25%

真实结果仍然是主胜。

那么:

p_i = 0.40

损失:

-log(0.40)

约等于:

0.916

第二个模型给真实结果的概率更低,所以损失更大。

这很合理。


四、LogLoss 会严厉惩罚“自信地错”

再看一个例子。

真实结果是平局。

模型 A 输出:

主胜:45%
平局:30%
客胜:25%

真实结果是平局,所以:

p_i = 0.30

损失:

-log(0.30) ≈ 1.204

模型 B 输出:

主胜:85%
平局:10%
客胜:5%

真实结果还是平局,所以:

p_i = 0.10

损失:

-log(0.10) ≈ 2.303

模型 B 损失更大。

原因是它过度自信地看主胜,却给真实发生的平局很低概率。

这就是 LogLoss 的价值。

它会惩罚“错得很自信”的模型。

足球模型最怕这种情况。

如果一个模型经常给某个结果 80%、90%,但长期并没有对应发生率,它会在 LogLoss 上付出代价。

所以,LogLoss 比命中率更适合评估概率模型。


五、LogLoss 的直觉:真实结果概率越高,损失越小

LogLoss 的核心直觉很简单:

模型给真实结果的概率越高,损失越小。

例如真实结果是主胜。

不同概率对应的损失大致是:

p = 0.90 => -log(0.90) ≈ 0.105
p = 0.70 => -log(0.70) ≈ 0.357
p = 0.50 => -log(0.50) ≈ 0.693
p = 0.30 => -log(0.30) ≈ 1.204
p = 0.10 => -log(0.10) ≈ 2.303
p = 0.01 => -log(0.01) ≈ 4.605

你会看到:

给真实结果 90% 概率,损失很小。
给真实结果 10% 概率,损失很大。
给真实结果 1% 概率,损失非常大。

这就是为什么概率模型不能乱自信。

如果没有足够依据,不要轻易给过高概率。

足球比赛随机性很强,过度自信通常会让 LogLoss 变差。


六、Brier Score:看概率和真实结果之间的平方误差

Brier Score 也是评估概率预测的重要指标。

二分类 Brier Score 形式很简单:

Brier Score = (p - y)^2

其中:

p = 模型预测事件发生的概率
y = 实际结果,发生为1,未发生为0

例如预测主胜。

模型预测:

p = 0.70

如果主胜真的发生:

y = 1

Brier Score:

(0.70 - 1)^2 = 0.09

如果主胜没有发生:

y = 0

Brier Score:

(0.70 - 0)^2 = 0.49

损失明显更大。

多分类 Brier Score 可以理解为对每个类别分别计算误差,再求和或平均。

比如胜平负三类:

模型输出:

主胜:0.60
平局:0.25
客胜:0.15

真实结果是主胜。

真实标签可以写成:

主胜:1
平局:0
客胜:0

Brier Score 可以计算为:

(0.60 - 1)^2 + (0.25 - 0)^2 + (0.15 - 0)^2

计算:

0.16 + 0.0625 + 0.0225 = 0.245

如果取平均,再除以类别数 3:

0.245 / 3 ≈ 0.0817

不同实现可能是否除以类别数略有区别,但核心思想一致:

预测概率越接近真实结果,Brier Score 越小。


七、LogLoss 和 Brier Score 有什么区别?

LogLoss 对“自信地错”惩罚更重。

如果模型给真实结果极低概率,比如 1%,LogLoss 会非常大。

Brier Score 也会惩罚错误,但惩罚相对平滑。

可以简单理解:

LogLoss 更关注概率分布是否合理,尤其惩罚过度自信。
Brier Score 更像概率和结果之间的平方误差,直观、稳定、易解释。

实际评估中,两者都可以看。

如果一个模型命中率高,但 LogLoss 很差,往往说明它过度自信。

如果 Brier Score 也差,说明概率整体偏离真实结果较多。

足球模型不能只看一个指标。

至少要同时看:

命中率;
LogLoss;
Brier Score;
概率校准。


八、概率校准:模型说 60%,长期真的有 60% 吗?

概率校准是足球模型评估中非常关键的一部分。

所谓校准,就是检查:

模型输出的概率,长期是否和真实发生率接近。

比如模型对一批比赛都输出主胜概率在 60% 左右。

那么长期看,这批比赛实际主胜比例应该接近 60%。

如果实际只有 48%,说明模型高估了主胜。

如果实际有 72%,说明模型低估了主胜。

校准不是看单场。

校准必须看一组比赛。

一个常见做法是分桶。

例如把主胜预测概率分成几个区间:

0%-10%
10%-20%
20%-30%
30%-40%
40%-50%
50%-60%
60%-70%
70%-80%
80%-90%
90%-100%

然后统计每个区间的真实发生率。

比如:

模型预测主胜 50%-60% 的比赛:
样本数 = 500
实际主胜 = 275
实际发生率 = 275 / 500 = 55%

这说明这个区间校准不错。

再比如:

模型预测主胜 70%-80% 的比赛:
样本数 = 200
实际主胜 = 120
实际发生率 = 60%

这说明模型在高概率区间过度自信。

它说 70%-80%,实际只有 60%。

这种模型需要校准。


九、为什么校准比单场命中更重要?

因为模型最终要输出概率。

如果概率不可信,模型就无法用于严肃分析。

举个例子。

模型 A:

它给出的 60% 概率,长期实际发生率约 60%。
给出的 70% 概率,长期实际发生率约 70%。
给出的 40% 概率,长期实际发生率约 40%。

这个模型校准较好。

即使它不是每场都命中,它的概率是可信的。

模型 B:

它经常给 80% 概率,但实际只发生 60%。
它经常给 20% 概率,但实际发生 35%。

这个模型校准差。

即使它某段时间命中率不错,也不能放心使用。

足球模型最重要的是概率可信,而不是短期命中。

如果模型概率可信,你才能进一步做:

风险识别;
比赛难度分层;
模型融合;
概率区间比较;
长期回测。

如果概率不可信,后面所有分析都会失真。


十、校准曲线应该怎么看?

校准曲线可以把预测概率和实际发生率画出来。

虽然官网文章可以不画图,但要讲清楚概念。

理想情况下:

预测概率 = 实际发生率

例如:

模型预测 10%,实际约 10%
模型预测 20%,实际约 20%
模型预测 50%,实际约 50%
模型预测 70%,实际约 70%

如果画成图,会接近一条对角线。

如果模型过度自信,常见表现是:

高概率区间实际发生率低于预测概率。

例如:

预测 80%,实际 65%

如果模型过于保守,常见表现是:

高概率区间实际发生率高于预测概率。

例如:

预测 60%,实际 70%

足球模型里,LightGBM 有时会出现过度自信。

尤其在训练集表现很好时。

所以 LightGBM 输出概率后,必须做校准检查。

不能直接相信它的原始概率。


十一、概率校准方法:Platt Scaling 和 Isotonic Regression

如果模型概率不校准,可以做概率校准。

常见方法有两类:

Platt Scaling
Isotonic Regression

1. Platt Scaling

Platt Scaling 本质上是在模型原始输出上再训练一个逻辑回归,把原始分数转成更合理的概率。

它适合比较平滑的校准关系。

可以理解为:

模型原来太激进或太保守,用一个简单变换把概率拉回更合理区间。

2. Isotonic Regression

Isotonic Regression 更灵活。

它不假设概率和真实发生率之间是某种固定函数,只要求关系大致单调。

如果预测概率越高,真实发生率也应该越高,它就可以学习一个分段校准函数。

它更灵活,但也更容易在样本少时过拟合。

所以,校准也不能乱做。

必须使用验证集,而不是测试集。

测试集应该留到最后评估。


十二、校准时最容易犯的错误

错误一:用测试集做校准

如果你用测试集校准,再用同一个测试集评估,结果会虚高。

正确做法:

训练集训练模型;
验证集做校准;
测试集做最终评估。

错误二:样本太少就做细分桶

如果每个概率区间样本很少,实际发生率会波动很大。

比如某区间只有 20 场,实际发生率不稳定。

校准需要足够样本。

错误三:只校准整体,不看类别

胜平负三分类中,主胜、平局、客胜可能校准情况不同。

尤其平局容易失真。

需要单独检查平局概率。

错误四:只看校准,不看排序能力

模型概率校准好,不代表它排序能力一定强。

模型评估要综合看。


十三、什么是回测?

回测就是用历史数据模拟未来预测。

它回答的问题是:

如果我们在过去某个时间点运行这个模型,它会给出什么概率?
这些概率在后来的真实比赛中表现如何?

回测不是简单把所有历史数据拿来训练,再看模型能不能解释历史。

那叫拟合历史。

真正的回测必须模拟真实预测场景。

也就是:

只能用过去数据训练
只能预测未来比赛
不能让未来信息进入过去

足球模型回测必须按时间顺序。

因为真实世界里,你永远不能用 2025 年的数据预测 2023 年。


十四、为什么不能随机切分训练集和测试集?

很多机器学习教程会随机切分:

80%训练
20%测试

但足球比赛不适合这样做。

因为比赛有时间顺序。

如果随机切分,可能出现:

2024 年比赛进入训练集;
2022 年比赛进入测试集。

这意味着模型用未来比赛训练,再去预测过去比赛。

这不符合真实预测场景。

而且很多特征是滚动计算的。

随机切分会打破时间边界。

正确方式应该是时间切分。

例如:

2018-2022 训练
2023 验证
2024 测试

或者使用滚动回测。

随机切分往往会让模型效果看起来更好。

但这种好不可信。

足球模型评估必须拒绝随机时间泄漏。


十五、滚动回测怎么理解?

滚动回测也叫 walk-forward validation。

核心思想是:

用过去数据训练,预测下一段比赛,然后时间向前滚动。

例如:

第一轮:

训练:2018-2020
验证/测试:2021

第二轮:

训练:2018-2021
验证/测试:2022

第三轮:

训练:2018-2022
验证/测试:2023

第四轮:

训练:2018-2023
验证/测试:2024

这样可以观察模型在不同时间段的表现。

它比单次切分更稳。

因为你可以看到:

模型是否只在某一年好;
是否跨时间稳定;
是否某段时间失效;
模型是否随着训练数据增加而改善;
某些联赛是否表现持续较差。

滚动回测更接近真实上线后的运行方式。


十六、回测报告应该包含哪些内容?

一个严肃的足球模型回测报告,不应该只写:

命中率 56%

至少应该包含这些内容:

测试时间范围
样本数量
联赛范围
胜平负类别分布
模型命中率
LogLoss
Brier Score
概率校准情况
主胜/平局/客胜分别表现
不同概率区间表现
不同联赛表现
不同赛季表现
模型最大回撤或阶段性波动
和基线模型对比
和泊松模型对比

为什么要这么多?

因为单一指标很容易误导。

比如整体命中率不错,但平局概率严重失真。

或者某个联赛表现很好,另一个联赛表现很差。

或者 2023 年很好,2024 年明显下降。

这些问题必须通过细分报告才能发现。

模型评估不是为了证明模型好,而是为了找出模型哪里不稳。


十七、必须和基线模型比较

评估模型时,不能只看自己表现。

要和基线比较。

常见基线包括:

永远预测主胜
根据历史主胜/平局/客胜比例输出固定概率
逻辑回归基线
泊松模型基线
简单 Elo 模型

例如某个联赛历史结果分布是:

主胜 44%
平局 28%
客胜 28%

一个最简单的固定概率模型可以一直输出:

P(H)=44%
P(D)=28%
P(A)=28%

如果你的复杂模型 LogLoss 只比这个固定基线好一点点,那说明它的有效信息有限。

如果 LightGBM 不能明显超过逻辑回归基线,就要检查:

特征是否有效;
模型是否过拟合;
数据量是否不足;
复杂模型是否没有带来真实增益。

任何复杂模型都应该回答:

它比简单模型强在哪里?

如果回答不了,就不要急着上线。


十八、分联赛评估非常重要

足球联赛差异很大。

一个模型整体表现不错,不代表每个联赛都好。

例如:

英超表现稳定
德甲总进球模型较好
法甲平局概率低估
低级别联赛数据噪音大
杯赛模型表现不稳定

如果你只看总体指标,这些问题会被平均掩盖。

所以回测应该分联赛。

至少要看:

每个联赛样本数量;
每个联赛 LogLoss;
每个联赛 Brier Score;
每个联赛主胜/平局/客胜校准;
每个联赛总进球校准;
每个联赛是否长期稳定。

如果某个联赛样本太少,就不要过度解释。

样本量不足时,指标波动会很大。


十九、分时间段评估能发现模型衰减

模型可能会随时间失效。

原因包括:

联赛风格变化;
球队战术变化;
数据源变化;
赛程结构变化;
规则变化;
补时尺度变化;
模型过拟合旧数据;
特征含义变化。

所以要分时间段评估。

比如:

2021年表现
2022年表现
2023年表现
2024年表现

如果模型表现逐年下降,就要排查。

也可以按季度或赛季阶段看。

例如:

赛季初;
赛季中;
赛季末。

赛季末战意复杂,模型可能更容易失真。

如果发现赛季末表现明显差,就说明需要加入更好的比赛背景和目标特征,或者降低某些模型输出信心。

分时间段评估是发现模型衰减的重要方式。


二十、短期成绩为什么几乎没有意义?

足球模型最容易被短期成绩误导。

比如某模型最近 30 场命中率 70%。

看起来很强。

但 30 场样本太少。

尤其足球比赛三分类结果波动很大。

短期高命中可能来自:

样本较简单;
强队比赛较多;
低概率事件较少;
运气好;
某个联赛阶段性规律;
模型刚好适合这段时间。

同样,短期低命中也不一定说明模型彻底失效。

可能只是方差。

所以评估模型要看长期样本。

至少要看几百场,最好更大样本。

而且要看跨时间、跨联赛稳定性。

短期成绩只能作为监控信号,不能作为模型质量结论。


二十一、评估足球模型要避免“赛后合理化”

模型评估也会出现赛后合理化。

比如某段时间表现不好,开发者会说:

这段比赛特殊;
这个联赛不稳定;
最近冷门多;
数据源有问题;
赛程特殊。

这些解释可能有道理。

但必须用数据验证。

不能只凭感觉。

如果说某联赛特殊,就分联赛评估。
如果说赛季末特殊,就按赛季阶段评估。
如果说冷门多,就统计强弱差距分布。
如果说数据源变了,就检查数据缺失和字段变化。
如果说模型对某类比赛不适合,就定义这类比赛并回测。

评估不是找理由。

评估是用数据定位模型问题。


二十二、模型评估的最低标准

一个足球模型至少要达到这些评估标准,才值得进一步产品化:

1. 使用时间切分或滚动回测,而不是随机切分。
2. 测试集完全独立,不参与调参和校准。
3. 有基线模型对比。
4. 不只看命中率,还看 LogLoss 和 Brier Score。
5. 检查概率校准。
6. 分别检查主胜、平局、客胜。
7. 分联赛评估。
8. 分时间段评估。
9. 检查模型是否过度自信。
10. 检查模型输出是否稳定。
11. 检查数据是否存在未来泄漏。
12. 记录模型表现下降的时间点和联赛。

如果这些都没有,只说“命中率不错”,是不够专业的。


二十三、本章实操检查清单

评估足球模型时,可以按这份清单检查:

1. 模型输出的是概率还是硬分类?
2. 是否保留每场比赛的完整概率输出?
3. 是否计算命中率?
4. 是否计算 LogLoss?
5. 是否计算 Brier Score?
6. 是否做概率分桶校准?
7. 是否单独检查平局概率?
8. 是否分联赛统计?
9. 是否分赛季或时间段统计?
10. 是否和固定概率基线比较?
11. 是否和逻辑回归基线比较?
12. 是否和泊松模型比较?
13. 是否按时间切分训练和测试?
14. 是否避免随机切分?
15. 是否有滚动回测?
16. 是否记录模型高概率区间是否过度自信?
17. 是否检查样本量是否足够?
18. 是否检查短期高命中是否只是波动?
19. 是否明确测试集没有参与调参?
20. 是否用评估结果指导下一轮特征和模型改进?

这份清单比单纯看命中率重要得多。


本章小结

足球模型评估不能只看命中率。

命中率直观,但它只能告诉你硬分类对了多少场,不能告诉你概率是否可信。

一个专业的足球概率模型,至少要看:

命中率
LogLoss
Brier Score
概率校准
分联赛表现
分时间段表现
分结果类别表现
和基线模型对比
滚动回测稳定性

LogLoss 会惩罚自信地错。

Brier Score 衡量概率和真实结果之间的误差。

概率校准检查模型说 60% 的事情,长期是否真的接近 60%。

回测必须按时间顺序,不能随机打乱比赛。

短期成绩几乎没有意义。

真正重要的是模型在长期样本、不同联赛、不同时间段里的概率是否稳定可信。

下一章我们继续讲:

足球模型为什么会失效?过拟合、数据泄漏、样本漂移和市场变化。

本文仅供足球数据研究和模型训练学习参考,不构成任何投注建议。