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

1. 偏差与方差

首先要了解两个概念:偏差与方差。
下图中红色中心为测试数据的真实标记;蓝色点为模型产生的预测值。
蓝色点的中心与红色中心的距离就是偏差(Bias)
蓝色小点与蓝色点中心的平均距离就是方差(Variance)

在这里插入图片描述
通俗理解就是,偏差指的是模型预测数据与真实数据的差距,用来表示模型预测的准确性;方差指的是模型预测数据的波动,用来表示模型预测的稳定性

2. 欠拟合与过拟合

在这里插入图片描述
上图第一个模型中,通过对数据进行线性回归拟合,得到一条直线。但可以发现,实际数据与直线上的点有着很大的偏差(bais),可见线性回归并没有很好地拟合训练数据。此类情况称为欠拟合(underfitting),或者叫作叫做高偏差(bias)

上图第二个模型中,在线性回归的基础上加入一个二次项,用二次函数去拟合。可以拟合出一条曲线,事实也证明这个拟合效果很好。

上图第三个模型中,对于该数据集用一个四次多项式来拟合。因此在这里我们有五个参数θ0到θ4,这样我们同样可以拟合一条曲线,通过我们的五个训练样本,我们可以得到一条曲线。
一方面,我们似乎对训练数据做了一个很好的拟合,因为这条曲线通过了所有的训练实例。但是,这实际上是一条很扭曲的曲线,它不停上下波动,试着去完全模拟训练集数据的情况。可想而知,其泛化能力较差"泛化"指的是一个假设模型能够应用到新样本的能力),运用在测试集数据上,表现会很差,有些对于训练集数据“私人定制”的意味了。因此,我们并不认为它是一个预测房价的好模型。此类情况叫做过拟合(overfitting),也叫高方差(variance)。

从数学上来说,高阶多项式具有很强的数据拟合能力,可以很好地拟合训练集数据,但这也就面临函数可能太过庞大的问题,变量太多。同时若我们没有足够的数据集(训练集)去约束这个变量过多的模型,那么就会发生过拟合。
在这里插入图片描述
在这个图中,第一个模型为欠拟合,第二个模型较合理,第三个模型发生了过拟合。

3.正则化

那么,如果发生了过拟合问题,应该如何处理?

过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办法。
在这里插入图片描述

方法一:尽量减少选取变量的数量

我们可以人工检查每一项变量,确定哪些变量更为重要,然后,保留那些更为重要的特征变量。
至于哪些变量应该舍弃,这会涉及到模型选择算法,这种算法是可以自动选择采用哪些特征变量,自动舍弃不需要的变量。
这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

方法二:正则化

正则化中,我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。

这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的产生。
在这里插入图片描述
上图的式子是我们的优化目标,我们需要尽量减少代价函数(Cost Function)的均方误差。
在这里插入图片描述
对于这个函数,我们对它添加一些项,加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方,1000 只是我们随便写的某个较大的数字而已。目的是最小化这个新的代价函数,我们要让 θ3 和 θ4 尽可能小。
因为,如果你在原有代价函数的基础上加上 1000 乘以 θ3 这一项 ,那么这个新的代价函数将变得很大,当我们最小化这个新的代价函数时, 我们将使 θ3 的值接近于 0,同样 θ4 的值也接近于 0,就像我们忽略了这两个值一样。如果我们做到这一点( θ3 和 θ4 接近 0 ),那么我们将得到一个近似的二次函数。
在这里插入图片描述
我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3、 θ4 非常接近于0)。显然,这是一个更好的假设。


在这里插入图片描述
正则化的思想为:如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。

在我们上面的例子中,我们惩罚的只是 θ3 和 θ4 ,使这两个值均接近于零,从而我们得到了一个更简单的假设,实际上这个假设大抵上是一个二次函数。

但更一般地说,如果我们像惩罚 θ3 和 θ4 这样惩罚其它参数,那么我们往往可以得到一个相对较为简单的假设。

实际上,参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。 因此 就不易发生过拟合的问题。


在具体的例子中,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道 θ3 和 θ4 是高阶多项式的项。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。

因此,在正则化里,我们要减小我们的代价函数所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。

所以,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩每个参数。
在这里插入图片描述

顺便说一下,按照惯例,我们没有去惩罚 θ0,因此 θ0 的值是大的。这就是一个约定从 1 到 n 的求和,而不是从 0 到 n 的求和。但其实在实践中
这只会有非常小的差异,无论你是否包括这 θ0 这项。但是按照惯例,通常情况下我们还是只从 θ1 到 θn 进行正则化。

λ 为正则化参数。
λ 控制两个不同的目标中的平衡关系。
第一个目标就是我们想要训练,使假设更好地拟合训练数据。我们希望假设能够很好的适应训练集。
第二个目标是我们想要保持参数值较小。(通过正则化项)

对于我们的房屋价格预测来说,我们之前所用的非常高的高阶多项式来拟合,我们将会得到一个非常弯曲和复杂的曲线函数,现在我们只需要使用正则化目标的方法,那么你就可以得到一个更加合适的曲线,但这个曲线不是一个真正的二次函数,而是更加的流畅和简单的一个曲线。这样就得到了对于这个数据更好的假设。


若正则化参数值 λ 被设定为非常大,则会使所有参数接近于零。
在这里插入图片描述

如果我们这么做,那么就是我们的假设中相当于去掉了这些项,并且使我们只是留下了一个简单的假设,这个假设只能表明房屋价格等于 θ0 的值,那就是类似于拟合了一条水平直线,对于数据来说这就是一个欠拟合 (underfitting)。这种情况下这一假设它是条失败的直线,对于训练集来说这只是一条平滑直线,它没有任何趋势,它不会去趋向大部分训练样本的任何值。
这句话的另​​一种方式来表达就是这种假设有过于强烈的"偏见" 或者过高的偏差 (bais),认为预测的价格只是等于 θ0 。对于数据来说这只是一条水平线。

因此,为了使正则化运作良好,我们应当注意一些方面,应该去选择一个不错的正则化参数 λ 。当我们以后讲到多重选择时我们将讨论一种方法来自动选择正则化参数 λ ,为了使用正则化,接下来我们将把这些概念应用到到线性回归和逻辑回归中去,那么我们就可以让他们避免过度拟合了。

猜你喜欢

转载自blog.csdn.net/fakejvruo/article/details/124166490