【机器学习笔记】SVM part2: 核函数与SMO算法

回顾我们之前的问题:
之前我们说到,假设我们了 α , 又有样本点数据,我们很容易由 w=mi=1αiy(i)x(i) 得出 w , 同时也求得了 b

那么就得到了这个分类面 wTx+b ,我们换一种表示方法:

wTx+b=(i=1mαiy(i)x(i))Tx+b=i=1mαiy(i)<x(i),x>+b

这里我们可以看出,新的数据点只需与那些 αi=0 的临界点做内积,便可以得到分类结果。

核函数(Kernels)

先说一下直观理解吧(不一定正确,仅作直观理解),核函数就是把低维特征映射到高维,从而使得在低维情况下线性不可分的数据在高维情况下有可能能够找到那个分类面

特定情况下,如果我们需要,可以将一个一维特征加以变换成多维
比如说要拟合曲线的时候,我们可以用一个自变量的多次方程去拟合
比如在一个回归问题中,观察到 y 可以用关于 x 的 3次多项式来拟合
就可以用如下变换,将 x 扩展到高维,使得 y 成为一个关于 ϕ(x) 的函数:

ϕ(x)=xx2x3

如果有原来变量的内积,如 <x,z> , 那么映射之后为 <ϕ(x),ϕ(z)> , 那么这个核函数的形式化表出就为:

K(x,z)=ϕ(x)Tϕ(z)

这里只是简单列举一个形式化表出的例子,没有直接关联原问题,但是这里可以理解,我们可以通过这个和函数,让SVM学习更高维度的特征

这里还产成了一个问题:是不是每一个核函数都能表出为类似 ϕ(x)Tϕ(z) 的形式呢?

其实我初步的思考为,只有在原低维特征向量有做内积的运算时,我们这样构造和转化会方便

(好像有点废话,因为后面看到高斯核的时候在想是不是也能转化…不过是可以转化的,高斯核将低维特征转化成了无线维的特征)

Andrew 在课上讲了这样一句话:每当你在原问题中遇到 <x,z> ,也就是内积的形式时,你都可以把它转化成 K(x,z) ,当你在做这个转化的时候,你就将低维特征映射到了高维。

嗯,学到后面就清晰了,这个就是核函数有效性的问题

这里说明一个核函数减少计算复杂度的例子:

假设, x,z 都是 n 维向量, 核函数为: K(x,z)=(xTz)2 , 整理:

K(x,z)=ni=1nj=1(xi,xj)(zi,zj)=ϕ(x)Tϕ(z)

不要疑惑,这里的 ϕ(x) 并不是上文的,而是如下:

ifn=3:

ϕ(x)=x1x1x1x2...x3x3

显然, ϕ(x)

显然, ϕ(x) n2 项,所以计算复杂度为 O(n2) ;

但是如果我们直接计算 K(x,z)=(xTz)2 这里的复杂度就变成了 O(n)

相关文章
相关标签/搜索