前面的特征降维是为了解决 overfitting 的问题,而 kernel trick 是为了提升维度,解决 underfitting 的问题。
比如下图中左侧,数据分布在二维空间中,此时无法使用线性分类器将数据分开;但是如果升维至右图所示三维空间,就能很容易的进行分类。

Kernel SVM
Linear SVM
Hard margin
w,bmins.t.21∥w∥2yi(wTxi+b)≥1,∀i.
下图中三条线的方程为:wTx+b=−1,wTx+b=0,wTx+b=1。优化的目标是希望图中 margin 最大化。

Soft margin
有些时候数据并不适合或者并不能被完美的分开,此时就需要引入 soft margin。
w,b,ξimins.t.21∥w∥2+Ci∑ξiyi(wTxi+b)≥1−ξi,∀i,ξi≥0,∀i.
如果式子中 C→∞,soft margin 就会重新退化到 hard margin。
Non-linear SVM
使用升维函数 ϕ,将样本 xi 替换为 ϕ(xi)。
w,b,ξimins.t.21∥w∥2+Ci∑ξiyi(wTϕ(xi)+b)≥1−ξi,∀i,ξi≥0,∀i.
Elevate to finite dimension
可以手工设计升维函数,比如:
ϕ(x)=ϕ([x1,x2])=[1,x1,x2,x1x2,x12,x22]
可以看出转换后的式子中含有 0 阶项,1 阶项,2 阶项,所以升维函数设计的自由度是非常高的。
Elevate to infinite dimension
在应用中用的都是一些常见的转换函数。同时很多 ϕ(x) 没有显示的形式,而是使用 K(x,y)=ϕ(x)Tϕ(y) 来表示。
- Linear Kernel: K(x,y)=xTy (即没有变化)
- Polynomial kernel: K(x,y)=(xTy+c)d
- Gaussian kernel (RBF kernel): K(x,y)=exp(−2σ2∥x−y∥2)
- Sigmoid kernel: K(x,y)=tanh(αxTy+c)
- Inverse multi-quadratic kernel: K(x,y)=∥x−y∥2σ2+c21
支持向量机的具体推导可以参考文章,此处仅做求解。
Primal form:
w,b,ξimins.t.21∥w∥2+Ci∑ξiyi(wTϕ(xi)+b)≥1−ξi,∀i,ξi≥0,∀i.
写出拉格朗日方程
Lw,b,ξi=21∥w∥2+Ci∑ξi−i∑αi(yi(wTϕ(xi)+b)−1+ξi)−i∑βiξi
对自变量求导并带入
∂w∂L∂b∂L∂ξi∂L=w−i∑αiyiϕ(xi)=0⇒w=i∑αiyiϕ(xi)=−i∑αiyi=0⇒i∑αiyi=0=C−αi−βi=0⇒αi+βi=C
得到对偶问题
αimins.t.21i∑j∑αiαjyiyjK(xi,xj)−i∑αi(K(xi,xj)=ϕ(xi)Tϕ(xj))i∑αiyi=0,0≤αi≤C,∀i.
Kernel trick for other machine learning models
Kernel in logistic regression:
w,bminj∑1+expyj(wTϕ(xj)+b)1
利用 representation theorem w=∑iαiϕ(xi),得到
αiminj∑1+expyj(∑iαiK(xi,xj)+b)1
上面的 representation theorem 指的是分类器 w 是可以由一组向量 ϕ(xi) 作为基底线性组合而成。对于很多不使用拉格朗日展开式进行计算的机器学习模型,为简单起见,可以直接用 representation theorem,把线性变成非线性。
Kernel properties
-
Symmetry
K(x,y)=K(y,x)
-
Cauchy-Schwarz Inequality
K(x,y)2≤K(x,x)K(y,y)
K(x,y)2=(xTy)2≤∥x∥2∥y∥2=(xTx)(yTy)=K(x,x)K(y,y)
-
Closure property
K(x,y)=c⋅K1(x,y)
K(x,y)=c+K1(x,y)
K(x,y)=K1(x,y)+K2(x,y)
K(x,y)=K1(x,y)⋅K2(x,y)