一、过拟合问题
(一)问题的提出
过拟合问题的定义,以线性回归为例,在房价预测的数据集中,假设函数产生的曲线有三种情况,如下图:
![]() | ![]() | ![]() |
(1)欠拟合 | (2)正常拟合 | (3)过拟合 |
第一种情况,回归曲线不能很好的拟合数据集,假设函数具有高偏差,被称为欠拟合;
第二种情况,在第一种的基础上增加了一个二次项,可以较好的拟合样本点;
第三种情况,在第二种情况下又增加了三次项和四次项,似乎很好的拟合了数据集,因为它通过了所有的数据点。这种情况我们称为过度拟合,假设函数有高方差。这是由于只要函数足够复杂,那么肯定有一个多项式能够拟合所有的点,但是由于样本点的不足,无法对这个多项式产生很好的约束,这就产生了过度拟合。过度拟合会降低模型的泛化能力,对新样本的预测能力大大下降。
以逻辑回归分类为例,在同一个数据集中,由于假设函数的复杂程度不同会产生下面三种情况:
![]() | ![]() | ![]() |
(1)欠拟合 | (2)正常拟合 | (3)过拟合 |
(二)解决过拟合问题的方法
在样本特征过多,但是数量过少时,往往容易产生过拟合现象。
1、减少选择变量的数量
(1)人工选择变量清单,减少变量
(2)模型选择算法(以后的课程会讲),自动选择特征
舍弃变量的同时,也舍弃了一些关于问题的信息。
2、正则化
(1)保存所有的特征变量,但是减小量级或参数的大小
当有很多特征时,效果很好,因为每个特征都有助于预测y
二、代价函数
在上述问题中,三次项四次项的参数()过大,会导致过拟合问题,降低模型的泛化能力,所以我们要尽可能小的降低
均方误差代价函数的形式为,我们的目的就是最小化这个函数,那么现在我们可以对这个函数进行一些修改,如添加两个项,使其变成
,其中
的参数我们设置为了1000是个很大的数,公式为了最小化代价函数,就会尽可能的减少
的值,也就是接近于0,好像去掉了这两项一样。
举例说明:
有一个数据集,有100个特征x,假设函数存在101个参数
特征:
参数:
但是此时,我们不知道选择那些参数来缩小它们的值,所以在实际操作中,我们会对所有的参数进行最小化
如线性回归的代价函数为
,我们在其中加入正则化项
,使之变为
,即从
到
都最小化,一般会忽略
,这是约定俗成的,也可以不忽略,对结果没有影响。
其中,
被称为正则化参数。
在上述例子中正则化的代价函数中存在两项,其中,第一项是为了使函数更好的拟合样本点,第二项是为了使得各个参数尽可能的小,
就是控制两者平衡的参数。
在线性回归中,如果被设置的过大的话,就会对参数的惩罚程度过大,使得它们都接近于0,最后假设模型就只剩下一个参数
,这时假设函数会接近于一条直线,如下图所示,会导致模型的欠拟合。
所以我们要合理的选择正则化参数
三、线性回归的正则化
在学习线性回归时,我们推导了两种方法,一种是梯度下降,一种是正规方程,本部分只介绍梯度下降的正则化方法(正规方程的听不懂,所以没写 )。
在没有加入正则化方法时,线性回归的梯度下降方法为不断的迭代下面这个函数:
由于在新的代价函数方程中加入了正则化项,,对于此式,同样对其求偏导
,可以得出此时的
,对于
我们一般是单独计算的,所以正则化的线性回归算法为重复下列公式:
将式子合并同类项,得到下式:
的系数
中,
是正则化系数一般远远小于样本总数m,并且学习率
也是一个很小的数,所以这个系数是一个接近于1但小于1的数,这样
每次都会变小一些,
的第二项参数就是和没正则化前一样。
四、逻辑回归的正则化
同线性回归的正则化相同,逻辑回归的正则化如下:
但注意,逻辑回归中的