林轩田《机器学习基石》(十二)—— Nonlinear Transformation

上一节讲的三个模型:线性分类、线性回归,logistics回归问题都是线性的方式:用w计算一个分数。今天要讲的是nolinear 非线性的方式去做分类。

一、二次hypothesis

对于线性的假设,二元分类问题中,首先从视觉上是用把资料用一条线切割。数学上来讲就是用我们输入的特征x计算一个分数:林轩田《机器学习基石》(十二)—— Nonlinear Transformation

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

另一方面,我们会遇到某些资料无法用线切割,不管用哪一条线切割林轩田《机器学习基石》(十二)—— Nonlinear Transformation都会很大。今天我们研究的是,如何突破线性的限制:不用“线”的方式,用其他方式也可以做到分类。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

1.资料D不是线性可分的。

2.用一个圆圈可以将资料分开。圆形内部是正类,外面是负类。

这个虽然不是线性可分,但是确实圆圈可分,划分它的h可以写成: 

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

我们可以进一步研究circle-PLA、circle-Regression等问题,如何设计这些算法。

首先作如下变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

会发现我们这样相当于把原来点x的空间转化到了z空间:林轩田《机器学习基石》(十二)—— Nonlinear Transformation.,这个过程称之为特征转换(Feature Transform)图中也显示了变换后的点的位置。从而只要我们找到林轩田《机器学习基石》(十二)—— Nonlinear Transformation,就可以把z空间用一条直线分开。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation→→→→→林轩田《机器学习基石》(十二)—— Nonlinear Transformation

现在我们知道了,如果在x空间里面的资料x能用一个圆圈分开,那么经过某个变换后到z空间,新资料z可以用一条线分开。

那么反之是否成立呢?(不成立,下面解释)

比如我们先知道z空间资料是线性可分的,z是由x特征变换而来的:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

在z空间的hypothesis为:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

现在我们讨论林轩田《机器学习基石》(十二)—— Nonlinear Transformation的取值对上述问题的影响(红字部分)。

  •  (0.6, -1, -1) :x空间的资料用一个圆可以分开,圆圈内部是‘o’正类点
  •  (-0.6, +1, +1) :x空间的资料用一个圆可以分开,圆圈内部是‘×’负类点
  •  (0.6, -1, -2) :x空间的资料用一个椭圆可以分开,椭圆内部是‘o’正类点
  •  (0.6, -1, +2) :x空间的资料用一个双曲线可以分开
  • (0.6, +1, +2) :x空间的资料总被分类为‘o’正类点

虽然反过来我们并不能说x空间一定会被圆圈划分, 但是我们可以说他一定可以被某个特定的二次曲线划分。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

上面的x空间中的二次曲线都是圆心过原点的,我们希望包含所有的一般情况(比如圆心不过原点),于是添加了二次项、一次项和常数项1:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

举例:

x空间:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

林轩田《机器学习基石》(十二)—— Nonlinear Transformation的系数分别为33,-20,-4, 3, 2, 3。

因此林轩田《机器学习基石》(十二)—— Nonlinear Transformation后,

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

这样,在z空间的一条线就对应于x空间中的某个二次曲线:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

z空间中的hypothesis可以写成:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

二、如何学到一个好的二次hypothesis

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

那么如何设计一个好的二次hypothesis来达到良好的分类效果。

由上面一节我们可以把目标变为:在z空间中设计一个最佳的分类线。

已知:资料林轩田《机器学习基石》(十二)—— Nonlinear Transformation,以及使用资料在x空间找到好的曲线

所以我们要做的事情就是:使用z空间的资料来找到一个最佳分类线,获得z空间资料的方法是对x空间中的资料做特征变换。

步骤:

1.先把x空间的资料转化到z空间

2.用一个算法A在z空间中找到一条好的线(也就是找到w)

3.做一个类似反变换的事情,z空间中的点已经被很好分类了,那么返回去x空间中的点也会有对应的分类。但是现在我们不是从z空间再做反变换到x空间,我们是依旧做x到z的变换,某个资料x的类别是它在z空间中的对应点的标签。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

