Skip to content

第 10 章 应用机器学习的建议

这一章讲如何诊断模型问题,并决定下一步该做什么。重点是训练集、交叉验证集、测试集、偏差、方差和学习曲线。

10.1 决定下一步做什么

如果模型在新样本上表现不好,常见选择包括:

  • 收集更多训练样本。
  • 尝试更少的特征。
  • 尝试更多的特征。
  • 添加多项式特征。
  • 调整正则化参数。

这些选择不应该靠猜。需要用诊断方法判断当前主要问题是高偏差还是高方差。

10.2 评估一个假设

为了评估模型泛化能力,需要把数据划分为训练集和测试集。

一种常见做法:

text
70% 训练集
30% 测试集

训练集用于拟合参数,测试集用于估计模型在新数据上的误差。

线性回归测试误差:

Jtest(θ)=12mtesti=1mtest(hθ(xtest(i))ytest(i))2

分类问题可以用误分类率衡量:

text
预测错误样本数 / 测试集样本数

10.3 模型选择和交叉验证集

如果用测试集反复选择模型,测试集就不再是公平评估。

更好的做法是划分为三部分:

text
训练集
交叉验证集
测试集

常见比例:

text
60% 训练集
20% 交叉验证集
20% 测试集

流程:

  1. 用训练集训练不同模型。
  2. 用交叉验证集选择模型。
  3. 最后只用测试集评估一次最终模型。

10.4 诊断偏差和方差

高偏差通常表现为欠拟合:

  • 训练误差高。
  • 交叉验证误差也高。

高方差通常表现为过拟合:

  • 训练误差低。
  • 交叉验证误差高。

随着模型复杂度增加,训练误差通常会下降,但交叉验证误差可能先下降后上升。

10.5 正则化和偏差 / 方差

正则化参数 lambda 会影响偏差和方差。

lambda 太大:

  • 参数被压得太小。
  • 模型过于简单。
  • 容易高偏差。

lambda 太小:

  • 正则化不足。
  • 模型可能过拟合。
  • 容易高方差。

选择 lambda 时,通常训练多个候选值,然后用交叉验证误差选择最合适的。

10.6 学习曲线

学习曲线用来观察训练样本数量和误差之间的关系。

横轴是训练样本数量,纵轴是误差。

高偏差情况下:

  • 训练误差较高。
  • 交叉验证误差也较高。
  • 增加更多数据通常帮助不大。

高方差情况下:

  • 训练误差较低。
  • 交叉验证误差明显更高。
  • 增加更多数据通常有帮助。

10.7 决定下一步做什么

根据诊断结果选择行动:

现象更可能的问题可尝试的方法
训练误差高,验证误差高高偏差增加特征、增加多项式特征、减小正则化
训练误差低,验证误差高高方差增加数据、减少特征、增大正则化

神经网络中,小网络更容易高偏差,大网络更容易高方差。正则化可以帮助较大的网络减少过拟合。

Powered by VitePress