对于需要拟合的数据(x1,x2,x3…) 我们可以使用一个多项式取拟合这些数据 如果这些数据分布 f(x) 为二次函数
当我们使用一个好的VC dimension 即和原始分布相似的VC dimension 那么我们可以较好的拟合原始数据分别
当我们选择的VC dimension较大的时候 我们同样也可以很好的fit训练数据 但是由于模型过于复杂 可能只是在给定的数据点处较好的拟合数据 泛化能力可能不会这么好
overfitting可能性:
- 使用过大的VC dimension
- 数据存在noise
- 训练样本N数量过小
OverFiting 实验:
对于训练数据分布 十次多项式加噪声生成数据
使用50次多项式不加噪声
对于上述两个数据分布 我们采用不同的模型取拟合这些数据分布
- 使用二次多项式取拟合 十次多项式加noise 产生的数据
- 使用十次多项式取拟合 十次多项式加noise 产生的数据
可想而知 十次多项式的表达能力肯定是比二次多项式要强的 因此它对于Ein的拟合能力也是要比二次多项式来的强 如果没有噪声的存在 那么十次多项式是可以在所有的数据分布空间中完全拟合数据的 但是由于噪声的存在 训练所得十次多项式的系数 和原始生成数据的系数会有一定的差异
所以和二次多项式比 训练所得的十次多项式 对数据拟合能力更强 但是拟合的是在噪声存在的分布下的 训练数据 所以可能导致泛华结果更差
拟合50次多项式生成的数据
可见十次多项式拟合50次多项式的时候在Eout上表现也更差 参见下图分布数据和拟合数据的分布
由此可见 即便知道目标函数是十次多项式 使用十次多项式去拟合也不见得结果会好
当资料量不够多的时候
当N比较小的时候我们可以看到 H10所能够产生的Eout是远比H2要来的大的
总结overfitting发生的可能情况:
1.当数据量过小的时候 会发生
2. 左图随着数据Noise增加 会发生overfitting
3. 当目标函数的复杂度过大时 和上述分析一样会发生overfitting
4. 因为比较的是十次多项式和二次多项式 如果目标是十次多项式以下的时候也会出现overfitting
这里解释一下为什么目标函数过于复杂的时候也会带来Noise 即 deterministic noise
如果在hypothesis set中不存在我们要寻找的那个f 这时和在某一个能够拟合的f上加noise 十分相似
唯一不同的是这个noise不是随机加的 而是和h有关 图中灰色的区域即为要求的noise
如何解决overfitting
- 从简单的hypothesis做起
- 减小资料中的噪声
- 增加资料数量或者其他信息
重点是要查找出outlier