机器学习 | 评估原理——分类中的正则化

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

目录

一、分类的正则化

二、包含正则化项的表达式的微分


一、分类的正则化

在上一篇问文章中我们介绍了正则化,正则化是过拟合的有效手段。上一节《机器学习 | 评估原理——回归中的正则化(含过拟合、惩罚)-CSDN博客》讨论的是回归的情况,对于分类也可以应用正则化,大家还记得逻辑回归的目标函数吗?也就是对数似然函数,如下所示

同理,分类也就是在这个目标函数中增加正则化项即可。

注意一下前面添加了负号,那么对数似然函数本来以最大化为目标。但是,这次我想让它变成和回归的目标函数一样的最小化问题,所以加了负号。这样就可以像处理回归一样处理它,所以只要在整体后面加上正则化项即可。

换句话说,反转符号是为了将最大化问题替换为最小化问题。反转了符号之后,在更新参数时就要像回归一样,与微分的函数的符号反方向移动才行。目标函数的形式变了,参数更新的表达式也会变。不过,只要再把正则化项的部分也微分即可。


二、包含正则化项的表达式的微分

在之前的的学习中,我们把回归的目标函数分成了 C(\theta ) 和 R(\theta ),这是新的目标函数的形式,我们要对它进行微分。

E(\boldsymbol{\theta})=C(\boldsymbol{\theta})+R(\boldsymbol{\theta})

因为是该目标函数式加法样式,所以需要对各部分进行偏微分。

C(\theta ) 是原来的目标函数,讲解回归的时候我们已经求过它的微分形式,如下式所示。

\frac{\partial C(\boldsymbol{\theta})}{\partial \theta_j}=\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}

所以接下来只要对正则化项进行微分即可。正则化项只是参数平方的和(如下式所示),所以其微分也比较好求。

\begin{aligned} R(\boldsymbol{\theta}) & =\frac{\lambda}{2} \sum_{j=1}^m \theta_j^2 \\ & =\frac{\lambda}{2} \theta_1^2+\frac{\lambda}{2} \theta_2^2+\cdots+\frac{\lambda}{2} \theta_m^2 \end{aligned}

对正则化项进行微分的结果如下。

可以看出,在微分时表达式中的 \frac{1}{2} 被抵消,微分后的表达式变简单了。那么最终的微分结果如下式所示。

\frac{\partial E(\boldsymbol{\theta})}{\partial \theta_j}=\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}+\lambda \theta_j

将此最终微分结果代入到参数更新表达式里,得到参数更新表达式如下式所示。

\theta_j:=\theta_j-\eta\left(\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}+\lambda \theta_j\right) 

这就是这加入了正则化项的参数更新表达式。不过,我们之前说过一般不对 \theta_0 应用正则化R(\theta)\theta_0 微分的结果为 0,所以 j = 0 时表达式中的 \lambda \theta _j 就消失了。因此,实际上我们需要像这样区分 j = 0 和 j > 0 这两种情况,如下两式所示。

\begin{aligned} & \theta_0:=\theta_0-\eta\left(\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}\right) \\ & \theta_j:=\theta_j-\eta\left(\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}+\lambda \theta_j\right) \quad(j>0) \end{aligned}


逻辑回归的流程也是一样的:

原来的目标函数是 C(\theta ),正则化项是 R(\theta),现在对 E(\theta) 进行微分。

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

在上面的表达式中我们已经求过逻辑回归原来的目标函数 C(\theta ) 的微分,不过现在考虑的是最小化问题,所以要注意在前面加上负号。也就是要进行符号的反转。

另外,刚才我们已经求过正则化项 R(\theta) 的微分了,可以直接使用。

也就是说这次不需要任何新的计算。那么,参数更新表达式应该是这样的——这次我把 \theta_0 的情况区分出来了。

\begin{aligned} & \theta_0:=\theta_0-\eta\left(\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}\right) \\ & \theta_j:=\theta_j-\eta\left(\sum_{i=1}^n\left(f_{\boldsymbol{\theta}}\left(\boldsymbol{x}^{(i)}\right)-y^{(i)}\right) x_j^{(i)}+\lambda \theta_j\right) \quad(j>0) \end{aligned}


刚才我们介绍的方法其实叫 L2 正则化。除 L2 正则化方法之外,还有 L1 正则化方法。它的正则化项 R 是这样的。

R(\boldsymbol{\theta})=\lambda \sum_{i=1}^m\left|\theta_i\right|

L1 正则化的特征是被判定为不需要的参数会变为 0,从而减少变量个数。而 L2 正则化会抑制参数,使变量的影响不会过大,不会把参数变为 0。之前我们说过二次式变为一次式的例子,用 L1 正则化就可以实现。

使用哪个正则化取决于要解决什么问题不能一概而论。现在只要记住有这样的方法就行,将来一定会有用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值