正则化(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.正则化. ...
随机推荐
- 1079. Total Sales of Supply Chain (25)
时间限制 250 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A supply chain is a network of r ...
- 五、mysql存储引擎
show variable like 'table_type'; 显示系统默认存储引擎 show engine\G 显示系统支持存储殷勤 =============================== ...
- MVC5 Bundles发布到IIS失效问题解决方案
MVC中Bundles可以提高代码的可重用性 我每个页面都需要用到这十几个JS+CSS 当我把MVC发布到服务器以后,Bundles中的JS和CSS会失效的时候 宝宝的心里是崩溃的.... 查了很多资 ...
- java和php实现RSA加密互通-b
java和PHP RSA加密实现互通 1:通过openssl 生成公钥和密钥文件(linux) (1) 生产私钥文件命令 openssl genrsa -out rsa_private_key.pe ...
- bzoj 1222: [HNOI2001]产品加工 dp
1222: [HNOI2001]产品加工 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 381 Solved: 218[Submit][Status ...
- CNKI翻译助手-连接数据库失败
IP并发数限制,老师说西工大的CNKI才20个并发指标,HPU自不必说.但是我略表怀疑,这只是翻译助手而已,就像百度翻译和百度数据库的区别,如何验证呢?去校外用该助手,如果能用,那么就不是IP并发限制 ...
- 手工、工具分别实现cookie注入
最开始的判断access类型的网站注入点可以用“1 and 1=1”来判断. 不过现在的网站基本上被挡住了.之后呢,可以考虑cookie注入. Dim Tc_Post,Tc_Get,Tc_In,Tc_ ...
- mysql语句中把string类型字段转datetime类型
mysql语句中把string类型字段转datetime类型 在mysql里面利用str_to_date()把字符串转换为日期 此处以表h_hotelcontext的Start_time和En ...
- C语言的左位移能不能超过8位?
C语言的左位移能不能超过8位?比如b=a<<20; 这样可以不?如果可以,一个字节只有8个位,左移20位是不是连右边其它字节的12个位(20-8)也一起左移? 字符变量左移八次后,所有的位 ...
- 【leetcode】Word Break II (hard)★
Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...