您的位置:首页 > 其它

#“Machine Learning”(Andrew Ng)#Week 3_4:Solving the Problem of Overfitting

2017-02-02 18:59 225 查看
1、The Problem of Overfitting

什么是过拟合?我们通过一组图来说明:



欠拟合:这个问题的另一个术语叫做高偏差(bias),这两种说法大致相似,意思是它只是没有很好地拟合训练数据。它的意思是,如果拟合一条直线到训练数据,那么该算法就有一个很强的偏见或者说非常大的偏差。如上图的左图,因为该算法认为房子价格与面积仅仅线性相关尽管与该数据的事实相反,尽管相反的证据被事前定义为偏差,它还是接近于拟合一条直线,而此法最终导致拟合数据效果很差。

过拟合:另一个描述该问题的术语是高方差(variance),如上图右图,一个极端情况是,如果我们拟合一个四次多项式,因此在这里我们有五个参数θ0到θ4,这样我们可以拟合一条曲线,通过我们的五个训练样本。你可以得到看上去如此的一条曲线: 从直观上来说,似乎它对训练数据,做了一个很好的拟合,因为这条曲线通过了所有的训练实例,但是,这仍然是一条扭曲的曲线,不停的上下波动,它“极好的”拟合到了所有的样本点,看似完美的曲线,背后却隐藏着无法接受对新样本预测的事实。预测效果极差!

(这个函数能很好的拟合训练集,能拟合几乎所有的训练数据,这就面临可能函数太过庞大的问题变量太多,同时如果我们没有足够的数据去约束这个变量过多的模型,那么这就是过度拟合)

总结来说:过度拟合的问题,将会在变量过多的时候发生,这种时候训练出的方程总能很好的拟合训练数据,所以,你的代价函数实际上可能非常接近于0或者就是0,但是,这样的曲线它千方百计的拟合于训练数据,这样导致它无法泛化到新的数据样本中,以至于无法预测新样本价格。

(泛化:术语"泛化" 指的是一个假设模型能够应用到新样本的能力。比如这个例子中的,新样本数据是没有出现在训练集中的房子。)

上图是线性回归情况下的过度拟合问题,下图我们再来看看逻辑回归情况下过度拟合的问题:



具体地说,如果我们试图预测房价,同时又拥有这么多特征变量,这些变量看上去都很有用。但是,如果我们有过多的变量,同时,只有非常少的训练数据,就会出现过度拟合的问题。

那么,问题来了!如何很好地规避过度拟合???

在前面的例子中,当我们使用一维或二维数据时,我们可以通过绘出假设模型的图像来研究问题所在,再选择合适的多项式来拟合数据。因此,以之前的房屋价格为例,我们可以绘制假设模型的图像,就能看到模型的曲线非常扭曲并通过所有样本房价,我们可以通过绘制这样的图形来选择合适的多项式阶次,因此绘制假设模型曲线可以作为决定多项式阶次的一种方法,但是这并不是总是有用的。而且事实上更多的时候我们会遇到有很多变量的假设模型,并且,这不仅仅是选择多项式阶次的问题,事实上当我们有这么多的特征变量,这也使得绘图变得更难,并且,更难使其可视化
因此并不能通过这种方法决定保留哪些特征变量。)



1)减少变量的数量:人工筛选更为重要的变量/模型选择算法(自动选择特征变量)

问题是,舍弃了一部分特征变量,也代表了舍弃了一部分的信息。

2)正则化:在这种方法中,我们将保留所有的特征变量,但是会减小参数 θ(j)的数量级或数值大小。使得任何变量我们都不放弃,让每一个变量都或多或少能对预测产生一点影响。

 2、Cost Function
拥有一个直观的感受:正则化是怎样进行的???



首先,我们看这个引例,上图中的两张子图,左图是一个恰当的拟合,右图发生了过拟合,那么我们现在再来看看这两个子图的预测函数有什么不同,我们是不是可以发现如果我通过人为的将右图中θ3、θ4调小,那么右图这个拟合曲线是不是就会接近于左图中的拟合曲线,是不是调的越小,这两条拟合曲线也就越接近,极端情况时,当θ3=0、θ4=0时,此时左右两张子图是不是就相等了?

所以按照这个思想,问题转化为,怎样调整θ3和θ4?怎样在保证满足θj参数最优的同时,又可以人为的让θ3、θ4变小?

在换句话说,怎样使得代价函数J(θ)满足最小的同时,有人为的调低了θ3、θ4?

