声明:本文是以吴恩达机器学习系列课程为学习对象而作的学习笔记。本文对应P39-P42。
过拟合问题
下面是一个用线性回归来预测房价的例子:
第一种拟合没有很好地拟合训练集,称其为欠拟合。或者说,这个算法具有高偏差。
第二种恰当地拟合了训练集。
第三种拟合似乎很好地拟合了训练集,代价函数实际上可能非常接近于0,毕竟它通过了所有的数据点,但这是一条扭曲的,不停上下波动的曲线。事实上我们并不认为它是一个预测房价的好模型。我们称其为过度拟合,或说这个算法具有高方差。如果我们拟合一个高阶多项式,那么这个假设函数能拟合几乎所有的数据,这就面临可能的函数太过庞大,变量太多的问题,我们没有足够的数据来约束它来获得一个好的假设函数。同时,它也无法泛化到新的样本中。
相同的情况在逻辑回归中同样存在:
总结一下:
绘制假设模型曲线,可以作为决定多项式阶次的一种方法,但这并不是总是有用的。事实上更多的时候,我们的很多学习问题需要有很多变量。
当我们拥有如此多的变量时,绘图变得更难,通过数据的可视化来决定保留哪些特征变量也更难。
解决方法
- 尽量减少选取变量的数量
- 人工检查变量清单,并以此决定哪些变量更为重要,哪些特征变量应该保留,哪些应该舍弃
- 同时,在舍弃特征变量的时候,你也会舍弃关于问题的一些信息
- 正则化
- 保留所有的特征变量,但是减少量级或参数θ_j的大小
- 所有的特征变量都会对y产生影响
代价函数
在前文中我们不难发现:如果我们使用一个二次函数来拟合这些数据,我们会得到一个不错的拟合效果。然而如果我们使用一个阶数过高的多项时去拟合数据,会导致过拟合。
我们不妨在函数中加入惩罚项,使得参数:θ_3和θ_4都非常小:
容易看出这就是那条平方公式加上后面那一串,1000只是随便一个比较大的数。
假如我们要最小化这个函数,要使这个修改后的函数尽可能小的方法只有一个,就是要θ_3和θ_4尽可能小,让它们接近于0。如此一来就像我们直接去掉了这两项。那这个函数实际上就是一个二次函数加上一些非常小的项。
在这个特定的例子中,我们看到了加入惩罚,增大两个参数所带来的结果,而这就是正则化背后的思想:
如果我们的参数值较小,它意味着一个更简单的假设模型。大体上来说,如果将上述参数都加上惩罚项,就相当于尽量去简化这个假设模型,因为这些参数数值越小,说明我们得到的函数就会越平滑,也越简单,也更不容易出现过拟合的问题。
总结一下:
写下正则化的优化目标J(θ),蓝笔括住的那一项即为正则化项,里面的λ被称为正则化函数,其作用是控制两个不同目标之间的平衡关系。
第一个目标与目标函数的第一项有关:我们想更好地拟合数据。
第二个目标与目标函数的第二项有关,同时与正则化项有关:我们要保持参数尽量地小。
线性回归的正则化
梯度下降法
依旧是正则化代价函数J(θ)及优化目标。我们对其运用梯度下降法:
可以看到,我们把θ_0分离出来了。原因是,对于正则化线性回归,我们惩罚对象是参数θ_1和θ_2,一直到θ_n,我们没有惩罚θ_0。因此在修改这个正则化线性回归的算法时,在处理θ_0的时候,会将其区别对待。
具体地,如果我们要用正则化项修改这个算法,我们要做的改动如下:
如此一来,我们就可以对这个正则化函数用梯度下降法进行最小化,而框起来的部分即为偏导数。
如果将包含θ_j的项全部汇合起来,那么就可以把上式写成如下形式:
其中,θ_j的系数是一个比1小一点点的数。每次更新的时候,θ_j向0的方向缩小了一点点,即θ_j的平方范数变小了。而减号后面的部分则与添加正则项的梯度下降更新一样。
逻辑回归的正则化
首先列出各要素:
其余部分与线性回归的类似: