关于过度拟合的概念:给定一个假设空间H,一个假设h∈H,如果存在其他的假设h’∈H,使得在训练样例上h的错误率比h‘小,但在整个实例分布上h’的错误率比h小,那么
就说假设h过度拟合训练数据
过滤拟合可能的原因:(1)使用过于复杂的模型(dvc 很大);(2)数据噪音;(3)有限的训练数据。
详细解释:
1、所使用的模型对数据集来说过于复杂,以至于该模型不能很好地解释这些数据,把很简单的数据用到了很复杂的模型上,效果肯定不会太好。
2、样本里的噪音数据干扰过大,大到模型都对这些噪音数据进行了详细的分析,反而忽略了真实数据的输入输出间的关系
3、样本数量太少
4、建模时使用了太多的输入变量。所以,一个稳定优良的模型一定要遵循建模输入变量“少而精”的原则的
噪音与数据规模
我们可以理解地简单些:有噪音时,更复杂的模型会尽量去覆盖噪音点,即对数据过拟合!
这样,即使训练误差Ein 很小(接近于零),由于没有描绘真实的数据趋势,Eout 反而会更大。
即噪音严重误导了我们的假设。
之前说的噪音一般指随机噪音(stochastic noise),服从高斯分布;还有另一种“噪音”,就是前面提到的由未知的复杂函数f(X) 产生的数据,对于我们的假设也是噪音,这种是确定性噪音。
对应导致过拟合发生的几种条件,我们可以想办法来避免过拟合。
(1) 假设过于复杂(excessive dvc) => start from simple model
(2) 随机噪音 => 数据清洗
(3) 数据规模太小 => 收集更多数据,或根据某种规律“伪造”更多数据
还有一种情况,如果数据是由我们不知道的某个非常非常复杂的模型产生的,实际上有限的数据很难去“代表”这个复杂模型曲线。我们采用不恰当的假设去尽量拟合这些数据,效果一样会很差,因为部分数据对于我们不恰当的复杂假设就像是“噪音”,误导我们进行过拟合。
随机噪音与确定性噪音 (Deterministic Noise)
可见,数据规模一定时,随机噪音越大,或者确定性噪音越大(即目标函数越复杂),越容易发生overfitting。总之,容易导致overfitting 的因素是:数据过少;随机噪音过多;确定性噪音过多;假设过于复杂(excessive power)。
解决过拟合问题
1.权值衰减.
在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏。一个最成功的方法是在训练数据外再为算法提供一套验证数据,应该使用在验证集合上产生最小误差的迭代次数,不是总能明显地确定验证集合何时达到最小误差.Typically 30% of training patterns;Validation set error is checked each epoch;Stop training if validation error goes up
2.适当的stopping criterion
3.验证数据
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。矩阵分解中经常会用到。
过拟合和欠拟合
对于一个监督学习模型来说, 过小的特征集合使得模型过于简单,过大的特征集合使得模型过于复杂。
对于特征集过小的情况,称之为 欠拟合( underfitting ) ;
对于特征集过大的情况,称之为 过拟合( overfitting )
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9515.html