当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么?
- 获得更多的训练实例
- 尝试减少特征的数量
- 尝试获得更多的特征
- 尝试增加多项式特征
- 尝试减少正则化程度 λ
- 尝试增加正则化程度 λ
模型选择和交叉验证集
交叉验证集来帮助选择模型:
- 60%的数据作为训练集
- 20%的数据作为交叉验证集
- 20%的数据作为测试集
模型选择的方法为:
- 使用训练集训练出 10 个模型
- 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
- 选取代价函数值最小的模型
- 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)
诊断偏差和方差
image.png训练集和交叉验证集的代价函数误差与多项式的次数 image.png
训练集误差和交叉验证集误差近似时:偏差/欠拟合
交叉验证集误差远大于训练集误差时:方差/过拟合 image.png
正则化和偏差/方差
image.png选择一系列的想要测试的 λ 值,通常是 0-10 之间的呈现 2 倍关系的值:
- 0
- 0.01
- 0.02,
- 0.04
- 0.08
- 0.15
- 0.32
- 0.64
- 1.28
- 2.56
- 5.12
- 10
选择 λ 的方法为:
- 使用训练集训练出 12 个不同程度正则化的模型
- 用 12 模型分别对交叉验证集计算的出交叉验证误差
- 选择得出交叉验证误差最小的模型
- 运用步骤 3 中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数
误差与 λ 的值绘制在一张图表上:
image.png当 λ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大;随着 λ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加
学习曲线
学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表
思想是:当训练较少行数据的时候,训练的模型将能够非常完美地适应较少的训练数据,但是训练出
来的模型却不能很好地适应交叉验证集数据或测试集数据。
在高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助;在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。
- 获得更多的训练实例——解决高方差
- 尝试减少特征的数量——解决高方差
- 尝试获得更多的特征——解决高偏差
- 尝试增加多项式特征——解决高偏差
- 尝试减少正则化程度 λ——解决高偏差
- 尝试增加正则化程度 λ——解决高方差
神经网络
- 使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
- 通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。
- 对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数,为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络, 然后选择交叉验证集代价最小的神经网络。
网友评论