吴恩达机器学习笔记——十二、SVM关于核函数的补充
PS:深入理解核函数需要泛函分析和高等微积分的知识,这里我们做基础了解。
1 为什么要用核函数
我们使用核函数的目的是:对于在原平面线形不可分的问题,通过核函数映射到高维特征空间,使其两类样本点变得线形可分(可以用一个线形超平面分开)。
2 怎么应用核函数
为了实现以上目的,我们要引进核函数(Kernel Function)。那么核函数的形式该是什么样的呢?先别急,我们继续以上一张图片为例。
在上一张图片中我们已经知道将原先的x1, x2映射到x12, 2½x1x2, x22空间就可以令样本点线性可分,那么我们不妨倒着推一下,看看这样映射时核函数是什么。
首先,我们对新特征空间中任意两个点做內积:
我们发现其值就等于两个点在原先特征空间下做内积后加和再平方,则我们定义核函数就是:κ(x, x’) = (x, x’)2
高维空间中两点的内积=原低维空间两点的kernel function运算结果
即转变后高维空间的内积等于原先低纬空间的内积加和再平方,这也就是核函数的目的:(1)将原样本的特征映射到高纬度特征空间,令其在高维空间线形可分。(2)通过低纬度特征空间的特征向量,算出映射后高维空间中点的内积
其实实际应用中我们不需要像这个例子中这样知道映射关系是怎么样的,我们只需要关心kernel function的形式就可以将其变得线形可分了。
2.1 核函数反应高纬度空间的几何性质
高纬度空间的内积形式可以反应该空间的几何性质:距离、角度
此处我们以kernel function为内积的平方为例
距离
角度
2.2 内积矩阵/核矩阵
对于有N个样本点的模型,则kernel matrix的维度是N×N
2.3 一个二分类的例子
首先我们利用feature mapping将其映射到高维特征空间(如上图所示),此时其变成了一个线形可分的问题。其中+表示正例,其label是+1,“○”表示反例,其label是-1。红色点表示每类的中心点c+, c-。
令w = c+ - c-,并做w向量的中垂线,如下图虚线所示虚线
以上是模型的“训练”过程(其实并没有经过迭代),当新来一个测试样本时,将其也做特征变换,映射到本特征空间中,如下图中绿色“★”所示,那么我们该如何判断其是正例还是反例呢?我们通过该点与“c”连线所表示的向量和向量w所夹的角度表示:
其中sgn()是阶跃函数。
但是此时大家可能会想问,我们实际操作中并不知道mapping function:Φ(),那么我们就无法去算上式中的各种向量和内积,则我们的解决办法是:
一些性质:
2.4 核函数应具有的性质
核矩阵应该是有限半正定矩阵(PSD):含有有限个元素的半正定矩阵
核矩阵K,对于任意的n维向量y,有如下性质成立:
给定任意有限半正定矩阵K,其会有相对应的核函数κ,则一定会找到至少一个feature mapping function Φ()
2.5 常用的核函数
3 Dual Representation
在线性回归或者分类问题中,我们一般使用如下式子:
而之前我们使用核函数进行二分类时使用的是下式:
其中wTc可以看做是b,由2.3得w的值为
由上式可以看出,w其实是训练样本的线性组合,我们不妨令w等于:
我们只需要求出αi就可以求出w了,则有:
这样做的好处是,如果我们将原先3维的向量映射到100维的空间中,那么计算Φ(x)和Φ(x’)的内积的计算量远大于用核函数计算的计算量。