持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
核方法相关的概念有三个Kernel Method(从思想角度)、Kernel Trick(从计算角度)、Kernel Function
核方法可以用于非线性带来的高维转换(从模型角度),对偶表示带来内积(从优化角度)
有时分类数据是完全不可分的,例如异或问题,即数据集为
{((0,0),0),((1,1),0),((1,0),1),((0,1),1)}
显然异或问题中的数据不是线性可分的,但我们可以将数据映射到高位空间来实现线性可分,因此我们需要寻找一个非线性的ϕ(x)将低维空间的数据x映射到成高维空间的数据z,从而实现新的数据集{(z,y)}线性可分
Cover Theonem:高维比低维更易线性可分
ϕ(x)可以是
x=(x1,x2)→ϕ(x)z=(x1,x2,(x1−x2)2)
显然在新的空间中,新数据可以实现线性可分
在硬间隔SVM中我们将求解问题转化为凸优化问题
⎩⎨⎧ω,bmin 21ωTωs.t.yi(ωTxi+b)≥1,i=1,2,⋯,N
进而转化为其对偶问题
⎩⎨⎧λmin 21i=1∑Nj=1∑Nλiλjyiyjxixj−i=1∑Nλis.t.λi≥0,i=1∑Nλiyi=0
如果我们把这里的原数据映射到高维空间实现线性可分,则问题转化为
⎩⎨⎧λmin 21i=1∑Nj=1∑Nλiλjyiyjϕ(xi)Tϕ(xj)−i=1∑Nλis.t.λi≥0,i=1∑Nλiyi=0
然而,如果我们将x代入ϕ(x),然后计算点积ϕ(xi)Tϕ(xj),这个计算量是很大的,因此我们引出核函数
核函数的定义为
∀x,x′∈X,∃ϕ:x↦zs.t.K(x,x′)=ϕT(x)ϕ(x)=⟨ϕ(x),ϕ(x′)⟩
这里是直接求出ϕ(xi)Tϕ(xj),不需要先求ϕ(x),再求ϕ(xi)Tϕ(xj)
这里关于核函数的定义先看看就行,后面会有更精确的定义
例如一个核函数可以定义为K(x,x′)=exp(−2σ2(x−x′)2)
这里只要知道x,x′直接代入就能求出对应的ϕ(xi)Tϕ(xj)
关于线性可分、允许一点点错误、严格非线性三种问题解决方法
| 线性可分 | 一点点错误 | 严格非线性 |
|---|
| PLA | Pocket Algerithm | ϕ(x)+PLA |
| Hard-Margin SVM | Soft-Margin SVM | ϕ(x)+Hard-Margin SVM |