机器学习中overfitting的理解

对于过拟合一直都不太明白。然后在深度学习中又见overfitting,这下就下定决心去学习一下!!!哈哈,多学点总不会错的

step1.明白什么是overfitting?

overfitting是一种现象,其对应有解决方法,主要有:①增加数据量(可以通过交叉验证实现);②在对模型的目标函数(objective function)或代价函数(cost function)加上正则项(是不是想起了Ng的BP神经网络部分,其中误差函数部分就加入了正则项?)③dropout,应用在深度学习中,例如:CNN。防止模型过拟合,可以提高模型泛化能力。

泛化(Generalization):一个模型的泛化能力是指它在训练数据集上的误差是否能够接近所有可能测试数据误差的均值。泛化误差大致可以理解成测试数据集误差和训练数据集误差之差。在深度学习领域变流行之前,如何控制泛化误差一直是机器学习领域的主流问题。其实就是测试数据集的误差能和训练数据集的误差差不多就是好的,经常出现的是训练数据集的误差小,但一到了测试数据集误差就很大。

概念:

举两个个例子:
   1. 抛硬币,推断正面朝上的概率。如果只能抛5次,很可能5次全正面朝上,这样你就得出错误的结论:正面朝上的概率是1--------过拟合!如果你在模型里加正面朝上概率是0.5的先验,结果就不会那么离谱。这其实就是正则。

  2.

(1)打个形象的比方,给一群天鹅让机器来学习天鹅的特征,经过训练后,知道了天鹅是有翅膀的,天鹅的嘴巴是长长的弯曲的,天鹅的脖子是长长的有点曲度,天鹅的整个体型像一个“2”且略大于鸭子.这时候你的机器已经基本能区别天鹅和其他动物了。

(2)然后,很不巧你的天鹅全是白色的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅.

(3)好,来分析一下上面这个例子:(1)中的规律都是对的,所有的天鹅都有的特征,是全局特征;然而,(2)中的规律:天鹅的羽毛是白的.这实际上并不是所有天鹅都有的特征,只是局部样本的特征。机器在学习全局特征的同时,又学习了局部特征,这才导致了不能识别黑天鹅的情况。

--------------------------------------------------理论总结分割线--------------------------------------------------------------------

科普一下什么是交叉检验:

以前的做法:把training data切一小份(比如说10%)出来做validation(验证),用剩下90%的data去train,然后用这10%检查一下train好的model,看看表现怎么样,防止over training。

交叉检验:Cross validation也是这个意思,把data切10份,每次用一份做validation,做10次,能用到所有的training data。交叉检验其实相当于增加了数据量。

step2.加正则项

正则化来防止过拟合,最简单的解释就是加了先验。在数据少的时候,先验知识可以防止过拟合。

猜你喜欢

转载自blog.csdn.net/weixin_40332685/article/details/81102156