过拟合问题以及解决方法
2015-09-20 21:28
246 查看
一.所谓过拟合问题
为了得到一致假设而使假设变得过度复杂称为过拟合。一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),导致繁华能力较差,显然过犹不及了。
A model (e.g., network) that is too complex may fit the noise, not just thesignal, leading to overfitting.Produces excessive variance in the outputs.过拟合反映的是在学习训练中,NN对学习样本达到非常高的逼近精度,但对非学习样本,如验证学习效果的样本的逼近误差随着NN的训练次数而呈现先下降,后反而上升的奇异现象.
二.过拟合的产生
究其原因,产生过拟合是因为:
1.由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行, BP算法使权值可能收敛过于复杂的决策面,并至极致.
2.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.
三. 过度拟合解决方法
1.权值衰减.
它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏。
2.适当的stopping criterion
3.验证数据
一个最成功的方法是在训练数据外再为算法提供一套验证数据,应该使用在验证集合上产生最小误差的迭代次数,不是总能明显地确定验证集合何时达到最小误差.
Typically 30% of trainingpatterns;Validation set error is checked each epoch;
Stop training if validation error goes up
4.Cross-validation with some patterns
交叉验证方法在可获得额外的数据提供验证集合时工作得很好,但是小训练集合的过度拟合问题更为严重.
k-fold交叉方法:
把训练样例分成k份,然后进行k次交叉验证过程,每次使用不同的一份作为验证集合,其余k-1份合并作为训练集合.每个样例会在一次实验中被用作验证样例,在k-1次实验中被用作训练样例;每次实验中,使用上面讨论的交叉验证过程来决定在验证集合上取得最佳性能的迭代次数n*,然后计算这些迭代次数的均值;最后,运行一次BP算法,训练所有m个实例并迭代n*次.
5. 减少特征
人工选择,预留一些特征
利用算法选取一些比较好的特征
6. 正则化
这里有点疑问,正则化是为了防止过拟合还是为了解决过拟合。对部分无用的feature,定义其parameter(p3,p4)非常大,这样会导致训练结果w3,w4非常小,几乎为0,降低模型复杂度。这里也有个问题就是lamba很大会导致所有的wi都为0。矩阵分解中经常会用到。
为了得到一致假设而使假设变得过度复杂称为过拟合。一个过配的模型试图连误差(噪音)都去解释(而实际上噪音又是不需要解释的),导致繁华能力较差,显然过犹不及了。
A model (e.g., network) that is too complex may fit the noise, not just thesignal, leading to overfitting.Produces excessive variance in the outputs.过拟合反映的是在学习训练中,NN对学习样本达到非常高的逼近精度,但对非学习样本,如验证学习效果的样本的逼近误差随着NN的训练次数而呈现先下降,后反而上升的奇异现象.
二.过拟合的产生
究其原因,产生过拟合是因为:
1.由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行, BP算法使权值可能收敛过于复杂的决策面,并至极致.
2.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.
三. 过度拟合解决方法
1.权值衰减.
它在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏。
2.适当的stopping criterion
3.验证数据
一个最成功的方法是在训练数据外再为算法提供一套验证数据,应该使用在验证集合上产生最小误差的迭代次数,不是总能明显地确定验证集合何时达到最小误差.
Typically 30% of trainingpatterns;Validation set error is checked each epoch;
Stop training if validation error goes up
4.Cross-validation with some patterns
交叉验证方法在可获得额外的数据提供验证集合时工作得很好,但是小训练集合的过度拟合问题更为严重.
k-fold交叉方法:
把训练样例分成k份,然后进行k次交叉验证过程,每次使用不同的一份作为验证集合,其余k-1份合并作为训练集合.每个样例会在一次实验中被用作验证样例,在k-1次实验中被用作训练样例;每次实验中,使用上面讨论的交叉验证过程来决定在验证集合上取得最佳性能的迭代次数n*,然后计算这些迭代次数的均值;最后,运行一次BP算法,训练所有m个实例并迭代n*次.
5. 减少特征
人工选择,预留一些特征
利用算法选取一些比较好的特征
6. 正则化
这里有点疑问,正则化是为了防止过拟合还是为了解决过拟合。对部分无用的feature,定义其parameter(p3,p4)非常大,这样会导致训练结果w3,w4非常小,几乎为0,降低模型复杂度。这里也有个问题就是lamba很大会导致所有的wi都为0。矩阵分解中经常会用到。
相关文章推荐
- poj3074/3076 Dancing Links (数独)
- 二叉树前序、中序、后序遍历相互求法
- 干货:结合Scikit-learn介绍几种常用的特征选择方法
- 【软考2】Java语言的基本知识汇总
- 【软考2】Java语言的基本知识汇总
- Java位运算部分实例代码
- 链表归并排序的递归与非递归实现
- 如何使用 vimdiff 来 git diff
- 剑指offer | 开篇
- 获取Hadoop的源码和通过Eclipse关联Hadoop的源码
- ExtJS Combobox 属性详解和默认值选中
- 常用的邮箱服务器(SMTP、POP3)地址、端口
- 正则表达式语法-转自MSDN
- lintcode-矩阵归零-162
- 学习 《算法导论》第13章 红黑树 总结二
- Fibonacci----poj3070(矩阵快速幂, 模板)
- 九点二十
- 利用caffe训练网络的步骤
- 我的无助
- wordpress Oops! That page can’t be found.