机器学习基石(13)--Hazard of Overfitting

本节课程主要讲述过拟合。

VC Dimension过大的时候会发生Bad Generalization,也就是Ein很低,但是Eout很高的情况。没有办法做举一反三的学习。

Ein越做越好,但是Eout却上升了。这种情况叫做过拟合。

欠拟合就是做的不好的情况,通过增加VC Dimension可以解决。

假设已知两种10次多项式和50次多项式产生的数据,我们用2次多项式和10次多项式进行拟合,看看Ein和Eout的结果分别是什么样子的。

由上图来看,两边都发生了过拟合的情况。

即便我们已知了该数据是由10次多项式产生的,我们再用10次多项式去拟合它的时候也会发生过拟合。并且,2次多项式的Eout也比10次多项式要小。

为什么会这样呢?我们去看一下Learning curve

在10次多项式中,当N比较小的时候,generalization的效果不好。所以,当输入数据不够多的时候,还是简单的模型要好一点。

以上都是没有噪声的情况。如果有噪声的时候:

简单的模型依然能够胜出,为什么呢?因为当要学习的事情很复杂的时候,高复杂度本身带来了和有噪声数据一模一样的效果,不管是2次还是10次的多项式都没有办法完美的拟合这些复杂的点,而这些点起到的作用就等同于noise所起到的作用。

什么时候需要小心过拟合的发生呢?

现在假设有一个数据集由正常数据和一部分高斯分布的噪声组成,我们想要看看当噪声的level(记为σ2),模型复杂度(Qf)和f(x)的分布会对整个机器学习的过程有什么影响。

还是以2次多项式和10次多项式为例,两个多项式Eout的差可以用来衡量过拟合的程度:

由上图可以得出结论:

stochastic noise:当样本总量很小的时候,会带来实实在在的过拟合。

deterministic noise:如果目标函数太复杂的时候,例如由50次多项式产生的数据集,我们无论怎样拟合都无法完全cover到,复杂数据集中的点就扮演了噪声的角色。

既然过拟合是经常发生的,那我们怎么样才能避免或者解决这个问题呢?

1. 从简单的模型开始着手。

2. 做一些数据的清洗工作。

3. 增加更多的feature进来。

4. 正则化(下一讲)

5. 做验证。

总结:

posted @ 2016-09-28 13:44  cyoutetsu  阅读(327)  评论(0编辑  收藏  举报