正则化(Regularization)
正则化(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)的更多相关文章
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...
- zzL1和L2正则化regularization
最优化方法:L1和L2正则化regularization http://blog.csdn.net/pipisorry/article/details/52108040 机器学习和深度学习常用的规则化 ...
- 7、 正则化(Regularization)
7.1 过拟合的问题 到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin ...
- 斯坦福第七课:正则化(Regularization)
7.1 过拟合的问题 7.2 代价函数 7.3 正则化线性回归 7.4 正则化的逻辑回归模型 7.1 过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集( ...
- (五)用正则化(Regularization)来解决过拟合
1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...
- [笔记]机器学习(Machine Learning) - 03.正则化(Regularization)
欠拟合(Underfitting)与过拟合(Overfitting) 上面两张图分别是回归问题和分类问题的欠拟合和过度拟合的例子.可以看到,如果使用直线(两组图的第一张)来拟合训,并不能很好地适应我们 ...
- CS229 5.用正则化(Regularization)来解决过拟合
1 过拟合 过拟合就是训练模型的过程中,模型过度拟合训练数据,而不能很好的泛化到测试数据集上.出现over-fitting的原因是多方面的: 1) 训练数据过少,数据量与数据噪声是成反比的,少量数据导 ...
- [C3] 正则化(Regularization)
正则化(Regularization - Solving the Problem of Overfitting) 欠拟合(高偏差) VS 过度拟合(高方差) Underfitting, or high ...
- 1.4 正则化 regularization
如果你怀疑神经网络过度拟合的数据,即存在高方差的问题,那么最先想到的方法可能是正则化,另一个解决高方差的方法就是准备更多数据,但是你可能无法时时准备足够多的训练数据,或者获取更多数据的代价很高.但正则 ...
- 机器学习(五)--------正则化(Regularization)
过拟合(over-fitting) 欠拟合 正好 过拟合 怎么解决 1.丢弃一些不能帮助我们正确预测的特征.可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如 PCA) 2.正则化. ...
随机推荐
- zxing-master core编译
1.下载 Maven: http://maven.apache.org/download.cgi 2.下载完以后,设一下系统变量:MAVE_HOME 3.Path中加入%MAVEN_HOME%\bin ...
- Android 的自定义Spinner组件实现方式
一.Android的API方式默认实现的方式 1.layout下编辑main_activity.xml <RelativeLayout xmlns:android="http://sc ...
- 详解Google-ProtoBuf中结构化数据的编码
本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...
- 线形,柱形,条形数据表(百度Echart插件)
[获取资源]进入官网, http://echarts.baidu.com/导航,下载,下拉框下载,常用303k.就是这么简单,就个一个js.[项目使用]新建项目,MyChart具体使用的过程中, ...
- 元素属性和js数组
arrObj.push(数组元素) --增加arrObj.splice(index,howmany)--删除 一般howmany为1, index,开始截取掉的位置,arrObj[index].P ...
- [搜片神器]BT种子下载超时很多的问题分析
继续接着第一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: h31bt.org 大家可以给提点意 ...
- Mybatis 示例之 SelectKey(转)
参考:http://blog.csdn.net/isea533/article/details/21153791 SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问 ...
- HTML5 中的块级链接
英文叫做 “Block-level” links,我以为只有我厂那些鸟毛不知道,没想到不知道的还挺多, 需要普及一下. 最近看了 kejun 的 PPT 前端开发理论热点面对面:从怎么看,到怎么做?, ...
- (转)struts2.0配置文件、常量配置详解
一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.prop ...
- Unity3D接入移动MM支付SDK(强联网)的问题
原地址:http://blog.csdn.net/lihandsome/article/details/11919113 因为移动MM支付的SDK只提供android版本的,要自己写过一个androi ...