一、Overfitting的定义
什么叫做过拟合呢?我们通过线性回归中房价预测的例子来进行说明。三张图的training set散点图是一样的,第一张图中通过一次的线性函数进行预测,我们会发现拟合的效果不太好,因为房价的散点是存在一个明显的“高原段”的,这种情况我们称之为underfit“欠拟合”;第二张图中用了二次函数进行拟合,发现效果有所提升,是比较理想的拟合;第三张图我们添加了三次、四次的多项式,散点图中所有的点完美地出现在拟合曲线上,然而事实上的房价变化并不会随着size发生如此扭曲的变化,另一方面它的方差过高(“图中写的high variance”),这种时候就称之为过拟合。(但我不明白为何会出现高方差的问题?)
logistic回归上也是一样的道理:
过拟合的具体定义是,当我们努力地去将函数贴合训练集时,可以把训练集拟合得非常好,这个时候代价函数会接近甚至等于0,但是这样花费太多心思去迎合训练集得到的曲线往往在推广方面的效果是很差的,也就是说我们无法用这样一条曲线去预测房价/肿瘤的性质,这就叫做过拟合。
二、如何解决过拟合问题
在上述的例子中我们只遇到了一到两个features的问题,这个时候可以通过画图来观察是否出现了过拟合的情况,但是当变量的数量进一步提升后,我们就很难去进行可视化。这个问题不仅仅是n次项的问题,还有是有的features重要,有的features不太重要的问题,因此也不是简单地把高次项去掉就能避免过拟合的情况。
第一种解决方法是减少变量数量,通过某些算法来剔除一些不太重要的变量,来减轻过拟合的情况,但是剔除变量也会减少信息量;第二种方法称为正则化方法“regularization”,可以保留所有的变量,但减少参数θj的值
1.减少特征数量
没啥好说的
2.正则化方法
先举个例子来说明其基本思想:
我们知道,如果给房屋价格的例子加上三次项、四次项就容易发生过拟合的情况,所以一种想法就是将其θ3、θ4缩小,那么需要怎么做呢?通常来说我们的cost function为:
假如说我们在后面加上
由于前面的参数1000很大,这个时候要让这个新的代价函数最小化,我们需要让θ3、θ4≈0才行,因此在minimize的过程中就实现了对参数的penalize。而一旦这两个参数接近于0,三次项和四次项就近乎不存在了,整个函数就趋近于二次函数,从而避免了过拟合问题
接下来我们尝试着将其推广,假如说我们有一百个特征(变量),我们很难提前知道哪些到底是重要的,而哪些是不重要的,因此我们将其放入∑ θj²,并在前面加上参数λ(类似上一个例子中的1000),一般我们把这整个项称为正则化项,λ称为正则化参数
需要注意的是,i是从1开始的,也就是说θ0并没有被惩罚,这是约定俗成的。
正则化参数λ要做的是在两个目标之间做好平衡,第一个目标是让假设函数很好地适应训练集,第二个目标是保持参数值θ较小,通过对这两个目标的平衡,来保持假设函数的形式相对简单,从而避免过拟合。(这段话理解得模模糊糊的)
存在一个疑问,用同一个λ应用于所有的参数θ,那假如说有的特征很重要的话,那也和其他不重要的特征一样被惩罚了?这样不是不太合理吗?
假如说λ给出了一个特别大的值,比如10的10次方,那么会怎么样呢?这种时候θj就会特别的小,由于θ0没有被包括在内,所以假设函数就剩下一个θ0,也就是一条直线,也就是发生了欠拟合(underfitting)的情况。举这个例子是为了说明合理地选择一个λ的大小是十分重要的,后续课程会教我们如何选择。
*不太重要的东西
接下来讲的内容不是特别重要,就是如何用梯度下降算法和正规方程法来求参数。我们过去也用过这两种方法来求普通的回归方程的未知参数,现在只是把普通的代价函数加上正则化项之后,用同样的方法求参。
①在线性回归中的使用
之前学过的梯度下降法的同步更新是这样的,复习一下,红框的是代价函数关于θ0的偏导数,青框的是代价函数关于θj的偏导,因此更新的办法就是用θ-学习速率*对应的偏导
由于太久没复习前面的,我之前错误地认为被两种颜色框框起来的是代价函数,事实上代价函数是:
这样一看确实是其偏导数
那么,当我们的代价函数加上了正则化项之后
其偏导数就变成了:
与之前的区别就在于多了一个小尾巴,也就是对正则化项求关于θj的偏导。
而这个公式可以将其化成下图中最后一个公式(通过提取公因式θj):
在这个公式里,最后一项与上面的式子完全一致(即和没有正则项的时候),而前一项中,由于(1-αλ/m)这项是略小于1的,因此我们可以大致地将其看作0.99Θj,也就是说,有正则项的θj的更新,与没有正则项的θj的更新,唯一区别在于一个是0.99θj减去一堆偏导,一个是1θj减去同样的一堆偏导。
至于那项为什么是略小于1,说实话不太理解,文中说的是:
关于带有正则化项的代价函数如何用正规方程法来求参,具体的就不讲了,但有一点是需要注意的,就是在之前的正规方差法的课程中,我们提到当样本总数m小于特征数量n时,矩阵是不可逆的,这个时候无法求解,而加入了正则化之后,当正则化参数λ大于0时,该矩阵就是可逆的。也就是说,正则化方法同时还能帮助我们解决使用正规方程法时矩阵不可逆的问题。具体的推导没有说明。
②在逻辑回归中的使用
之前有讲过,logistic回归的代价函数可以从一个分成两段的分段函数简化成以下形式:
在线性回归中,添加了正则项的代价函数为:
对于logistic回归而言也是一样的,在后面加上同样的正则项,得到:
然后同样用梯度下降算法来求θ0和θj,得到:
这时候我们会发现,得到的式子和线性回归θ0、θj的式子一模一样!是否出现了什么问题呢?其实这是正常的,同样的事情在学不带正则项的logistc方程时也出现过,当时给的ppt是这个,看到了就能回忆起来了:
也就是说虽然式子的形式是一样的,但实际上hθ(x)的内涵是不一样的。
该课的后半部分说实话没太明白,一方面是纯英文的,另一方面,他是说要介绍一种“more advanced optimization methods”,但我感觉只是讲了如何把上面教的这些内容在octave上实现而已
ps:该课指的是
最后一段真有意思: