收益:
- 能够根据工作目的选择和解释分类和回归指标(混淆矩阵、精度/召回率/F1、MAE/RMSE/R²)
- 能够通过比较训练和测试分数来检测过度学习,并通过交叉验证获得可靠的性能
- 能够通过与基线进行比较来评估每个模型是否增加了真正的价值
建立模型很容易;很难诚实地衡量它是否真的有效。本单元的主题是数据科学家最关键的技能:使用正确的指标评估模型,实现可靠的预测性能,并抓住最阴险的陷阱:过度学习(记忆)。人工智能计算、解释和比较指标;但由人来决定哪个指标适合您的业务以及模型是否“足够好”。如果团队采用错误的衡量标准,可能会在数月内将一个糟糕的模型误认为是“成功”。
为什么准确性不够:混淆矩阵
在分类中首先想到的指标是准确性(准确性——正确预测的总比率)。但正如我们在第 6 单元中看到的,不平衡数据的准确性会产生误导。更好的开始是混淆矩阵——一个将预测分为四个容器的表:
- 真阳性(TP):我们将真正的假称为假。 (好)
- 真阴性 (TN):我们说非常干净。 (好)
- 误报(FP):我们误认为干净的是假的。 (误报)
- 假阴性(FN):我们错过了假货并称其为干净的。 (错过威胁)
两个关键指标源自这四个框。精确性:“我所说的假货有多少实际上是假货?” — 如果误报成本很高,则这一点很重要。敏感度(英文回忆):“我抓到了多少真假货?” — 当错过威胁的代价高昂时,这一点很重要。两者经常相互矛盾:如果你降低阈值并多说“假”,那么召回率会增加,但准确率会降低。 F1 分数是这两者的平衡平均值(调和平均值)。
注意:“哪个指标重要”这一问题的答案是一项业务决策,而不是技术决策。癌症筛查中漏掉一个病例(召回率低)是灾难性的;将重要的电子邮件发送到垃圾邮件过滤器中的垃圾邮件(低精度)是很烦人的事情。成本决定指标。
回归指标
如果输出是数字,则使用不同的指标。 MAE(平均绝对误差):在相同单位下,估计值与实际平均值的偏差程度(例如“我们平均错了 4,200 TL”)。 RMSE(均方根误差):对重大错误的惩罚更严厉,并且对异常值敏感。 R²(R 平方 — 决定系数):模型解释了目标的变异程度(接近 1 较好,0 与预测均值一样糟糕,负值更糟糕)。
最阴险的陷阱:过度学习
过度拟合(模型记住训练数据但在新数据上失败)是数据科学中最常见的错误。症状很明显:模型在训练集上表现良好(98%),在测试集上表现不佳(72%)。该模型记住了特定样本的噪声,而不是数据中的实际模式。还有相反的情况:欠拟合——模型在训练和测试中都很糟糕,因为它太简单而无法捕获模式。
对抗过度学习的方法:简化模型、更多数据、正则化——防止模型变得过于复杂的数学制动——最重要的是交叉验证。
交叉验证:不要相信单一窗格
单个训练/测试 Pod 可能是幸运的,也可能是不幸的;您可以在测试集上获得高分,因为该示例很简单。交叉验证(简称CV)解决了这个问题。最常见的形式是k-fold CV:数据被分为k部分(例如5);每一轮,一部分是测试,另一部分是训练;滚动 5 次,将 5 次得分取平均值。所以你会发现性能是基于多次分割的平均值,而不是一次幸运的分割。分数的分布也提供了丰富的信息:非常不稳定的分数(一层为 85%,另一层为 62%)表明模型不稳定。
时间序列中不使用普通的 k 折(泄漏未来);相反,您可以进行“前向链接”(时间序列分割):始终使用过去进行训练并测试未来。
公制
问题类型
什么时候重要?
准确度
分类
如果班级平衡
精度
分类
误报的代价是昂贵的
灵敏度(召回率)
分类
如果错过代价高昂
F1
分类
如果需要平衡
MAE
回归
可解释的错误
均方根误差
回归
如果大错误至关重要
R²
回归
解释力
三个迷你箱子
案例 1——高精度的错觉。一种欺诈模型的准确率高达 99.2%,团队为此庆祝不已。从混淆矩阵来看,数据中的真:假率为0.8%;该模特几乎没有发现假货,只是说“全部清除”。召回率为 6%。教训:看指标,而不是准确性。
案例 2——潜在的过度学习。一支团队在训练集上交付了 XGBoost 并将其提升至 97%。测试集是 69%,但没有人看过。该模型在生产中崩溃了。如果进行了交叉验证,折叠之间的巨大差异(过度学习)从一开始就会显而易见。教训:相信简历和考试成绩,而不是教育成绩。
案例 3——幸运分红。一位分析师很高兴一次就获得了 88% 的收益。当他的同事做5折简历时,分数分别是88%、71%、83%、64%、79%——平均是77%,但波动很大。模型不稳定;单隔间具有误导性。教训:查看 CV 均值和分布,而不是单个 bin。
四个可复制模板
1)完整的分类报告:
我已经训练了模型和测试集。生成:混淆矩阵、精度、召回率、F1(针对每个类别)和支持计数。我是在推断,但这取决于我:我会告诉你哪个指标很重要。请注意,不平衡数据的准确性可能会产生误导。
2)过度学习控制:
并排打印训练集和测试集中模型的分数。计算它们之间的差异并发出警告,因为较大的差异是过度学习的迹象。如果差异很大,建议进行正则化或简化。
3)交叉验证:
执行5倍交叉验证(用于分层、分类)。打印每次折叠的分数、平均值和标准差。如果分数非常不稳定(高标准),则表明模型不稳定。使用管道,以便仅从每一层的训练片段中学习转换。
4)基线比较:
将我的模型的指标与 DummyClassifier 基线并排放置。该模型是否明显优于基线?如果没有通过,请明确该模型不会增加任何实际价值。
弱提示/强提示
弱提示:
我的模型好不好?
“好”没有定义;目前尚不清楚哪个指标、哪个阈值、哪个基线。人工智能可以给出单一的准确度数字并产生误导。
强力提示:
您的角色:评估助理。分类,数据不平衡(12% 为阳性)。优先级:回忆(不要错过积极的部分)。任务:(1) 混淆矩阵,(2) 精度/召回率/F1,(3) 5 倍分层 CV 平均值和标准差,(4) DummyClassifier 基线比较。关注召回率和基线差异,而不是准确性。评论,但我做出最终决定。
这里,指标优先级、CV 和基线条件都很清楚。
常见错误
- 相信不平衡数据的准确性。 99%的准确率可能根本无法捕捉到少数群体;查看混淆矩阵。
- 只看你的教育分数。学历高、考试成绩低是过度学习;始终比较两个分数。
- 依靠单个隔间。幸运除法具有误导性;通过交叉验证查看平均值和分布。
- 不与基线进行比较。如果不知道模型是否击败了愚蠢的预测器,你就不能说“好”。
- 在时间序列上使用正常的 k 倍。它泄露了未来;需要时间序列分割。
提示:在每个模型旁边写下三个数字:训练分数、交叉验证平均值和基线分数。这三者一目了然地揭示了过度学习(训练 >> CV)和低估(CV ≈ 基线)。
综上所述
建立模型很容易,但诚实地评估它却很困难。在分类中,混淆矩阵、精确度和召回率比准确度提供更多信息;工作的成本决定了哪一项是重要的。 MAE、RMSE 和 R² 用于回归。最阴险的陷阱是过度学习:总是比较训练和测试分数。依靠交叉验证的均值和分布,而不是单一的分割;将所有内容与基线进行比较。人工智能计算所有这些,但由人类决定使用哪个指标。
应用任务
提取分类模型的混淆矩阵、精度、召回率和F1;然后进行 5 折交叉验证并查看各折的分数分布。最后,并排写下训练分数、CV 平均值和基线分数。用一句话评论您的模型是否过度学习并通过基线。
清单
- [ ] 我是否查看了工作的实际指标(精确度/召回率/F1 等)而不是准确度?
- [ ] 我检查过混淆矩阵吗?
- [ ] 我是否比较了训练和测试分数并检查了过度学习?
- [ ] 我是否通过交叉验证查看了均值和分布?
- [ ] 我是否将该模型与基线进行了比较?