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

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

一、二次hypothesis

对于线性的假设,二元分类问题中,首先从视觉上是用把资料用一条线切割。数学上来讲就是用我们输入的特征x计算一个分数:s=w^T x

另一方面,我们会遇到某些资料无法用线切割,不管用哪一条线切割E_{in}都会很大。今天我们研究的是,如何突破线性的限制:不用“线”的方式,用其他方式也可以做到分类。

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

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

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

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

首先作如下变换:

会发现我们这样相当于把原来点x的空间转化到了z空间:z_1 = x_1^2, z_2 = x_2^2.,这个过程称之为特征转换(Feature Transform)图中也显示了变换后的点的位置。从而只要我们找到\tilde{w},就可以把z空间用一条直线分开。

→→→→→

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

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

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

在z空间的hypothesis为:

\tilde{h}(\mathbf{z})=\operatorname{sign}\left(\tilde{\mathbf{w}}^{\top} \mathbf{z}\right)= \operatorname{sign}\left(\tilde{\mathbf{w}}^{\top} \mathbf{\Phi}(\mathbf{x})\right)=\operatorname{sign}\left(\tilde{w}_{0}+\tilde{w}_{1} x_{1}^{2}+\tilde{w}_{2} x_{2}^{2}\right)=h(\mathbf{x})

现在我们讨论\tilde{\mathrm{w}}=\left(\tilde{w}_{0}, \tilde{w}_{1}, \tilde{w}_{2}\right)的取值对上述问题的影响(红字部分)。

  •  (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空间一定会被圆圈划分, 但是我们可以说他一定可以被某个特定的二次曲线划分。

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

\boldsymbol{\phi}_{2}(\mathbf{x})=\left(1, x_{1}, x_{2}, x_{1}^{2}, x_{1} x_{2}, x_{2}^{2}\right)

举例:

x空间:

\left(1, x_{1}, x_{2}, x_{1}^{2}, x_{1} x_{2}, x_{2}^{2}\right)的系数分别为33,-20,-4, 3, 2, 3。

因此z= \boldsymbol{\phi}_{2}(\mathbf{x})=\left(1, x_{1}, x_{2}, x_{1}^{2}, x_{1} x_{2}, x_{2}^{2}\right)后,

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

z空间中的hypothesis可以写成:

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

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

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

已知:资料\{(x_n, y_n)\},以及使用资料在x空间找到好的曲线

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

步骤:

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

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

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

过程流程图:

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

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

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

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

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

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

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

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

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

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

二次的特征变换写完整是

\boldsymbol{\phi}_{2}(\mathbf{x})=\left(1, x_{1}, x_{2}, x_{1}^{2}, x_{1} x_{2}, x_{2}^{2}\right)

Q次的特征变换里面项全写出来则是(我们假设x特征维度是d维的,也就是包含d个特征x_1, x_2,..., x_d):

计算\boldsymbol{\phi}_{Q}(\mathbf{x})中具体有多少个分量(也就是z空间有多少个特征维度):

1+\tilde{d}(1是指‘第一项常数1’,\tilde{d}是其他项)

我们先来分析一下,由于是Q次的,所以从x_1, x_2,..., x_d这些里面选择小于等于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,所以\boldsymbol{\phi}_{Q}(\mathbf{x})一共有

\sum_{q=1}^Q{\binom{q+d-1}{q}}+1=\sum_{q=0}^Q{\binom{q+d-1}{q}}=C_{d-1}^{0}+C_{d}^{1}+C_{d+1}^{2}+...+C_{d+Q-1}^{Q}

又因为排列组合知识:C_{n}^{m}+C_{n}^{m-1}=C_{n+1}^{m}

所以一共有

\begin{array}{l} \quad C_{d-1}^{0}+C_{d}^{1}+C_{d+1}^{2}+...+C_{d+Q-1}^{Q} \\ =C_{d+1}^{1}+C_{d+1}^{2}+...+C_{d+Q-1}^{Q}\\ =C_{d}^{0}+C_{d}^{1}+C_{d+1}^{2}+...+C_{d+Q-1}^{Q} \\ \cdots \\ =C_{d+Q-1}^{Q-1}+C_{d+Q-1}^{Q}\\ =C_{d+Q}^{Q} \end{array}

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

排列组合知识:C_{n}^{m}=C_{n}^{n-m}(下面第二个等式的原因),所以有

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

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

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

由于

很显然的一件事是:

自由度:

z空间中的特征维度是1+\tilde{d},则在z空间中,任何2+\tilde{d}的输入都不能被shattered。(之前证过)

那么同样的任何2+\tilde{d}的输入在x空间都不能被shattered,否则一定可以找到z空间中对应的系数,使得z空间中的某个2+\tilde{d}的输入都被shattered。因此,对VC Dimension产生限制。

\tilde{d}与Q是相关的,因此Q变大时候,VC Dimension也会变大。

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

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

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

右边:虽然E_{in}为0,但是好像学习的太过头了

这就又回到我们最初提的“两个问题”,1.E_{in}E_{out}接近吗?2.E_{in}够小吗?

我们权衡一下\tilde{d}(Q)大的时候,1不好 2好;\tilde{d}(Q)小的时候,1好 2不好。

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

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

1. z=\left(1, x_{1}, x_{2}, x_{1}^{2}, x_{1} x_{2}, x_{2}^{2}\right) ,d_{VC}=6

2.如果我们不用全部,只用其中三个,z=\left(1, x_{1}^{2}, x_{2}^{2}\right)d_{VC}=3

3.如果我们考虑反正是一个圆,更好的话,只用其中两个,z=\left(1, x_{1}^{2}+x_{2}^{2}\right)d_{VC}=2

4.或者我站在“上帝角度”直接给出z=\left(\operatorname{sign}\left(0.6-x_{1}^{2}-x_{2}^{2}\right)\right)可以吗?这样仿佛只用付出d_{VC}=1的代价

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

四、hypothesis set的结构

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

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

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

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

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

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

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

1.vc维其实告诉我们的就是可以shatter多少个点,所以H_1H_0shatter的点多。

2.我们对每个hypothesis找到了最好的E_{in}(也就是最小的E_{in}),那么这些E_{in}的关系如上图:因为hypothesis越来越多,他的选择也增多了,你可能会在新增的这些hypothesis里找到更小的E_{in}

可以用下面的图表示:

E_{in}越来越小,in-sample error曲线一直下降;

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

所以造成E_{out}先下后上。

直接选择H_{1126}这些很高维的hypothesis set是很危险的。

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

如果E_{in}(g_1)已经很小,那我们开心地就选择H_1

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

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

总结:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值