机器学习过拟合问题

来源:互联网 发布:java compareto() 编辑:程序博客网 时间:2024/05/16 10:56

过拟合

过拟合的定义
在对已知的数据集合进行学习的时候,我们选择适应度最好的模型最为最终的结果。虽然我们选择的模型能够很好的解释训练数据集合,但却不一定能够很好的解释测试数据或者其他数据,也就是说这个模型过于精细的刻画了训练数据,对于测试数据或者其他新的数据泛华能力不强。

发生过拟合的原因
1)使用过于复杂的模型(dvc 很大);
(2)数据噪音;
(3)有限的训练数据。

a.由于对样本数据,可能存在隐单元的表示不唯一,即产生的分类的决策面不唯一.随着学习的进行, BP算法使权值可能收敛过于复杂的决策面,并至极致.
b.权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征.

过拟合的解决办法:

1.权值衰减.
在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏
2.适当的stopping criterion
3.验证数据
一个最成功的方法是在训练数据外再为算法提供一套验证数据,应该使用在验证集合上产生最小误差的迭代次数,不是总能明显地确定验证集合何时达到最小误差.Typically 30% of training patterns;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*,然后计算这些迭代次数的均值,作为最终需要的迭代次数。
5. 减少特征
人工选择,预留一些特征
利用算法选取一些比较好的特征
6. 正则化
这里有点疑问,正则化是为了防止过拟合还是为了解决过拟合。对部分无用的feature,定义其parameter(p3,p4)非常大,这样会导致训练结果w3,w4非常小,几乎为0,降低模型复杂度。这里也有个问题就是lamba很大会导致所有的wi都为0。矩阵分解中经常会用到。

0 0