机器学习基石HOW部分(4)
机器学习基石HOW部分(4)
标签:机器学习基石
第十二章
nonlinear via nonlinear feature transform ϕ plus linear with price of model complexity
前面的分析都是基于“线性假设“,它的优点是实际中简单有效,而且理论上有VC 维的保证;然而,面对线性不可分的数据时(实际中也有许多这样的例子),线性方法不那么有效。
比如下面的例子:
我们可以看出,二次曲线(比如圆)可以解决这个问题。
接下来就分析如何通过二次曲线假设解决线性方法无法处理的问题,进而推广到多次假设。
假设分类器是一个圆心在原点的正圆,圆内的点被分为+1,圆外的被分为-1,于是有:
把圆圈分类器的方程改写一下:
可以这样理解,原来的x 变量都映射到了z-空间,这样,在x-空间中线性不可分的数据,在z-空间中变得线性可分;然后,我们在新的z-空间中进行线性假设。
这个转换的过程成为nonlinear feature transform,用符号ϕ表示,ϕ把两个互相独立的空间给联系了起来:
X空间下的每个点,都对应Z空间下的某个点,同样的,X空间下的二次曲线方程,都对应Z空间下的某个一次直线方程。
w˜ | X空间下的曲线形态 |
---|---|
(0.6,−1,−1) | circle(圈圈在内部,叉叉在外部) |
(−0.6,+1,+1) | circle(圈圈在外部,叉叉在内部) |
(0.6,−1,−2) | 椭圆(ellipse) |
(0.6,−1,+2) | 双曲线(hyperbola) |
(0.6,+1,+2) | 所有点都判断为圈圈 |
上面的例子,它们的中心都必须在原点。
如果想要得到跟一般的二次曲线,如圆心不在原点的圆、斜的椭圆、抛物线等,则需要更一般的二次假设。
这样一来,这个完整版的Z空间的直线,就可以代表X空间下的所有二次曲线了。
非线性转换(nonlinear transform)
进行非线性转换的步骤(这里的非线性转换其实也是特征转换(feature transform),在特征工程里很常见。):
非线性变换的代价
所谓”有得必有失“,将特征转换到高次空间,我们需要付出学习代价(更高的模型复杂度)。
x-空间的数据转换到z-空间之后,新的假设中的参数数量也比传统线性假设多了许多
Q-th Order Polynomial Transform
d维向量x经过Q次多项式变换:
根据之前分析过的,vc 维约等于自由变量(参数)的数量,所以新假设的dvc 急速变大,也就是模型复杂大大增加(复杂度由O(d)变为O(Qd))。
上图是分别使用原始数据进行训练以及进行4次非线性变换后的数据进行训练的结果对比。从视觉上看,虽然右图(经过4次非线性变换的模型)能够把圈圈叉叉完全分开,但显然这种模型过于复杂了。
回顾机器学习前几讲的内容,我们可以有效学习的条件是:(1)Ein(g) 约等于Eout(g);(2)Ein(g)足够小。
当模型很简单时(dvc很小),我们更容易满足(1)而不容易满足(2);反之,模型很复杂时(dvc很大),更容易满足(2)而不容易满足(1)。
那么如何选择合适的复杂度呢?像上面一样用眼睛看?暂且不讨论10维的数据有没有办法用眼睛看,就拿前面2维的例子来说,用眼睛看来选择模型是件很危险的事情。
因为你是在“看过”数据之后,由你大脑选择的一个模型,这里要考虑到你大脑“选择模型”产生的一个复杂度,因为如果重新选取一部分数据,你有可能就不再挑选这个模型了,事实上你的大脑不知不觉地参与到了模型参数估计上。因此要切记,在ϕ的选择之前,不可以偷偷去看数据。
假设集(Structured Hypothesis Sets)
前面我们分析的非线性转换都是多项式转换(polynomial transform)。
我们用符号ϕQ来表示Q次多项式变换:
可以发现ϕi(x)中包含了ϕi−1(x),因此他们对应的Hypothesis Set也有如下关系:
我们将二次假设记为H2,k次假设记为Hk。显然,高次假设的模型复杂度更高。
也就是说,高次假设对数据拟合得更充分,Ein 更小;然而,由于付出的模型复杂度代价逐渐增加,Eout 并不是一直随着Ein减小。
通常在进行高次非线性变换的时候,应该特别小心,因为dvc上升很快,极容易造成overfitting。比较安全的做法是,先尝试不做非线性变换,即使用Hϕ1,如果效果足够好了,就不需要进行非线性变换,否则,转而进行更高次的假设,一旦获得满意的Ein 就停止学习(不再进行更高次的学习)。
总结为一句话:linear/simpler model first !