吴恩达机器学习笔记-应用机器学习的建议

评估假设

咱们以前已经学习过一些机器学习的算法,如今咱们来谈谈如何评估算法学习获得的假设。当发现预测的结果和实际的数据有偏差的时候,咱们须要进行一些调整来保证预测的准确性,大部分状况下,有如下几种办法来调整假设函数:算法

  • 获取更多的训练集
  • 减小特征的数量
  • 尝试使用更多的特征
  • 尝试使用多项式特征
  • 增大或减少lambda

假设函数相对于训练集可能获得的偏差很小,好比在过拟合的状况下,这时候就不能确定假设函数是准确的。所以,咱们有时候将数据集分红两块:训练集和测试集,通常来讲训练集占70%,测试集30%。定义训练集的偏差为$J_{train}(\Theta)$,测试集为$J_{test}(\Theta)$。这样,咱们要作的就是:经过训练集训练来最小化$J_{train}(\Theta)$和计算测试集$J_{test}(\Theta)$的偏差。
对于线性回归:网络

$$ J_{test}(\Theta) = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\Theta(x_{test}^(i)))^2 $$app

对于分类问题:
当$h_\Theta(x)>=0.5且y=0$或$h_\Theta(x)<0.5且y=1$ 时,$err(h_\Theta(x),y) = 1$;不然,$err(h_\Theta(x),y) = 0$。
他们对于测试集的平均偏差为:机器学习

$$ Test Error = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}err(h_\Theta(x_{test}^(i)),y_{test}^(i)) $$函数

这个给与咱们测试集中错误分类的比例。学习

模型选择-训练集、验证集、测试集

因为学习算法可能对于训练集的数据相对很吻合,但不表明这是一个好的假设,以前说过了,这多是过拟合的状况,从而致使预测的结果在测试集中的表现会不尽如人意。从当前数据集训练出的假设函数的偏差是会比其余数据集要小的。
提供多个不一样级数的多项式模型时,咱们可使用系统的方法来鉴别是不是最好的函数。为了选择最佳的假设,能够对于每个不一样的级数的多项式进行计算,得出他们的偏差,从而比较出哪个才是最合适的。
上文中咱们将数据集分红了训练集和测试集两部分,实际状况中常常会分为三部分,其中60%为训练集,20%为交叉验证集,20%为测试集。咱们能够分别计算这三部分的偏差,测试

接下来:优化

  1. 经过训练集来针对每个级数的多项式来最优化参数theta
  2. 经过交叉验证集来找到最偏差最小的级数d
  3. 使用$J_{test}(\Theta^d)$来估计使用测试集获得的模型的泛化偏差,这样的话,多项式的级数就不用经过测试集训练获得了。

诊断误差与方差

当运行一个学习算法时,若这个算法的结果不理想,多半是出现两种状况:要么是误差比较大(high bias),要么是方差比较大(high variance)。换句话说,要么是欠拟合问题要么是过拟合问题。
高误差致使欠拟合,高方差致使过拟合。理想状况下,咱们要在这二者之间找到最佳的平均值。
当增长多项式的级数d时,训练集的偏差将会减少。同时当增长级数d到达某个点时,交叉验证偏差会渐渐的减少,而后其会伴随着d的增长而增长,图像为一个凸曲线。以下图:spa

总的来讲:code

正则化和误差、方差

在以前的课程中已经学习过经过正则化来解决过拟合问题,如今再来谈谈正则化和误差方差之间的关系。

在上图中,当$\lambda$很大,对于$\theta1$,$\theta1$..的惩罚都很大,则假设函数将会等于或近似于$\theta_0$,最终获得的假设函数就是一条直线,所以这个假设对于数据严重欠拟合。另外一个状况当$\lambda$很小时,趋向于0,那么正则化项趋向于0,获得的假设函数则会出现过拟合的状况。只有当咱们取一个比较合适的$\lambda$时,咱们才能获得对数据拟合比较合理的$\theta$的值。
那么如何选择合适的模型和合适的正则化参数$\lambda$呢,具体有以下几个步骤:

