机器学习评估可视化

模型会计算结果,还需要评估这些结果是否有用。本组课程展示三个容易误读的指标:训练误差、一次划分的测试准确率,以及类别不平衡时的准确率。

增加模型容量时,训练误差可以持续下降,却不能据此判断泛化。小数据集上的一次留出评分会受抽到哪些样本影响。正类稀少时,始终返回 False 也可能得到很高准确率,例如正类仅占 0.3% 时就有 99.7%。这些课程让指标改善但模型并未改善的情况可见。

课程内容

课程观察内容
过拟合与验证九个多项式拟合同样十个带噪点,训练误差降到 0.0000,留出误差在三次时转向,最后达到最佳值的 899 倍
交叉验证二十张照片分成五折,同一数据、模型和代码在第一折得 1.00、第二折得 0.25,而固定五折的平均分都是 0.800
混淆矩阵阈值在四十个已评分样本间移动,产生四种计数;三条退化规则各自在某个指标上得到好看的分数,其中两条根本不读取分数

建议学习顺序

先学过拟合与验证,区分训练数据和模型没见过的留出数据。次数不超过 d 的多项式也属于次数不超过 d+1 的集合,只要最高次系数为零。因此,更大模型集合中的最优训练误差不会更差,但它不能告诉你应在哪个次数停止。

本课用十个系数穿过十个点,训练误差达到 0.0000,曲线却在留出点所在的间隙摆到 ±353。三个对照分别改变条件:减少样本后,问题出现在七次;数据翻倍后,同样九次模型的代价大幅降低;去掉噪声后,本实验的 U 形误差曲线消失。最后一个结果描述这组数据,不能推广为无噪声数据永远不会过拟合。

再学交叉验证,检查划分本身。二十张照片使用 1-NN 和 80/20 留出。在 400 次随机划分中,准确率标准差为 0.2005,35% 的划分得到 1.00,而本实验完整评估的准确率为 80%。固定的 k 折让每个样本恰好被留出一次,将各次由未见过该样本的模型给出的结果汇总,而非只读一次抽样。

本例在 k = 20 时,改变划分设置不再改变留一法结果。失败场景则使用十只动物的二十张照片:相关照片跨越训练折和测试折,随机划分报告 1.000,而对未见动物的实际分类近似抛硬币。增加 k 无法修复这种泄漏,在该场景中反而更严重。交叉验证仍需按数据来源设计分组。

最后学混淆矩阵。已有留出样本和每个样本的分数,还要决定报告什么指标。分类分数提供排序,阈值把排序变成决策。样本横轴是分数,高度区分真值,阈值是竖线;矩阵的四格正对应四种区域。

把阈值从“谁都不报警”移到“所有人都报警”,数据始终是同样四十例。准确率最高为 0.900,最后却低于什么也不报的 0.850;精确率总体可能下降,但跨入下一个真正例时会上升;召回率最终达到 1.000,即使模型只是对所有人报警。三种指标回答不同问题。

这三课分别要求补上汇总指标省略的信息:训练误差之外看留出表现;一次划分之外看不同样本的评估;准确率之外看类别比例、错误类型、精确率和召回率。指标不是无用,而是需要与它的条件一起解释。

与其他课程的关系

本组课程把模型视为已存在的对象。经典机器学习介绍评分从何而来:逻辑回归的 sigmoid 输出可以直接交给混淆矩阵中的阈值;线性回归的拟合扩展到多项式后,形成过拟合课的九种次数;k 近邻是交叉验证使用的模型,几乎不花训练时间,因此可以专注评估流程。训练循环则在每个 epoch 中实时展示训练与验证曲线如何分离。

全部机器学习评估可视化课程

选择课程,改变输入,逐步观察评估过程与同步的代码高亮。