林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)

欢迎转载,可以关注博客:http://blog.****.net/cqy_chen

概要

上节讲到了将原始的数据通过映射到另外的空间,使得数据集的维度增大,VC维也增大,模型的复杂度增大。这样会导致EoutEin有变大的趋势。本节课就针对这样的问题进行详细讨论。

什么是过拟合

比如有5个资料点,我们采用二次式进行拟合,以及采用4次式进行拟合如下:
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
这个时候就会发现Ein很低,但是Eout很大。
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)

过拟合就是如上图所示,当我们采用了复杂的模型,或者维度增大,导致vc维增大,随着VC维的增大,Ein逐渐变小,因为假设空间变大了嘛。但是Eout先减小后变大。

dvc左边表示欠拟合,右边表示过拟合。
大家也可以使用学习曲线来判断模型状态,可以参考这篇文章:
http://blog.****.net/aliceyangxi1987/article/details/73598857

我们回顾下VC维课程的公式:

Eout(g)Ein(g)+8Nln(4(2N)dvcδ)

有噪音的的时候
Eout(g)=noise level(1+d+1N)

所以过拟合的因素有:
1)数据集大小
2)模型复杂度,对应的是VC维
3)噪音大小
这里用开车来进行类比。
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
开车是否太快,就像汽车性能好不好,比如保时捷和奇瑞qq,还就是路况好不好,在高速路上开还是泥泞的路,还有就是我们对于路况的熟知程度。这几个因素会导致我们是不是会发生车祸,对应是否过拟合。

噪音和数据集大小所扮演的角色

其实在上面的公式中就知道了噪音和数据集大小的角色。这里再形象化的演示:
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
我们看看二次式和10次式的学习曲线呢?
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
在一个小的数据量上,多项式越高,就肯定会发生过拟合啦。
如果没有噪音的情况呢?
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
都是用二次和10次去拟合50次没有噪音的数据,貌似还是2次拟合的更好。

确定性的噪音

那么上面中我们已经知道了过拟合由资料量、模型复杂度、噪音有关系,这里进行详细的讨论:
假设右边的数据是有目标函数加上一个高斯的噪音生成。
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
那么我们详细的画出目标函数在不同多项式情况,噪音以及数据量大小过拟合的情况。
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
在右图中左下角部分也是过拟合的,因为当目标函数次数比较小,而采用10次多项式去拟合就过拟合啦。
所以过拟合可以有下面几个因素导致:
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
我们上面说的3个要素,这里将噪音拆分成了2种噪音,随机噪音以及确定性的噪音。

这里再说明下,随机噪音就是目标函数加上一个高斯分布得到的数据。而确定性的噪音是由于目标函数太复杂,对于采用VC维比较低的模型去拟合目标函数就相当于是噪音了。

其实这两个噪音没什么太大的差别,就比如使用电脑产生随机数一样,这个其实是使用一固定的程序产生的,设定好了种子就会产生同样的随机数据。

如何处理过拟合

那么上面产生了过拟合,如何来进行处理呢?
我们同样对比开车,来看看如何避免撞车:
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)
对比开车我们可以从5个方面来避免:
1)从简单模型开始
2)数据的清洗,数据标注改变,或者丢弃错误数据。减少噪音
3)增大数据集
4)正则化,就类似踩刹车
5)交叉验证的方法,不断看仪表盘。
对于增大数据集,有的时候数据集的收集是很困难的,怎么通过已有的数据来产生类似的数据呢?比如在图像中可以通过旋转一点来生成更多的数据,如下图:
林轩田之机器学习课程笔记( how can machines learn better之hazard of overfitting)(32之13)

添加进入的新样本一定要符合原始的数据分布!!!

那么下次课程将讲述如何踩刹车,就是如何进行正则化。

欢迎转载,可以关注博客:http://blog.****.net/cqy_chen