机器学习 | 评估原理——回归中的正则化(含过拟合、惩罚)

Hi,大家好,我是半亩花海。接着上次的准确率、精确率、召回率、F1值继续更新《白话机器学习的数学》这本书的学习笔记,在此分享回归中的正则化(含过拟合、惩罚)相关评估原理。本章的基于前几节已建立的模型进行评估知识的学习,欢迎大家交流学习!

目录

一、过拟合

二、正则化

1. 正则化的方法

2. 正则化的效果

三、惩罚


一、过拟合

之前我们提到过的模型只能拟合训练数据的状态被称为过拟合(Overfitting)。记得在学习回归的时候,过度增加函数 f_{\boldsymbol{\theta}}(\boldsymbol{x}) 的次数会导致过拟合。过拟合不止在回归时出现,分类时也经常发生,我们要时常留意它。

避免过拟合的方法大致有如下三种:

  • 增加全部训练数据的数量
  • 使用简单的模型
  • 正则化

首先,重要的是增加全部训练数据的数量。之前我也讲过,机器学习是从数据中学习的,所以数据最重要。另外,使用更简单的模型也有助于防止过拟合。


二、正则化

1. 正则化的方法

还记得我们在讲解回归的时候提到的目标函数吗?详见如下面的文章《机器学习 | 回归算法原理——最小二乘法-CSDN博客》等内容。

E(\boldsymbol{\theta})=\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)\right)^2

我们要向这个目标函数增加下面这样的正则化项

R(\boldsymbol{\theta})=\frac{\lambda}{2} \sum_{j=1}^m \theta_j^2

那么现在的 E(\boldsymbol{\theta}) 则变成如下表达式。

\begin{aligned} E(\boldsymbol{\theta}) & =\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)\right)^2+R(\boldsymbol{\theta}) \\ & =\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)\right)^2+\frac{\lambda}{2} \sum_{j=1}^m \theta_j^2 \end{aligned}

我们要对这个新的目标函数进行最小化,这种方法就称为正则化

式中,m 为参数的个数,不过一般来说不对 \theta_0 应用正则化。所以仔细看会发现 j 的取值是从 1 开始的。也就是说,假如预测函数的表达式为 f_{\boldsymbol{\theta}}(\boldsymbol{x})=\theta_0+\theta_1 x+\theta_2 x^2,那么 m = 2 就意味着正则化的对象参数为 \theta_1\theta_2\theta_0 这种只有参数的项称为偏置项,一般不对它进行正则化)。\lambda决定正则化项影响程度的正的常数。这个值需要我们自己来定。


2. 正则化的效果

光看表达式可能不容易理解。我们结合图来想象一下。首先把目标函数分成两个部分。

\begin{aligned} C(\boldsymbol{\theta}) & =\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)\right)^2 \\ R(\boldsymbol{\theta}) & =\frac{\lambda}{2} \sum_{j=1}^m \theta_j^2 \end{aligned}

C(\theta ) 是本来就有的目标函数项,R(\theta ) 是正则化项。C(\theta ) 和 R(\theta )相加之后就是新的目标函数,所以我们实际地把这两个函数的图形画出来,加起来看看。不过参数太多就画不出图来了,所以这里我们只关注 \theta_1。而且为了更加易懂,先不考虑 \lambda

我们先从 C(\theta ) 开始画起,不用太在意形状是否精确。在讲回归的时候,我们说过这个目标函数开口向上,还记得吗?所以,我们假设它的形状如下所示。

从图中我们可以大致看出最小值是在 \theta_1=4.5 附近的。

从这个目标函数在没有正则化项时的形状来看,\theta_1=4.5 附近是最小值。接下来是 R(\theta ),它就相当于 \frac{1}{2} \theta_1^2,所以 R(\theta ) 是过原点的简单二次函数

实际的目标函数是这两个函数之 E(\theta) = C(\theta) + R(\theta),我们来画一下它的图形。顺便考虑一下最小值在哪里。\theta_1 各点上的 C(\theta )R(\theta )高相加,然后用线把它们相连即可,如下图所示。

从图中我们可以看出来最小值是 \theta_1=0.9,与加正则化项之前的 \theta_1=4.5 相比,\theta_1更趋向 0,这便是正则化的效果。由此可见,正则化可以防止参数变得过大有助于参数接近较小的值。虽然我们只考虑了 \theta_1,但其他 \theta_j 参数的情况也是类似的。

当然,参数值变小,意味着该参数的影响也会相应地变小。比如,有下面这样的一个预测函数 f_\theta(x),我们假定它是一个简单的二次方程。

f_{\boldsymbol{\theta}}(\boldsymbol{x})=\theta_0+\theta_1 x+\theta_2 x^2

极端一点,假设 \theta _2 = 0,这个表达式就从二次变为一次了,这就意味着本来是曲线的预测函数变为直线,如下图所示。

这正是通过减小不需要的参数的影响,将复杂模型替换为简单模型防止过拟合的方式。


三、惩罚

为了防止参数的影响过大,在训练时要对参数施加一些惩罚。比如上面提到的 \lambda 就是可以控制正则化惩罚的强度

\begin{aligned} C(\boldsymbol{\theta}) & =\frac{1}{2} \sum_{i=1}^n\left(y^{(i)}-f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)\right)^2 \\ R(\boldsymbol{\theta}) & =\frac{\lambda}{2} \sum_{j=1}^m \theta_j^2 \end{aligned}

比如令 \lambda=0,那就相当于不使用正则化

\lambda 越大,正则化的惩罚也就越严厉

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值