过程流程图:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

上述过程其中有两件事,需要我们选择:

  • 特征变换:转换到什么样的z空间
  • 算法A的选择:PLA?logistics回归?线性回归?

其实整个思想就是把原来的资料变换一个空间做线性分类。

现在我们学会了上面的问题,也就是学会了二次PLA,二次logistics回归,二次线性回归等。

之前在讲处理原始资料(图像)时候讲过一个特征变换的例子:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

比如数字识别问题,原始的像素值特征转换为一些实际的具体特征,比如密度、对称性等等,这就从原来的灰度图变成了二维的向量。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

写出一个新的数字依旧可以做出这两个具体特征,然后可以得到一个类别,这就是新数字的类别。

当然做这种特征变换会产生一些代价,下节将具体介绍。

三、特征变换会产生一些代价

首先我们介绍,如果我们把上面的二次扩展成多次的特征变换。

二次的特征变换写完整是

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

Q次的特征变换里面项全写出来则是(我们假设x特征维度是d维的,也就是包含d个特征林轩田《机器学习基石》(十二)—— Nonlinear Transformation):

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

计算林轩田《机器学习基石》(十二)—— Nonlinear Transformation中具体有多少个分量(也就是z空间有多少个特征维度):

林轩田《机器学习基石》(十二)—— Nonlinear Transformation(1是指‘第一项常数1’,林轩田《机器学习基石》(十二)—— Nonlinear Transformation是其他项)

我们先来分析一下,由于是Q次的,所以从林轩田《机器学习基石》(十二)—— Nonlinear Transformation这些里面选择小于等于Q个项。计算有多少种取法,

排列组合知识:从n个元素中取m个(可重复取)的组合为C(n+m-1,m)

现在是对于0次是只有一种取法,

对于1次项来说,是从d个元素里面选1一个:C(d+1-1,1)

对于二次项来说是从d个里面选两个:C(d+2-1,2)

....

对于q次项来说是从d个元素里取q个:C(d+q-1,q)

一直到最大次数Q,所以林轩田《机器学习基石》(十二)—— Nonlinear Transformation一共有

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

又因为排列组合知识:林轩田《机器学习基石》(十二)—— Nonlinear Transformation

所以一共有

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

(下面图里第一个不等式就解释清楚了)

排列组合知识:林轩田《机器学习基石》(十二)—— Nonlinear Transformation(下面第二个等式的原因),所以有

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

计算z空间特征维度个数的时间复杂度是Q的d次方,随着Q和d的增大,计算量会变得很大。

同时,空间复杂度也大,因为要把z空间中的权重也全部储存起来(权重的维度=z空间的维度)。

综上在计算和储存上都要花较大的力气,这种特征变换的一个代价是计算的时间、空间复杂度都比较大。

由于

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

很显然的一件事是:

自由度:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

z空间中的特征维度是林轩田《机器学习基石》(十二)—— Nonlinear Transformation,则在z空间中,任何林轩田《机器学习基石》(十二)—— Nonlinear Transformation的输入都不能被shattered。(之前证过)

那么同样的任何林轩田《机器学习基石》(十二)—— Nonlinear Transformation的输入在x空间都不能被shattered,否则一定可以找到z空间中对应的系数,使得z空间中的某个林轩田《机器学习基石》(十二)—— Nonlinear Transformation的输入都被shattered。因此,对VC Dimension产生限制。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

林轩田《机器学习基石》(十二)—— Nonlinear Transformation与Q是相关的,因此Q变大时候,VC Dimension也会变大。

那因此会带来一些什么坏事呢?

如下是对同一个资料的两种分类方式。哪一个比较好?

林轩田《机器学习基石》(十二)—— Nonlinear Transformation林轩田《机器学习基石》(十二)—— Nonlinear Transformation

左边:视觉上来说符合我们对资料的认知

