Skip to content

SVM 支持向量机 (Support Vector Machine)

核心思想

SVM 寻找一个最大间隔超平面将不同类别的数据分开。核心直觉是:在所有能正确分类训练数据的超平面中,间隔最大的那个泛化能力最强。

硬间隔线性 SVM

超平面与函数间隔

超平面定义为:

wTx+b=0

样本 (xi,yi) 到超平面的几何间隔

γi=yiwTxi+bw

最大间隔优化问题

令所有样本的最小几何间隔为 γ=miniγi,最大化 γ

maxw,b2ws.t.yi(wTxi+b)1,i

等价于:

minw,b12w2s.t.yi(wTxi+b)1,i

拉格朗日对偶

引入拉格朗日乘子 αi0,构造拉格朗日函数:

L(w,b,α)=12w2i=1Nαi[yi(wTxi+b)1]

wb 求偏导并令其为零:

Lw=0w=i=1NαiyixiLb=0i=1Nαiyi=0

代回得到对偶问题

maxαi=1Nαi12i=1Nj=1NαiαjyiyjxiTxjs.t.αi0,i=1Nαiyi=0

KKT 条件

互补松弛条件:

αi[yi(wTxi+b)1]=0,i

这意味着只有支持向量yi(wTxi+b)=1 的样本)对应的 αi>0

软间隔 SVM

引入松弛变量 ξi0 和惩罚参数 C>0

minw,b,ξ12w2+Ci=1Nξis.t.yi(wTxi+b)1ξi,ξi0

对偶问题变为约束 0αiC

核函数 (Kernel Trick)

对偶问题中的 xiTxj 可替换为核函数 K(xi,xj),实现隐式映射到高维空间而无需显式计算:

核函数公式
线性核K(x,z)=xTz
多项式核K(x,z)=(γxTz+r)d
RBF (高斯核)K(x,z)=exp(γ|xz|2)
Sigmoid 核K(x,z)=tanh(γxTz+r)

Mercer 定理K 必须是正半定的,即对任意样本集,核矩阵 Kij=K(xi,xj) 满足 K0

RBF 核的直觉

RBF 核相当于将样本映射到无穷维空间。参数 γ 越大,决策边界越"弯曲"、越灵活(更容易过拟合)。

SMO 算法简述

序列最小优化(Sequential Minimal Optimization)每次选取两个 αi,αj 进行解析更新,利用约束 αiyi+αjyj=const 将二变量问题化为一元问题,得到闭式解。

代码对应

bash
python -m pipelines.classification.svc