0.
视频资料:吴恩达机器学习课程
https://www.coursera.org/learn/machine-learning/lecture/1z9WW/backpropagation-algorithm
1.模型选择问题(评估)
①将数据集划分为两个部分:
训练集training set——70%
测试集test set——30%
用测试集来验证假设的表现,去拟合参数,去选择模型。
正如我们说更好的拟合训练集并不意味着假设更好一样,再用测试集去观察泛化误差,相对不够合理化。
②将数据集划分成三个部分
训练集training set——60%
交叉验证集cross validation set(CV)——20%
测试集test set——20%
交叉验证集存在的意义就是用交叉验证集来验证假设的表现,去拟合参数,去选择模型,
接下来对模型表现的评价根据测试集进行计算,这样得到的泛化误差相对可信度较高。
2.偏差与方差(评估)
偏差与方差可以帮助去了解如何更好的改进学习算法
①什么是偏差与方差
当通过选择不同次数多项式来完成模型选择的问题中,我们可以得到如下的图像,通过这个图像,我们可以清晰的明确什么是高偏差(bias)与高方差(variance)。
高偏差(欠拟合):训练误差很高,验证误差与训练误差相似
高方差(过拟合):训练误差很低,而验证误差远远大于训练误差
②正则化与偏差和方差的关系
(前情提要:正则化可以有效防止过拟合)
J(θ)含正则化项,利用训练集计算出最优化的θ值,从而计算出Jtrain(θ)、Jcv(θ)和Jtest(θ),
但Jtrain(θ)、Jcv(θ)和Jtest(θ)均不含正则化项,只是均方误差。
不断增加λ的值,来观察Jtrain(θ)与Jcv(θ)曲线
当λ很小的时候,会出现过拟合的问题,因此会导致Jcv(θ)效果很差,而Jtrain(θ)效果很好
当λ很大的时候,会导致正则化项很大,使得Jtrain(θ)(去掉正则化项的J(θ))很大,即偏差很大,此时的Jcv(θ)相应也很大。
3.绘制学习曲线(评估)
——训练集数据数量m与误差大小Jtrain(θ)、Jcv(θ)和Jtest(θ)的曲线
①Jtrain(θ)
当m很小的时候,我们很容易做到“完美拟合”,所以此时的误差会很小,
当m越来越大的时候,平均训练误差是逐渐增大的(相对每一个样本都做到拟合是很难得)
②Jcv(θ)和Jtest(θ)
随着m的增加而增加,数据越多,泛化能力越好。
综上,我们可以通过学习曲线,观察出当前模型是否存在高偏差或高方差
高偏差情形:随着m的增加,Jtrain(θ)不断增加并趋于Jcv(θ)
高方差情形:
对是否要增加更多的样本有指导意义:当处于高方差情景,Jcv(θ)大于Jtrain(θ)的时候增加更多的样本是有帮助的。
4.一些小tips
为了改进学习算法,我们有如下的一些想法:
①获得更多的训练样本
适用高方差:应该先画出学习曲线,观察模型,需要至少有那么一点方差问题(交叉验证集误差要大于训练集误差)。
②选取更少的特征
适用高方差:当看出模型处于高偏差状态的时候,显然选取更少的特征是不会有任何帮助的,而处于高方差问题的模型,讯取出更适合的特征值是很有帮助的。
③获取额外的特征
一般适用高偏差:假设函数太简单会导致高偏差,补充一些特征可以使假设函数更好的拟合训练集(增加多项式也是增加特征的一种)
④尝试降低λ
便于实现,减小可以修正高偏差(见3中曲线与λ的关系)
⑤尝试增加λ
便于实现,增加可以修正高方差(见3中曲线与λ的关系)