决定下一步做什么(Deciding What to Try Next)
确保在设计机器学习系统时,能够选择一条最合适、最正确的道路。
具体来讲,将重点关注的问题是:假如你在开发一个机器学习系统,或者想试着改进一个机器学习系统的性能。
你应如何决定接下来应该选择哪条道路?
1. 获得更多的训练实例——通常有效,但代价较大,下面的方法也可能有效,可
考虑先采用下面的几种方法。
2. 尝试减少特征的数量
3. 尝试获得更多的特征
4. 尝试增加多项式特征
5. 尝试减少归一化程度 λ
6. 尝试增加归一化程度 λ
不应该随机选择上面的某种方法来改进算法
而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对算法是有效的。
——————————————————————————————————————
评估学习器性能:
将数据分成训练集和测试集, 通常70%作为训练集, 30%作为测试集。
—————————————————————————————————————————————————————————
模型选择和交叉验证集(Model Selection and Train_Validation_Test Sets)
使用交叉验证集来帮助选择模型。
即:使用 60%作为训练集, 20%作为交叉验证集,20%作为测试集 。
模型选择的方法为:
1. 使用训练集训练出 10 个模型
2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
3. 选取代价函数值最小的模型
4. 用步骤 3 中选出的模型对测试集计算得出泛化误差(代价函数的值)——仅是为了得出泛化误差,此步对模型选择无用。
—————————————————————————————————————————————————————————
偏差/方差诊断( Diagnosing Bias vs. Variance)
偏差大,欠拟合;
方差大,过拟合。
是一个很有效的指示器,指引可以改进算法的方法和途径。
结论:
交叉验证集误差和训练集误差近似时:偏差/欠拟合 ;
交叉验证集误差远大于训练集误差时:方差/过拟合。
—————————————————————————————————————————————————————————
正则化和偏差/方差(Regularization and Bias_Variance)
在训练模型的过程中, 一般会使用一些正则化方法来防止过拟合。
选择一系列的想要测试的 λ 值,通常是 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 个)。
我们同样把数据分为训练集、交叉验证集和测试集。
选择 λ 的方法为:
1. 使用训练集训练出 12 个不同程度归一化的模型;
2. 用12个 模型分别对交叉验证集计算的出交叉验证误差;
3. 选择得出交叉验证误差最小的模型;
4. 运用步骤 3 中选出模型对测试集计算得出泛化误差。——仅是为了得出泛化误差,此步对模型选择无用。
结论:
当 λ 较小时,训练误差较小(过拟合)而交叉验证误差较大 ;
随着 λ 的增加,训练误差不断增加(欠拟合),而交叉验证误差则是先减小后增加 。
—————————————————————————————————————————————————————————
学习曲线(Learning Curves)
经常使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。
学习曲线是学习算法的一个很好的合理检验(sanity check)。
学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。
即,如果我们有 100 行数据,我们从 1 行数据开始,逐渐学习更多行的数据。
思想:
当训练较少数据时, 训练的模型将能够非常完美地适应较少的训练数据, 但是训练出来的模型却不能很好地适应交叉验证集数据或测试集数据。
如何利用学习曲线识别高偏差/欠拟合?
作为例子,试用一条直线来适应下面的数据,可以看出,无论训练集有多么大误差都不会有太大改观:
如何利用学习曲线识别高方差/过拟合?
假设我们使用一个非常高次的多项式模型,并且正则化非常小.
可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
小结:
在高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助;
在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。
—————————————————————————————————————————————————————————
决定下一步做什么(Deciding What to Do Next)
六种可选方案:
1. 获得更多的训练实例——解决高方差
2. 尝试减少特征的数量——解决高方差
3. 尝试获得更多的特征——解决高偏差
4. 尝试增加多项式特征——解决高偏差
5. 尝试减少正则化程度 λ——解决高偏差
6. 尝试增加正则化程度 λ——解决高方差
神经网络的方差和偏差:
使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小;
使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。
对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数。
为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络, 然后选择交叉验证集代价最小的神经网络。