正则化
来源:互联网 发布:windows python mysql 编辑:程序博客网 时间:2024/05/16 07:43
正则化的目的
在机器学习中,由于各种原因,如正负样本数目不平衡,特征数目过多等都可能导致过拟合现象。正则化的目的就是为了防止过拟合现象,通过以下两种方式:
- 去除不必要的特征(将其weight置为0)
- 惩罚不重要的特征
如上图从左到右分别为欠拟合,合适的拟合,过拟合,欠拟合可能是样本数目太少或者特征个数过少导致的。主要分析一下过拟合的现象。
- 打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。
- 然后,很不巧你的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅.
- 好,来分析一下上面这个例子:(1)中的规律都是对的,所有的天鹅都有的特征,是全局特征;然而,(2)中的规律:天鹅的羽毛是白的.这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又学习了局部特征,这才导致了不能识别黑天鹅的情况.
转自知乎:
链接:https://www.zhihu.com/question/32246256/answer/55251597
这表示学到的特征的权重由于样本的原因可能不是很准确,泛华能力比较差。使用正则化可以提高模型的泛华能力。
正则化可以避免过拟合的原因
正则化将一些不重要的特征的权值置为0或权值变小,使得特征的参数矩阵变得稀疏,参考上面的例子,它使模型变得简单,有效的规避了局部特征。
参数值越小模型越简单的原因:
为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
正则化方法
L0 范数
设
使用
L1范数
matlab调用函数norm(x, 1) ,
使用
L2 范数
L2范数是各参数的平方和再求平方根,
让
L1 正则化与L2 正则化的比较
对于L1和L2规则化的代价函数来说,我们可以写成以下形式:
Lasso
Ridge
虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:
通过可视化可以很明显的发现,使用
结论:
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
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- 正则化
- Android MTK 修改TP参数
- Hbase体系架构
- Java WebService入门实例
- Android蓝牙调试助手
- Linux下apache+PHP+MySQL环境配置
- 正则化
- StringBuffer
- myeclipse 启动tomcat时报错: java.lang.NullPointerException java.lang.NullPointerException
- android沉浸式布局详解
- linux中Jetty的安装和配置
- android webview显示空白页问题
- Android studio 报错 :Unable to delete file
- Android MTK 去掉Setting中Wifi和蓝牙
- Python 变量类型总结(二)