正则化

来源:互联网 发布:windows python mysql 编辑:程序博客网 时间:2024/05/16 07:43

正则化的目的

在机器学习中,由于各种原因,如正负样本数目不平衡,特征数目过多等都可能导致过拟合现象。正则化的目的就是为了防止过拟合现象,通过以下两种方式:

  • 去除不必要的特征(将其weight置为0)
  • 惩罚不重要的特征

    多种拟合现象

如上图从左到右分别为欠拟合,合适的拟合,过拟合,欠拟合可能是样本数目太少或者特征个数过少导致的。主要分析一下过拟合的现象。

  1. 打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。
  2. 然后,很不巧你的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅.
  3. 好,来分析一下上面这个例子:(1)中的规律都是对的,所有的天鹅都有的特征,是全局特征;然而,(2)中的规律:天鹅的羽毛是白的.这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又学习了局部特征,这才导致了不能识别黑天鹅的情况.
    转自知乎:
    链接:https://www.zhihu.com/question/32246256/answer/55251597

这表示学到的特征的权重由于样本的原因可能不是很准确,泛华能力比较差。使用正则化可以提高模型的泛华能力。

正则化可以避免过拟合的原因

正则化将一些不重要的特征的权值置为0或权值变小,使得特征的参数矩阵变得稀疏,参考上面的例子,它使模型变得简单,有效的规避了局部特征。

参数值越小模型越简单的原因:

为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。

正则化方法

L0范数

L0范数是指向量中非0的元素的个数,
00=0

X0=i=0nx0i

使用L0范数来做正则化项,可以使特征稀疏,也可以很好的做出特征选择,缺点是求解比较麻烦。

L1

L1范数是指向量中各个元素绝对值之和,

X1=i=0n|xi|

matlab调用函数norm(x, 1) ,L1范数是各个参数的绝对值相加得到的,参数值大小和模型复杂度是成正比,因此模型越复杂,L1范数就越大,损失函数就越大,模型就越差。
使用L1范数可以实现特征稀疏,它比L0范数的优点是容易求解,因此通常都使用L1范数做正则化项而不是L0范数。

L2范数

L2范数是各参数的平方和再求平方根,

X2=i=0nx2i

L2范数做正则化项,可以使得特征weight向量的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0,而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。

L1正则化与L2正则化的比较

对于L1和L2规则化的代价函数来说,我们可以写成以下形式:
Lasso

minw1n|YWτX|s.t.W1C

Ridge
minw1n|YWτX|s.t.W2C

虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:

这里写图片描述

通过可视化可以很明显的发现,使用L1正则化在取得最优解的时候w1的值为0,相当于去掉了这一个特征。而使用L2正则化在取得最优解的的时候其都有值。
结论:

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适。

Reference

  • http://blog.csdn.net/zouxy09/article/details/24971995
  • https://www.zhihu.com/question/20700829
  • http://blog.csdn.net/vividonly/article/details/50723852
  • http://blog.csdn.net/acdreamers/article/details/46238119
1 0