[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

时间:2021-09-20 10:18:56

欠拟合(Underfitting)与过拟合(Overfitting)

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子。可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们的训练集,这就叫欠拟合(Underfitting),但是如果x的次数太高(两组图的第三张),拟合虽然很好,但是预测能力反而变差了,这就是过拟合(Overfitting)。

对于欠拟合,我们可以适当增加特征,比如加入x的多次方。通常这很少发生,发生的多的都是过拟合。那么如何处理过度拟合呢?

1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA)。

2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。

加入正则化的代价函数

假设上面的线性回归过拟合例子使用使用的模型是:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

我们可以看出这些高次项(3次方、4次方)导致了过拟合,高次项参数大了,从图像来看就是会变得非常曲折,高次项参数小了图像就会较为平整。所以这里我们要做的就是一定程度上减小高次项参数,削弱高次项的影响力。我们的做法是修改代价函数,给theta3、theta4一些惩罚,使得最终选出来的theta3、theta4比较小:

J(theta)=[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

通过这样的代价函数选择出的theta3 和theta4 对预测结果的影响就比之前要小许多,因为theta3、4一试图变大,代价就会变大很多,那么在使用梯度下降最小化J(theta)时,theta3、4就会变得比较小。

假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

  • 其中 lambda 又称为正则化参数(Regularization Parameter)。
  • 根据惯例,我们不对theta0进

    行惩罚。否则得到的图像比较靠近x轴,那整个模型就偏离数据了。

经过正则化处理的模型与原模型的可能对比如下图所示:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

这里的lambda的选择也是较为关键的一点,如上图,theta太小甚至为0,那可能导致过拟合,而lambda太大,图像就会得到一条类似与平行于x轴的直线。

正则化后的线性回归、逻辑回归模型

正则化线性回归

重新将新的代价函数带入梯度下降算法,经过求导、化简后,得到的梯度下降如下:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

对于j=1,2,…,n,thetaj的更新式子可以化简为:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

可以看到(不看theta0),算法的变化就在于theta每次减少了一个额外的alpha*lambda/m

同样的,可以在正规方程使用正则化:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

正则化逻辑回归

同样带入化简,得:

[笔记]机器学习(Machine Learning) - 03.正则化(Regularization)

发现得到的式子和线性回归一样,当然,两者的区别之前已经分析过,h(x)不同。