上节课讲了如何解决非线性问题:通过特征变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行分类。我们说这样会增加额外的模型复杂度。今天我们说这个额外的复杂度会造成机器学习过拟合(overfitting)现象。今天讲困难怎么产生的以及如何解决它。
一、什么是过拟合?
先从一个例子出发,我们现在要做一个一维的回归分析,资料中有五个点,然后输出一个实数。
资料:,N = 5
目标函数f:f是一个二次函数(图中为蓝色曲线)
label:,由f产生再加一点点很小的噪音
解决方案1:4次多项式做回归分析,即用四次多项式把x空间中的点转换到z空间,再进行线性回归。
我们知道,四次多项式通过五个点,会有一个唯一解。所以,图中为红色曲线。
我们发现红色曲线和真实的蓝色曲线一点都不像,实际上的很大,因为除了那五个点,其他未知点的效果都不是很好。
所以很小,而很大,这是一种坏的泛化性。
我们回过头来看一下VC曲线:
就像上次说的,如果,那么实际上的与差距越来越大(很大,很小)
可以看到随着vc维越来越大,越来越小,in-sample error曲线一直下降,model complexity曲线就上升;
所以造成先下后上。
从最好的vc维往右看,一直下降,一直上升。我们看样子是把fitting做好了,但其实过头了(over)。所以变小,变高这个过程叫做overfitting,过拟合。(常见,不容易解决)
从最好的vc维往左看,