过拟合和欠拟合通俗的解释

1、经验误差和过拟合、欠拟合

经验误差:学习器在训练集上的误差成为经验误差或训练误差

过拟合:通俗点说,哎呀这个学习器在训练集上学的太好了,以至于老师没交给他的知识都学会,把自身内涵的知识都学会了,把这部分学到的知识用到测试集上,显然这部分知识是强加给测试集的,我们称之为过拟合

欠拟合:顾名思义,你这个学习器学的不好,老师教的东西都没有掌握住,还得继续学,我们称之为欠拟合

上面谈了欠拟合和过拟合,哪接下来就是解决办法了:

解决欠拟合的办法:

添加其他特征项,有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上面的特征之外,“上下文特征”、“平台特征”等等,都可以作为特征添加的首选项。

2)添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强,减少正则化参数正则化的目的是用来防止过拟合,但是现在模型出现了欠拟合,则需要减少正则化参数。


解决过拟合的办法:

1)重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。

2)大数据的训练量,还有一个原因就是我们用于训练的数据量太小导致的,训练数据占总数据的比例过小。

3)采用正则化方法

      正则化方法包括L0正则、L1正则和L2正则,而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则,下面看具体的原因。

  L0范数是指向量中非0的元素的个数。

  L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。

  两者都可以实现稀疏性,既然L0可以实现稀疏,为什么不用L0,而要用L1呢?个人理解一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近 似, 而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。

L2范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。还有就是看到有人说L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题(具体这儿我也不是太理解)。

4)采用dropout方法这个方法在神经网络里面很常用。dropout方法是ImageNet中提出的一种方法,通俗一点讲就是dropout方法在训练的时候让神经元以一定的概率不工作。具体看下图:

上图引用csdn博客图

其实dropout的方法就是限制隐层,我不让你接受那么多参数,我抑制你学习力增强,我在隐层神经元设置开关,开一部分,关一部分,这样的话学习能力必然大大减弱


猜你喜欢

转载自blog.csdn.net/weixin_42108215/article/details/80669596