首先明确了什么是Overfitting
随后,用开车的例子给出了Overfitting的出现原因
出现原因有三个:
(1)dvc太高,模型过于复杂(开车开太快)
(2)data中噪声太大(路面太颠簸)
(3)数据量N太小(知道的路线太少)
这里(1)是前提,模型太复杂:
(1)模型越复杂,就会捕获train data中越多的点(这当中当然包括更多的噪声点)
(2)数据量N太小,根据VC Dimension理论,Eout会增大
这里的noise包括两类:
1. stochoastic noise:
比如train data就是“10次多项式+正态分布的误差”产生的;如果样本量N不是很大的话,noise带来的影响很可能不能被互相抵消(抵消的意思是+noise, -noise在算error的时候有抵消的作用),这样每个noise就会非常影响曲线的形状;结果就是带来overfitting
2. deterministic noise:
比如train data是“50次多项式”产生的;即使没有stochastic noise,无论怎么用10次多项式去拟合也无法拟合出50次多项式;
但是这个时候,由于10次多项式的power比较强,它回去够到尽量多的点,这些点当中难免有些就等于noise了;
反之,如果用2次多项式去拟合,由于它的power比较弱,在它正常范围内能够到的点比较少,因此train data中的数据点起到stochastic noise的机会就大大减少了
最终的造成的结果,就是如下的两张图了。
如上图,总结了overfitting的四种reasons。
最后,引出了对抗overfitting的几种途径:
最关键的是:一开始尽量从simple model开始尝试
其次再是对train data的各种清洗过滤。
另外,regularization和validation是两种比较重要的防止overfitting的途径。后面有可能重点介绍。