在这部分我们检验多项式层数d和过拟合和欠拟合之间的关系。
1.我们区分是否是偏差或方差导致我们预测错误。
2.大偏差是欠拟合,大方差是过拟合。理想情况下,我们需要在这两者之间找到中庸之道。
当我们增加多项式的D时,训练误差会减小。
同时,交叉验证误差会随着d增加到一个点而减小,然后随着d的增加而增大,形成一个凸曲线。
这是总结在下面的图:
正则化和偏差/方差
在上图中,我们看到,作为λ的增加,我们的配合变得平滑。另一方面,当λ接近0,我们倾向于过度拟合数据。那么我们如何选择我们的参数λ得到它“恰到好处”?为了选择模型和正则化项λ,我们需要:
1.创建一个列表的Lambda表达式(i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
2.创建一组具有不同次方或任何其他变形的模型。
3.遍历λ和每个λ穿过所有的模型来学习一些Θ。
4.运用所得到的Θ计算交叉验证误差(计算λ)用JCV(Θ)(没有正规化或λ= 0)。
5.选择在交叉验证集上产生最低错误的最佳组合。
6.用最佳的组合Θ和λ,它适用于JTEST(Θ)是否对问题有很好的泛化。
学习曲线
在非常少的数据点上训练一个算法(如1, 2或3)将很容易有0个错误,因为我们总能找到一个二次曲线恰好触及这些点。因此:
1.作为训练集规模越来越大,对一个二次函数的误差增大。
2.误差的值在到达一个确定的m或一个训练集大小后会处于平稳状态
高偏差:
训练集数量太少:造成训练集的成本函数低,交叉验证集的高
训练集数量大:造成训练集和交叉验证集的成本函数都高
如果一个学习算法遭受高偏差,获得更多的训练数据本身就不会有多大帮助。
高方差:
训练集少:训练集误差小,验证集误差大
训练集大:训练集误差随训练数量增加而增加。验证集持续不平整的减少。
训练误差小于验证集,但是两者区别还是很大
如果一个学习算法是患有高方差,得到更多的训练数据可能帮助。
决定下一步做什么
我们的决策过程可以分解如下:
1.得到跟多训练样本:高方差
2.减少变量:高方差
3.增加变量:高偏差
4.增加多次项:高偏差
5.调低λ:高偏差
6.调高λ:高方差
诊断神经网络
1.一个参数较少的神经网络容易欠拟合
2.一个参数较多的神经网络容易过拟合。在这种情况下,你可以使用正则化(增加λ)来解决过度拟合。
采用单隐层是一个好的开始,默认。你可以训练你的神经网络上的一些隐藏的图层使用交叉验证集。然后你可以选择表现最好的一个。
模型复杂度效应:
1.低阶多项式(低模型复杂度)高偏差和低方差。在这种情况下,模型拟合不一致。
2.高阶多项式(高模型的复杂性)拟合训练数据非常好,测试数据非常糟糕。这些具有低偏差在训练数据,但非常高的方差。
3.事实上,我们希望在两者之间选择一个模型,它可以很好地概括,而且也能很好地拟合数据。