遇到问的机器学习基本问题(1)
来源:互联网 发布:江苏省网络作家协会 编辑:程序博客网 时间:2024/06/07 20:02
1).什么是过拟合?
欠拟合问题,根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。
欠拟合问题可以通过增加特征维度来解决。
过拟合问题,根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。
解决过拟合问题:
- 减少特征维度; 可以人工选择保留的特征,或者模型选择算法
- 正则化; 保留所有的特征,通过降低参数θ的值,来影响模型
- 增加数据量
2).有哪些正则化方法?简单介绍?
1、概念
L0正则化的值是模型参数中非零参数的个数。
L1正则化表示各个参数绝对值之和。
L2正则化标识各个参数的平方的和的开方值
2、先讨论几个问题:
1)实现参数的稀疏有什么好处吗?
一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就只能呵呵了。另一个好处是参数变少可以使整个模型获得更好的可解释性。
2)参数值越小代表模型越简单吗?
是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
3、L0正则化
根据上面的讨论,稀疏的参数可以防止过拟合,因此用L0范数(非零参数的个数)来做正则化项是可以防止过拟合的。
从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果,具体操作时选择参数非零的特征即可。但因为L0正则化很难求解,是个NP难问题,因此一般采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。
4、L1正则化
L1正则化在实际中往往替代L0正则化,来防止过拟合。在江湖中也人称Lasso。
L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的,我们前面讨论了,参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。
5、L2正则化
L2正则化可以防止过拟合的原因和L1正则化一样,只是形式不太一样。
L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。
L2正则化江湖人称Ridge,也称“岭回归”
6、Lasso和Ridge对比
Lasso和Ridge可以分别表示为:
我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:
可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,有很大的几率等高线会和L1-ball在四个角相遇,也就是坐标轴上相遇,坐标轴上就可以产生稀疏,因为某一维可以表示为0。而等高线与L2-ball在坐标轴上相遇的概率就比较小了。
总结:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适。
- 遇到问的机器学习基本问题(1)
- 遇到问的机器学习基本问题(2)
- 机器学习的基本问题
- 面试遇到的机器学习问题
- 机器学习基本问题
- 机器学习实战中遇到的python问题
- 《机器学习实战》实现时遇到的问题
- 在机器学习一书中SVM章节中遇到的问题
- 机器学习实战中的遇到的问题及解决
- python3实现《机器学习实战》遇到的问题:range函数
- 机器学习-数据挖掘遇到问题-考虑处理的方向
- python3实现《机器学习实战》遇到的问题:range函数
- QT学习遇到的问题(1)
- 机器学习的基本模型
- 机器学习实战python环境搭建以及numpy和matplotlib安装遇到的各种问题(一)
- 初学粒子滤波中遇到的问题题问?
- Storm 安装参考,以及遇到问的问题
- 做机器鱼二次开发遇到的问题
- 一天搞懂深度学习—学习笔记4(knowledge and tricks)
- IntelliJ IDEA 控制台中文乱码
- WEB网站设计用户登录的安全机制
- bind()的用法
- QT5.6移植到ARM 之 移植tslib1.4总结
- 遇到问的机器学习基本问题(1)
- 基于Apache Tomee服务系统的web前端输入中文乱码问题解决办法
- 关于window.onload
- Android webView加载html页面不显示(显示白屏)
- java类集---SortedMap
- MySQL知识点整理
- 最常用的1000个Java类(附代码示例)
- vue 搭建项目环境方法步骤
- 【JSOI】【codevs 2913 建筑抢修】