过拟合(原因、解决方案、原理)
2018-01-22 15:26
218 查看
版权声明:如需转载,请注明出处http://blog.csdn.net/a819825294
1.定义
标准定义:给定一个假设空间H,一个假设h属于H,如果存在其他的假设h’属于H,使得在训练样例上h的错误率比h’小,但在整个实例分布上h’比h的错误率小,那么就说假设h过度拟合训练数据。 —-《Machine Learning》Tom M.Mitchell2.出现过拟合的一些原因
(1)建模样本抽取错误,包括(但不限于)样本数量太少,抽样方法错误,抽样时没有足够正确考虑业务场景或业务特点,等等导致抽出的样本数据不能有效足够代表业务逻辑或业务场景;(2)样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;
(3)建模时的“逻辑假设”到了模型应用时已经不能成立了。任何预测模型都是在假设的基础上才可以搭建和应用的,常用的假设包括:假设历史数据可以推测未来,假设业务环节没有发生显著变化,假设建模数据与后来的应用数据是相似的,等等。如果上述假设违反了业务场景的话,根据这些假设搭建的模型当然是无法有效应用的。
(4)参数太多、模型复杂度高
(5)决策树模型。如果我们对于决策树的生长没有合理的限制和修剪的话,决策树的自由生长有可能每片叶子里只包含单纯的事件数据(event)或非事件数据(no event),可以想象,这种决策树当然可以完美匹配(拟合)训练数据,但是一旦应用到新的业务真实数据时,效果是一塌糊涂。
(6)神经网络模型。
a.由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行, BP算法使权值可能收敛过于复杂的决策面,并至极致.
b.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.
3.解决方案及原理
(1)权值衰减. 主要应用在神经网络模型中它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的
惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏。
(2)适当的stopping criterion
在二次误差函数的情况下,关于早停止和权值衰减类似结果的原因说明。椭圆给出了常数误差函数的轮廓线,Wml表示误差函数的最小值。如果权向量的起始点为原点,按照局部负梯度的方向移动,那么它会沿着曲线给出的路径移动。通过对训练过程早停止,我们找到了一个权值向量w。定性地说,它类似于使用检点的权值衰减正则化项,然后最小化正则化误差函数的方法得到的权值。
(3)验证数据
一个最成功的方法是在训练数据外再为算法提供一套验证数据,应该使用在验证集合上产生最小误差
的迭代次数,不是总能明显地确定验证集合何时达到最小误差.
Typically 30% of training patterns;Validation set error is checked each epoch;
Stop training if validation error goes up
(4)交叉验证
交叉验证方法在可获得额外的数据提供验证集合时工作得很好,但是小训练集合的过度拟合问题更为严重.
原理图
(5)添加正则项。L1正则更加容易产生稀疏解、L2正则倾向于让参数w趋向于0.
(6)针对树模型
a.在树过于大之前便停止生长
每个叶中至少需要多少个数据(threshold)
如何判断这个阈值(threshold)是重点【可以考虑用假设检验/P-值】
b.等树生长到足够大之后进行修剪
修剪枝叶,直到任何改动都会降低正确率
4.Tip
(1)增加样本的全面性和数量;(2)控制模型的复杂度;
(3)不要过度训练
(4)模型融合本质上也是一种提高泛化能力的方法
参考
(1)PRML
相关文章推荐
- 过拟合(原因、解决方案、原理)
- 机器学习过拟合(原因、解决方案、原理)
- 过拟合(原因、解决方案、原理)
- React Native Android的启动白屏/闪屏的原因,解决方案,原理,使用方法
- 安装sql2005,没有SQL Server management studio的原因分析及解决方案
- Address already in use: bind端口被占用的多种原因以及解决方案
- 转:Asp.Net MVC3 无法安装的原因及解决方案
- MongoDB 中文显示乱码的 真正原因和解决方案,真的是cmd问题吗?
- java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit的原因及解决方案
- 检测用户是否禁用JavaScript的原理分析及解决方案
- Java_基础—并发修改异常产生的原因及解决方案
- setuptools,pip,install,UnicodeDecodeError: 'ascii' codec can't decode byte.原因和解决方案
- 动软软代码生成器使用(127.0.0.1)无法看到 SQLServer2008 新附加数据库的 原因 以及 解决方案
- 异常Could not create connection to database server. Attempted reconnect 3 times. Giving up.解决方案以及原因
- 【C#+ASP.NET】Session丢失原因与解决方案小结
- 在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案
- Android大图片裁剪终极解决方案(上:原理分析)
- Android 中内存泄漏的原因和解决方案
- GET请求中的乱码原理解析和解决方案