机器学习:过拟合与正则化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习:过拟合与正则化相关的知识,希望对你有一定的参考价值。
过拟合的定义:
过拟合是指模型过度拟合训练集, 学到训练集中过多的噪音或随机波动,导致模型泛化能力差的情况。它表现为在训练集上表现良好,在测试集上表现差。
解决方法:
1.重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。
2.数据集扩增(data augmentation)
2.1从数据源头采集更多数据
2.2复制原有数据并加上随机噪声
2.3重采样
3.采用dropout方法。dropout方法在训练时删除一定比例的神经元, 让这些神经元不工作。
4.采用正则化方法。在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
L0与L1范数的区别:
两者都可以实现稀疏性,但L0范数很难优化求解(NP-hard问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。
总结:L1范数和L0范数可以实现稀疏,但L1具有比L0更好的优化求解特性而被广泛应用。
L1与L2范数的区别:
L2范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。
L2范数的好处:
学习理论的角度: L2范数可以防止过拟合,提升模型的泛化能力。
优化计算的角度: L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题。
L1正则化(?1-norm)
对于线性回归模型,使用L1正则化的模型建叫做Lasso回归。
Lasso是在RSS(残差平方和)最小化的计算中加入一个l1范数作为约束,使得某些待估系数收缩到0,训练出一个稀疏模型,从而防止过拟合,也可用于特征选择。
Lasso回归复杂度调整的程度由参数λ来控制,λ越大对线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。
L2正则化(?2-norm)
使用L2正则化的模型叫做Ridge回归。
L2范数最小化可以使得参数向量W的每个元素都接近于0,但不等于0。参数小实际上就限制了多项式某些分量的影响。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。
总结:通过L2范数可以实现对模型空间的限制,从而在一定程度上避免了过拟合,还可以让优化求解变得稳定和快速。
在(w1, w2)平面上可以画出目标函数的等值线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相切的地方就是最优解。整个目标函数(损失函数+正则项)有最优解当且仅当两个解空间相切。
因为L1函数有很多『突出的角』(二维情况下四个),原损失函数解集与这些角相切的机率会远大于与其它部分相切的机率,而在这些角上会有很多坐标分量等于0,所以L1正则化可以产生稀疏模型,进而可以用于特征选择。
正则化项的系数λ与L1图形成正比,λ越小则相切点越接近原点,从而最优解w中各非零元素可以取到很小的值。
L2正则项的函数图形是圆,与方形相比,被磨去了棱角,相切点在坐标轴上的机率小了很多,这就解释了为什么L2正则化不能产生稀疏性的原因。
参数λ越大则正则化强度越大,对参数的限制能力也越强,最后求得代价函数最值时各参数也会变得很小,从而避免模型过拟合的强度也增大。
以上是关于机器学习:过拟合与正则化的主要内容,如果未能解决你的问题,请参考以下文章
机器学习之路: python线性回归 过拟合 L1与L2正则化