欠拟合(Underfitting)与过拟合(Overfitting)
上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子。可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们的训练集,这就叫欠拟合(Underfitting),但是如果x的次数太高(两组图的第三张),拟合虽然很好,但是预测能力反而变差了,这就是过拟合(Overfitting)。
对于欠拟合,我们可以适当增加特征,比如加入x的多次方。通常这很少发生,发生的多的都是过拟合。那么如何处理过度拟合呢?
1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA)。
2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。
加入正则化的代价函数
假设上面的线性回归过拟合例子使用使用的模型是:
我们可以看出这些高次项(3次方、4次方)导致了过拟合,高次项参数大了,从图像来看就是会变得非常曲折,高次项参数小了图像就会较为平整。所以这里我们要做的就是一定程度上减小高次项参数,削弱高次项的影响力。我们的做法是修改代价函数,给theta3、theta4一些惩罚,使得最终选出来的theta3、theta4比较小:
J(theta)=
通过这样的代价函数选择出的theta3 和theta4 对预测结果的影响就比之前要小许多,因为theta3、4一试图变大,代价就会变大很多,那么在使用梯度下降最小化J(theta)时,theta3、4就会变得比较小。
假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:
- 其中 lambda 又称为正则化参数(Regularization Parameter)。
- 根据惯例,我们不对theta0进
行惩罚。否则得到的图像比较靠近x轴,那整个模型就偏离数据了。
经过正则化处理的模型与原模型的可能对比如下图所示:
这里的lambda的选择也是较为关键的一点,如上图,theta太小甚至为0,那可能导致过拟合,而lambda太大,图像就会得到一条类似与平行于x轴的直线。
正则化后的线性回归、逻辑回归模型
正则化线性回归
重新将新的代价函数带入梯度下降算法,经过求导、化简后,得到的梯度下降如下:
对于j=1,2,…,n,thetaj的更新式子可以化简为:
可以看到(不看theta0),算法的变化就在于theta每次减少了一个额外的alpha*lambda/m
。
同样的,可以在正规方程使用正则化:
正则化逻辑回归
同样带入化简,得:
发现得到的式子和线性回归一样,当然,两者的区别之前已经分析过,h(x)不同。