1. Create a list of lambdas (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. Create a set of models with different degrees or any other variants.
3. Iterate through the λs and for each λ go through all the models to learn some \ThetaΘ.
4. Compute the cross validation error using the learned Θ (computed with λ) on the J_CV ​(Θ)  without regularization or λ = 0.
5. Select the best combo that produces the lowest error on the cross validation set.

Using the best combo Θ and λ, apply it on J_test ​(Θ)  to see if it has a good generalization of the problem.

将$\lambda$的取值和$J(\theta)$的曲线画出来以下所示:

$J_{train}(\theta)$随着$\lambda$值的增长而增长,由于$\lambda$的值增大会对应着高误差问题,此时连训练集都不能很好的拟合,当$\lambda$很小时,对应着你能够很容易地用高次多项式拟合你的数据。对于交叉验证的偏差,如图中粉色的图像所示,当$\lambda$很大时,会出现欠拟合问题,所以是那一片是高误差区域,此时交叉验证集的偏差会很大,当$\lambda$很小时,会出现过拟合问题,对应的是高方差问题,所以交叉验证集的偏差也会很大。一样的,总会有中间的某个点对应的$\lambda$表现的结果正好合适,交叉验证偏差和测试偏差都很小。

学习曲线

当训练集很小的状况下,好比只有两三条数据的时候,咱们很容易训练一个二次的算法来拟合数据,而且算法的偏差可能几乎为0,所以,

  • 当训练集增大时,二次函数的偏差将会增长
  • 随着集合数据的增长,最终的偏差会渐渐趋向于平稳

具体变化以下图所示:

随着训练集的增长,交叉验证集的偏差将会慢慢减少知道趋向于某一个值,由于拟合数据越多,就越能拟合出合适的假设。
那么若是出现了高误差的状况,学习曲线会变成什么样子:

若训练集量比较小,那么拟合效果固然很差,致使交叉验证集的偏差会很大,那么随着训练集的增长,拟合效果渐渐的变好了,交叉验证集的偏差也会渐渐变小,当训练集增大到某一个量时,咱们可能就会找到一条最有可能拟合数据的直线,而且此时即使继续增长训练集的样本容量,仍是会获得一条差很少的结果。那么对于训练偏差,一开始也是很小的,但在高误差的状况下,训练集的偏差会逐渐增大直到最后接近交叉验证偏差,这是由于你的参数很小,但又有不少数据,当m很大时,训练集和交叉验证集的偏差将会很是接近。总的来讲能得出一个结论,若是一个算法有高误差,那么选用更多的训练集数据并不能很好的改善算法。
对于高方差的状况,以下图:

一开始训练集的偏差是很小的,但随着训练集容量的增长,偏差会渐渐变大,也就是说数据越多,就越难将训练集数据拟合的很好,但总的来讲,训练集的偏差仍是很小。那么对于交叉验证集,因为是高方差的状况,偏差会一直都很大,虽然也会慢慢减少,但在训练偏差和交叉验证偏差之间依然有一段很大的差距。总的来讲得出的结论就是,若是咱们考虑增长训练集样本的容量,对于改善算法仍是有必定的帮助的,由于很显然交叉验证偏差再慢慢减少,那么测试集的偏差也会慢慢减少,固然一样这个也能告诉咱们这个算法可能存在高方差的问题。

总结

上文中一开始咱们有说过几种不一样的方法来改善假设函数,但每每有些人只是凭借本身的感受来决定使用哪一种方法,那么经过本文介绍的一些知识,咱们能够得出,这几种方法分别对应于解决什么问题:

  • 获取更多的训练集 --> 解决高方差问题
  • 减小特征的数量 --> 解决高方差问题
  • 尝试使用更多的特征 --> 解决高误差问题
  • 尝试使用多项式特征 --> 解决高误差问题
  • 增大lambda --> 解决高方差问题
  • 减少lambda --> 解决高误差问题

那么这里再补充一下对于神经网络的诊断:

  • 一个相对简单的神经网络模型,隐含单元比较少或者隐藏层不多时,那么拟合时选择的参数就会比较小,容易出现欠拟合,但他的优点
  • 拟合一个复杂的神经网络模型时,那么其参数通常比较多,容易出现过拟合,这种结构的计算量相对会很大。但过拟合问题可使用正则化来进行修正。一般使用大型网络模型而后使用正则化来防止过拟合问题相对于使用简单的神经网络拟合的效果要更好。

总的来讲,模型的复杂程度的影响有如下几点:

  • 低阶多项式,也就是低复杂程度的模型有高误差和低方差的问题,这种状况下,模型的拟合程度较差
  • 高阶多项式,也就是高复杂程度的模型对于训练集的拟合效果相对较好,但对于测试集的拟合效果很是差,会出现低误差和高方差问题。
  • 在现实中,咱们须要在二者之间选择一个合适的模型,使其能很好的来拟合数据。

以上,为吴恩达机器学习第六周Advice for Applying Machine Learning部分的笔记。

相关文章
相关标签/搜索