这时,我们引出惩罚函数的概念!对代价函数J(θ)作出惩罚!!!

以上图为例:让我们考虑下面的假设,我们想要加上惩罚项,从而使参数 θ3 和 θ4 足够的小。

我们的优化目标或者客观的说,这就是我们需要优化的问题:我们需要尽量减少代价函数的均方误差(这是我们坚贞不渝,始终不变的方针)

对于这个函数,我们对它添加一些项,加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方,这里的1000 只是我随便写的某个较大的数字而已。

现在, 如果我们要最小化这个函数,为了使这个新的代价函数最小化,我们要让 θ3 和 θ4 尽可能小对吧?(方针不变)

因为,如果你有 1000 乘以 θ3 这个,新的代价函数将会是很大的,所以当我们最小化这个新的函数时,我们将被迫使 θ3 的值接近于0、θ4 的值也接近于0,就像我们忽略了这两个值一样,如果我们做到这一点,即我们让 θ3 和 θ4  接近0,那么我们将得到一个近似的二次函数,所以 我们最终恰当地拟合了数据。

我们知道这里的二次函数加上了一些项,但是这些项很小,她们的贡献也很小,有时候小到忽略不计。 因为 θ3、θ4 它们是非常接近于0的, 所以,我们最终得到了,实际上很好的一个二次函数。



当我们理解了正则化的时候,我们自然而然的会产生一个新的疑问,像上面的那个例子里,你给我画出了拟合曲线,然后比较了下,我知道

θ3、θ4存在很糟糕的影响到了我的拟合效果,这个时候,我自然而然的会想到我应该去“干掉”θ3、θ4,就算不干掉,我也要尽可能的削弱这两个参数在我预测函数中的影响。

但是,问题来了?我们在大多数情况下,基本上所有的情况下,其实是不知道到底哪个参数θj对我的预测产生了不好的影响,换句话说,其实我是不知道该对哪些参数动手的!!!那么,这个时候我们应该怎么办呐???

看一个具体的例子:对于房屋价格预测,我们可能有上百种特征,我们谈到了一些可能的特征,比如说 x1 是房屋的尺寸, x2 是卧室的数目, x3 是房屋的层数等等。 那么我们可能就有一百个特征。跟前面的多项式例子不同,我们对这些参数其实是不知道的,换到那个问题里,我们是不知道 θ3、θ4 是高阶多项式的项。

所以,如果我们有一个袋子, 在这个袋子里,如果我们有一百个特征,我们是很难提前选出那些关联度更小的特征的,也就是说如果我们有一百或一百零一个参数,我们不知道到底该挑选哪一个的!我们并不知道如何选择参数、如何缩小参数的数目,因此在正规化里,我们要做的事情就是修改我们的代价函数,缩小我所有的参数值

因为你知道,我不知道到底是哪一个或哪两个要去缩, 所以索性我们就在代价函数的后面添加一项,就像我们在方括号里的这项。当我添加一个额外的正则化项的时候,我们收缩了每个参数,也因此,我们会使我们所有的参数 θ1 θ2 θ3 直到 θ100 的值变小。



我们正则化的两个目标:

1)就是我们想要训练使得假设能够更好地拟合训练数据。

2)我们想要保持参数值较小。

而公式中正则化参数 λ 的作用就是:控制在两个不同的目标中的一个平衡关系。通过空着这个参数控制 λ 从而可以很好的控制两个目标的平衡:平衡拟合训练数据 和 保持参数值较小,从而来保持假设函数的形式相对简单,来避免过度的拟合。

看上图,我们使用了正规化目标的方法,得到得,实际上是一个曲线,需要说明的是这个曲线不是一个真正的二次函数,而是更加的流畅和简单,也许就像这条紫红色的曲线一样。

Q:在正则化线性回归中,如果正规化参数值被设定为非常大,那么将会发生什么呢?

A:我们将会非常大地惩罚参数θ1、θ2、 θ3、θ4,也就是说,最终惩罚 θ1 θ2 θ3 θ4 在一个非常大的程度,那么就会使所有这些参数接近于零的。最终只剩下一个θ0,拟合曲线变成一条直线。



3、Regularized Linear Regression

正则化的线性回归

 当我们使用正则化线性回归时,我们需要做的就是,在每一个被正规化的参数 θj 上,乘以了一个 比1小一点点的数字,也就是把参数压缩了一点,然后,我们执行跟以前一样的更新。





4、Regularized Logistic Regression



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息