问题
之前在 支持向量机I 中介绍支持向量机通过在样本空间找到一个划分超平面实现将样本分类。但现实任务中,原始样本空间可能不存在一个能正确划分两类样本的超平面。
对于这种问题,可将样本从原始空间映射到一个更高维特征空间,使样本在该特征空间线性可分。
关键准则: 若原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。
目标函数
- 划分超平面模型:
f ( x ) = w T ϕ ( x ) + b f(x)=w^T\phi (x)+b f(x)=wTϕ(x)+b - 目标函数:
m i n w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T ϕ ( x i ) + b ) ≥ 1 i = 1 , 2 , ⋯ , m \begin{array}{c} {min}_{w,b} \quad \frac{1}{2} \left \| w \right \|^2 \\ s.t.\quad y_i(w^T\phi(x_i)+b)\ge1\quad i=1,2,\cdots,m \end{array} minw,b21∥w∥2s.t.yi(wTϕ(xi)+b)≥1i=1,2,⋯,m
等价于:
m a x α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) s . t . α i y i = 0 α i ≥ 0 i = 1 , 2 , ⋯ , m \begin{array}{c} max_{\alpha}\quad \sum_{i=1}^{m}\alpha_i-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_jy_iy_j\phi(x_i)^T\phi(x_j) \\ s.t.\quad \alpha_iy_i=0 \\ \alpha_i\ge0 \quad i=1,2,\cdots,m \end{array} maxα∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj)s.t.αiyi=0αi≥0i=1,2,⋯,m
而计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj) 涉及到映射特征空间的内积,往往很高维很难计算。
构造如下函数: k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x i ) k(x_i,x_j)=\left \langle \phi(x_i),\phi(x_j) \right \rangle=\phi(x_i)^T\phi(x_i) k(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xi),即 x i x_i xi与 x j x_j xj在特征空间的内积等于它们在原始样本空间中通过函数 k ( ⋅ , ⋅ , ) k(\cdot,\cdot,) k(⋅,⋅,)计算的结果。
- 目标函数转化后形式:
m a x α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j k ( x i , x j ) s . t . α i y i = 0 α i ≥ 0 i = 1 , 2 , ⋯ , m \begin{array}{c} max_{\alpha}\quad \sum_{i=1}^{m}\alpha_i-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_i \alpha_jy_iy_jk(x_i,x_j) \\ s.t.\quad \alpha_iy_i=0 \\ \alpha_i\ge0 \quad i=1,2,\cdots,m \end{array} maxα∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjk(xi,xj)s.t.αiyi=0αi≥0i=1,2,⋯,m
求解得:
f ( x ) = w T ϕ ( x ) + b = ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x i ) + b = ∑ i = 1 m α i y i k ( x i , x j ) + b f(x)=w^T\phi(x)+b= \sum_{i=1}^{m}\alpha_iy_i\phi(x_i)^T\phi(x_i)+b=\sum_{i=1}^{m}\alpha_iy_ik(x_i,x_j)+b f(x)=wTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(xi)+b=i=1∑mαiyik(xi,xj)+b
常用核函数
核函数线性组合:
- 对任意正数 γ 1 \gamma_1 γ1 和 γ 2 \gamma_2 γ2, γ 1 k 1 + γ 2 k 2 \gamma_1k_1+\gamma_2k_2 γ1k1+γ2k2 也是核函数;
- 核函数直积 k 1 ⊗ k 2 ( x , z ) = k 1 ( x , z ) k 2 ( x , z ) k_1\otimes k_2(x,z)=k_1(x,z)k_2(x,z) k1⊗k2(x,z)=k1(x,z)k2(x,z) 也是核函数;
- 对任意函数 g ( x ) g(x) g(x), k ( x , z ) = g ( x ) k 1 ( x , z ) g ( z ) k(x,z)=g(x)k_1(x,z)g(z) k(x,z)=g(x)k1(x,z)g(z) 也是核函数。