正则化(Regularization)是机器学习中抑制过拟合问题的常用算法,常用的正则化方法是在损失函数(Cost Function)中添加一个系数的\(l1 - norm\)或\(l2 - norm\)项,用来抑制过大的模型参数,从而缓解过拟合现象。

\(l1 - norm\)的正则项还具有特征选择的能力,而\(l2 - norm\)的正则项没有。直观上,对于小于1的模型参数,\(l1 - norm\)的惩罚力度要远远大于\(l2 - norm\)的惩罚力度,这是\(l1 - norm\)特征选择能力的直接驱动。

带正则化的逻辑回归模型(Logistc Regression)损失函数如下式:

\[J(w) =  - Log\left( {\frac{1}{m}\sum\limits_{i = 1}^m {{{\left( {p({x^{(i)}})} \right)}^{{y^{(i)}}}}{{\left( {1 - p({x^{(i)}})} \right)}^{1 - {y^{(i)}}}}} } \right) + \frac{\lambda }{{2m}}\left\| w \right\|_2^2(1)\]

下面以梯度下降法和牛顿法为例,说明带正则项的训练算法:

1. 梯度下降法

\[w^{(k + 1)} = {w^{(k)}} - \alpha \nabla J({w^{(k)}})\]

系数\(w\)的更新公式为:

\[\begin{array}{c}
{w^{(k + 1)}} = {w^{(k)}} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}} - \frac{\lambda }{m}{w^{(k)}}\\
= {w^{(k)}}(1 - \frac{\lambda }{m}) - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}}
\end{array}\]

可见,正则化后的迭代算法和没有正则化的迭代形式非常像,唯一的差别在与每次迭代都要多减去一个\(\frac{\lambda }{m}{w^{(k)}}\)。相当于如果当前的\(w_j\)已经比较大了,那么,\(w\)要先多减去一点,然按梯度方向进行迭代。

另外,上式的正则化项与\(m\)成反比,也就是说,样本数越大,过拟合的问题越小,正则化的作用越弱。

2. 牛顿法

\[{w^{(k + 1)}} = {w^{(k)}} - {H^{ - 1}}\left( {{w^{(k)}}} \right)\nabla J({w^{(k)}})\]

引入l2-norm正则项后,一阶导数和Hessian矩阵如下所示:

\[\nabla J = \frac{1}{m}\sum\limits_{i = 1}^m {\left( {\left( {p({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}} \right)}  - \frac{\lambda }{m}{w^{(k)}}\]

\[H = \frac{1}{m}\sum\limits_{i = 1}^m {p({x^{(i)}})\left( {1 - p({x^{(i)}})} \right){x^{(i)}}{{({x^{(i)}})}^T}} + \frac{\lambda }{m}\left[ {\begin{array}{*{20}{c}}
0&0&0&0\\
0&1&0&0\\
0&0&{...}&0\\
0&0&0&1
\end{array}} \right]\]

与梯度下降法类似,正则化在牛顿法中也是起到惩罚大的\(w_j\)的作用。另外,由于加了正则化项,原来不可逆的Hessian矩阵也变的可逆了。

正则化(Regularization)的更多相关文章

  1. [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...

  2. zzL1和L2正则化regularization

    最优化方法:L1和L2正则化regularization http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化 ...

  3. 7、 正则化(Regularization)

    7.1 过拟合的问题 到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin ...

  4. 斯坦福第七课:正则化(Regularization)

    7.1  过拟合的问题 7.2  代价函数 7.3  正则化线性回归 7.4  正则化的逻辑回归模型 7.1  过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集( ...

  5. (五)用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

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

    欠拟合(Underfitting)与过拟合(Overfitting) 上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子.可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们 ...

  7. CS229 5.用正则化(Regularization)来解决过拟合

    1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...

  8. [C3] 正则化(Regularization)

    正则化(Regularization - Solving the Problem of Overfitting) 欠拟合(高偏差) VS 过度拟合(高方差) Underfitting, or high ...

  9. 1.4 正则化 regularization

    如果你怀疑神经网络过度拟合的数据,即存在高方差的问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,但是你可能无法时时准备足够多的训练数据,或者获取更多数据的代价很高.但正则 ...

  10. 机器学习(五)--------正则化(Regularization)

    过拟合(over-fitting) 欠拟合 正好 过拟合 怎么解决 1.丢弃一些不能帮助我们正确预测的特征.可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如 PCA) 2.正则化. ...

随机推荐

  1. zxing-master core编译

    1.下载 Maven: http://maven.apache.org/download.cgi 2.下载完以后,设一下系统变量:MAVE_HOME 3.Path中加入%MAVEN_HOME%\bin ...

  2. Android 的自定义Spinner组件实现方式

    一.Android的API方式默认实现的方式 1.layout下编辑main_activity.xml <RelativeLayout xmlns:android="http://sc ...

  3. 详解Google-ProtoBuf中结构化数据的编码

    本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...

  4. 线形,柱形,条形数据表(百度Echart插件)

    [获取资源]进入官网,    http://echarts.baidu.com/导航,下载,下拉框下载,常用303k.就是这么简单,就个一个js.[项目使用]新建项目,MyChart具体使用的过程中, ...

  5. 元素属性和js数组

    arrObj.push(数组元素) --增加arrObj.splice(index,howmany)--删除  一般howmany为1,  index,开始截取掉的位置,arrObj[index].P ...

  6. [搜片神器]BT种子下载超时很多的问题分析

    继续接着第一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: h31bt.org  大家可以给提点意 ...

  7. Mybatis 示例之 SelectKey(转)

    参考:http://blog.csdn.net/isea533/article/details/21153791 SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问 ...

  8. HTML5 中的块级链接

    英文叫做 “Block-level” links,我以为只有我厂那些鸟毛不知道,没想到不知道的还挺多, 需要普及一下. 最近看了 kejun 的 PPT 前端开发理论热点面对面:从怎么看,到怎么做?, ...

  9. (转)struts2.0配置文件、常量配置详解

    一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.prop ...

  10. Unity3D接入移动MM支付SDK(强联网)的问题

    原地址:http://blog.csdn.net/lihandsome/article/details/11919113 因为移动MM支付的SDK只提供android版本的,要自己写过一个androi ...