课程简介
继续上一课最后的问题,当数据是非线性可分的时候需要把数据转化到 Z 空间(线性可分)才可以利用 SVM ,因此需要知道 Z 空间是什么。这节课解决了不用知道具体的 Z 空间就可以利用 SVM 进行分类。
最后,该课程介绍了如何因对过拟化的问题。思想跟十一课介绍的相同,就是设置一个限制条件。
课程提纲:
1、the kernel trick.
2、Soft-margin SVM
1、The Kernel Trick
通过十四课可以知道,我们只需要Z空间提供两个数据点的内积,并不需要知道如何把 x 转换到 z 。
如下图中求解 SV 的过程可知。
因此,我们的目标是找到如下函数:
Z*Z' = K(x,x');—— the kernel。
只要 Z 是真实存在的(但我们并不需要知道具体是什么),K 函数就是有效的。或许有人会问,Z 不存在也没问题吧?只要能够找到 K 使得对于每对 x,x' 都可以找到对应的值就可以了。或许在某些情况下,Z 不存在的时候也可以得到想要的结果,但是由于我们的推导过程是基于 Z 存在的情况下的,因此为了保证训练的正确性,我们需要知道 Z 是存在的。下面是如何验证一个核函数是否存在的方法:
1、它是对称的,应该有:K(x,x') = K(x',x)
2、矩阵:
只要 K 同时满足上面的两个条件,则可以证明 Z 是存在的。
剩下的问题就是要寻找一个合适的 K 了。常用的有如下两个:
K(x,x') = (aX*X'+b)^Q
其中:
2)
the RBF kernel( 在 SVM 中更常用 )
K(X,X') = exp(-Y||X-X'||^2)
通过核心函数,我们就不用自己设计转换函数了,但是我们需要寻找一个合适的核函数。
2、Soft-margin SVM
正如第十一课提到的过拟化问题,如果样本内误差为 0 ,那么我们很可能把噪声也计算了,因此会导致学习得到的模型泛化能力减弱。因此我们应该允许噪声的存在。
所以我们需要一个度量误差的方法。
为了说明这里用到的误差度量方法,先观察下图:其中红色线中的点称为 破坏点(破坏了margin )。设其到 margin 的距离为 q 。我们把 q 作为图中黄色点的破坏力。
全部破坏力定义为:黄色中的所有点到margin 的距离的和。
公式化后有:
所以现在我们需要
对于第一个公式的解释:
开始的时候是没有后面的求和项的,当我们最小化前面的部分,相当于最大化:margin。现在增加了后面的那一项及修改后的限制条件,当我们增大margin的时候减少了第一项的值的同时增大了第二项的值,因此这两项就可以互相制约。从而在允许噪声存在的情况下学习 SV。
第一项中的 C 是一个常数项,用来调整误差的比重。当C = 无穷 的时候就退化到上一课的问题了。当 C = 0 的时候学习就没有意义了。因为这时margin将会变得无限大。
接下来的任务就是要解出上述方程了。具体方法可以参考下面的。
最后有两个问题需要注意:
1、如果数据是线性不可分的。
当数据是线性不可分的时候,我们也可以运用上面的方法,但是会得出一个无法接受的解,此时我们可以通过检测该解是否有效来判断我们的数据是否可分。
2、如果 Z 中存在 W0 会怎样?
在我们之前的假设中,W0 表示的是常数项 1 ,但是当 Z 也存在 W0 的时候,我们令常数项的 W0 --> b。则当学习完毕后会有:
(Why?)