【机器学习】过拟合、欠拟合与正则化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85201251

过拟合(over-fitting)

在算法对模型参数的学习过程中,如果模型过于强大,比如说,样本空间分布在一条直线的附近,那么我们的模型最好是一条直线, h θ ( x ) = θ 0 + θ 1 x 1 h_\theta(x)=\theta_0+\theta_1x_1 。但我们并不知道数据的情况,可能我们的函数是这样的: h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 2 + θ 3 x 3 3 h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2^2+\theta_3x_3^3 ,此时图像不会是一条直线,它会像一条弯曲的曲线,完美地穿过各个数据点。
在过拟合的情况下,损失函数的值会非常的小。得到的模型无法泛化,对新样本的适应性很差。

欠拟合(under-fitting)

欠拟合的情况和过拟合相反,如果样本空间是一条曲线,如果我们的模型最终只能学习出来一条直线,也就是我们的模型没有学习到数据的特点,具有较高的偏差,这种情况下,损失函数的值会比较大。

正则化

对于欠拟合,往往是模型特征过多导致的,可以使用降低特征数量的方式来解决,比如,手动去除特征中不必要的参数,或者使用一定的模型选择算法来自动选择特征。
还有一种方法是正则化。通过给模型添加正则项的方式,对参数进行惩罚,降低特征对最终的决策边界的影响。
比如,我们在线性回归的损失函数 J ( θ ) = 1 2 m [ i = 1 m ( h θ ( x ( i ) y ( i ) ) + λ j = 1 m θ j 2 ) ] J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)})+\lambda\sum_{j=1}^m\theta_j^2)] 中加入 λ j = 1 m θ j 2 \lambda\sum_{j=1}^m\theta_j^2 。其中 λ \lambda 被称为正则化参数。对于 λ \lambda 的选取,不应过大也不应过小,对于过大的 λ \lambda ,对参数的惩罚过大,相当于参数对整体式子不会产生影响,导致欠拟合的发生。对于过小的 λ \lambda ,对参数的惩罚较小,无法改善整体的情况,仍旧会导致过拟合。我们应该选取合适的 λ \lambda ,这样在每次最小化的过程中, θ \theta 的值会变得更小,因此特征对整体的影响也变小,对于图形的拟合也会变得比较平滑。
带有正则的梯度下降的更新公式如下:
θ j : = θ j α [ 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) + λ m θ j ] \theta_j:=\theta_j-\alpha[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j]
进一步化简为如下形式:
θ j : = θ j ( 1 α λ m ) α 1 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) x j ( i ) \theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

猜你喜欢

转载自blog.csdn.net/Hemk340200600/article/details/85201251