右边:虽然林轩田《机器学习基石》(十二)—— Nonlinear Transformation为0,但是好像学习的太过头了

这就又回到我们最初提的“两个问题”,1.林轩田《机器学习基石》(十二)—— Nonlinear Transformation林轩田《机器学习基石》(十二)—— Nonlinear Transformation接近吗?2.林轩田《机器学习基石》(十二)—— Nonlinear Transformation够小吗?

我们权衡一下林轩田《机器学习基石》(十二)—— Nonlinear Transformation大的时候,1不好 2好;林轩田《机器学习基石》(十二)—— Nonlinear Transformation小的时候,1好 2不好。

于是又到了我们抉择的时候了,如何选择Q呢?用眼睛决定吗?(肯定不可能,要是高维空间中一般视觉上不容易决定)

那低维空间d=2,结果会好吗?实际上,用眼睛决定可能会有一些潜在问题:

1. 林轩田《机器学习基石》(十二)—— Nonlinear Transformation ,林轩田《机器学习基石》(十二)—— Nonlinear Transformation

2.如果我们不用全部,只用其中三个,林轩田《机器学习基石》(十二)—— Nonlinear Transformation林轩田《机器学习基石》(十二)—— Nonlinear Transformation

3.如果我们考虑反正是一个圆,更好的话,只用其中两个,林轩田《机器学习基石》(十二)—— Nonlinear Transformation林轩田《机器学习基石》(十二)—— Nonlinear Transformation

4.或者我站在“上帝角度”直接给出林轩田《机器学习基石》(十二)—— Nonlinear Transformation可以吗?这样仿佛只用付出林轩田《机器学习基石》(十二)—— Nonlinear Transformation的代价

但这是human learning不是machine learning,机器会受到你主观的影响。这样实际的代价其实会包含在你人脑中所做的代价。这样导致看起来VC维很小,实际上并不是。所以,不要让你的决策进入你的机器学习中。

四、hypothesis set的结构

我们讨论,从x空间到z空间的变换,0次的变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

1次的变换=0次的变换+新的变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

2次的变换=1次的变换+新的变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

3次的变换=2次的变换+新的变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

Q次的变换=Q-1次的变换+新的变换:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

可以看到我们的每一个变换都包含了前一个变换,hypothesis角度则是

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

上面的被称为hypothesis set的结构,上面的结构告诉我们

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

1.vc维其实告诉我们的就是可以shatter多少个点,所以林轩田《机器学习基石》(十二)—— Nonlinear Transformation林轩田《机器学习基石》(十二)—— Nonlinear Transformationshatter的点多。

2.我们对每个hypothesis找到了最好的林轩田《机器学习基石》(十二)—— Nonlinear Transformation(也就是最小的林轩田《机器学习基石》(十二)—— Nonlinear Transformation),那么这些林轩田《机器学习基石》(十二)—— Nonlinear Transformation的关系如上图:因为hypothesis越来越多,他的选择也增多了,你可能会在新增的这些hypothesis里找到更小的林轩田《机器学习基石》(十二)—— Nonlinear Transformation

可以用下面的图表示:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation越来越小,in-sample error曲线一直下降;

vc维越来越大,model complexity曲线就上升;

所以造成林轩田《机器学习基石》(十二)—— Nonlinear Transformation先下后上。

林轩田《机器学习基石》(十二)—— Nonlinear Transformation

直接选择林轩田《机器学习基石》(十二)—— Nonlinear Transformation这些很高维的hypothesis set是很危险的。

安全的做法:从低维度开始做起,

如果林轩田《机器学习基石》(十二)—— Nonlinear Transformation已经很小,那我们开心地就选择林轩田《机器学习基石》(十二)—— Nonlinear Transformation

如果不够小,继续往右边移动。

也就是说:不要一开始就试很复杂的转换,从简单的开始,通常我们会发现其实低维度的做的还不错(甚至有时候线性都很好)。

总结:

林轩田《机器学习基石》(十二)—— Nonlinear Transformation