支持向量机(Support Vector Machine,SVM)
支持向量机是一种用于二分类和回归分析的监督学习模型。它的目标是找到一个超平面,将数据集分割成两个类别,同时最大化分类边界(间隔)的宽度。SVM在高维空间中表现良好,对于线性和非线性数据都具有很强的泛化能力。
线性SVM
对于二分类问题,我们考虑线性可分的情况,即存在一个超平面可以完全分隔两个类别的样本。即存在 w ⋅ x + b = 0 \mathbf{w} \cdot \mathbf{x} + b = 0 w⋅x+b=0将特征空间划分为两个部分。其中, w \mathbf{w} w 是法向量(权重), b b b 是偏置(截距),我们可以定义决策函数:
f ( x ) = sign ( w ⋅ x + b ) f(\mathbf{x}) = \text{sign}(\mathbf{w} \cdot \mathbf{x} + b) f(x)=sign(w⋅x+b)
其中, sign ( ⋅ ) \text{sign}(\cdot) sign(⋅) 是符号函数,如果 w ⋅ x + b > 0 \mathbf{w} \cdot \mathbf{x} + b > 0 w⋅x+b>0,则 f ( x ) = 1 f(\mathbf{x}) = 1 f(x)=1,否则 f ( x ) = − 1 f(\mathbf{x}) = -1 f(x)=−1。
间隔margin
对于给定的超平面 w ⋅ x + b = 0 \mathbf{w} \cdot \mathbf{x} + b = 0 w⋅x+b=0,样本点 x i \mathbf{x}_i xi 到超平面的距离可以表示为:
r i = ∣ w ⋅ x i + b ∣ ∥ w ∥ r_i = \frac{\left|\mathbf{w} \cdot \mathbf{x}_i + b\right|}{\|\mathbf{w}\|} ri=∥w∥∣w⋅xi+b∣
其中, ∥ w ∥ \|\mathbf{w}\| ∥w∥ 是权重向量的模。
优化问题
SVM的目标是找到一个最大间隔的超平面。最大化间隔等价于最小化 ∥ w ∥ \|\mathbf{w}\| ∥w∥,同时满足分类约束:
y i ( w ⋅ x i + b ) ≥ 1 对于所有的 i y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 \quad \text{对于所有的} i yi(w⋅xi+b)≥1对于所有的i
其中, y i y_i yi 是样本 x i \mathbf{x}_i xi 的类别标签(+1 或 -1)。为了找到最大间隔超平面,我们可以建立如下的凸二次规划问题:
min 1 2 ∥ w ∥ 2 , s.t. y i ( w ⋅ x i + b ) ≥ 1 \begin{aligned} \text{min } \frac{1}{2}\|\mathbf{w}\|^2 \text{ , s.t.} y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 \ \end{aligned} min 21∥w∥2 , s.t.yi(w⋅xi+b)≥1
通过拉格朗日乘子法,我们可以得到拉格朗日函数:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 N α i [ y i ( w ⋅ x i + b ) − 1 ] L(\mathbf{w}, b, \boldsymbol{\alpha}) = \frac{1}{2}\|\mathbf{w}\|^2 - \sum_{i=1}^{N} \alpha_i \left[ y_i(\mathbf{w} \cdot \mathbf{x}_i + b) - 1 \right] L(w,b,α)=21∥w∥2−i=1∑Nαi[yi(w⋅xi+b)−1]
其中, α = ( α 1 , α 2 , … , α N ) \boldsymbol{\alpha} = (\alpha_1, \alpha_2, \ldots, \alpha_N) α=(α1,α2,…,αN) 是拉格朗日乘子向量, N N N 是样本数。通过对 L ( w , b , α ) L(\mathbf{w}, b, \boldsymbol{\alpha}) L(w,b,α)分别对 w \mathbf{w} w 和 b b b求偏导并令其等于零,可以得到最优解:
w = ∑ i = 1 N α i y i x i 0 = ∑ i = 1 N α i y i \begin{aligned} \mathbf{w} & = \sum_{i=1}^{N} \alpha_i y_i \mathbf{x}_i \\ 0 & = \sum_{i=1}^{N} \alpha_i y_i \end{aligned} w0=i=1∑Nαiyixi=i=1∑Nαiyi
代入原始问题,得到对偶问题:
max ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i ⋅ x j , s.t. α i ≥ 0 \begin{aligned} \text{max} \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j \mathbf{x}_i \cdot \mathbf{x}_j \text{, s.t. } \alpha_i \geq 0 \end{aligned} maxi=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj, s.t. αi≥0
且满足约束条件 ∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_i y_i = 0 ∑i=1Nαiyi=0,通过求解对偶问题,我们可以得到最优的 α \boldsymbol{\alpha} α,然后可以计算 w \mathbf{w} w 和 b b b,最终得到最大间隔超平面。
非线性SVM与核函数
当数据不是线性可分的时候,我们需要使用非线性SVM。非线性SVM通过引入核函数来将特征空间映射到一个高维空间,从而使得在高维空间中的数据线性可分。常用的核函数包括线性核、多项式核和径向基函数(RBF)核。
核函数引入
对于一个输入特征 x \mathbf{x} x,我们将其映射到高维空间中的特征空间 ϕ ( x ) \phi(\mathbf{x}) ϕ(x)。然后,我们可以在高维空间中使用线性SVM找到一个超平面,将映射后的数据分隔开。
决策函数
在高维空间中,决策函数可以表示为:
f ( x ) = sign ( w ⋅ ϕ ( x ) + b ) f(\mathbf{x}) = \text{sign}(\mathbf{w} \cdot \phi(\mathbf{x}) + b) f(x)=sign(w⋅ϕ(x)+b)
优化问题
对于非线性SVM,我们的优化问题变为:
max
∑
i
=
1
N
α
i
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
K
(
x
i
,
x
j
)
, s.t.
α
i
≥
0
\begin{aligned} \text{max} \sum_{i=1}^{N} \alpha_i - \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) \text{, s.t. } \alpha_i \geq 0 \end{aligned}
maxi=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj), s.t. αi≥0
并且满足约束条件 ∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_i y_i = 0 ∑i=1Nαiyi=0,其中, K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i) \cdot \phi(\mathbf{x}_j) K(xi,xj)=ϕ(xi)⋅ϕ(xj)是核函数,它直接计算在特征空间中的内积。
常用核函数
-
线性核函数: K ( x i , x j ) = x i ⋅ x j K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i \cdot \mathbf{x}_j K(xi,xj)=xi⋅xj
-
多项式核函数( d d d 是多项式的次数): K ( x i , x j ) = ( x i ⋅ x j + 1 ) d K(\mathbf{x}_i, \mathbf{x}_j) = (\mathbf{x}_i \cdot \mathbf{x}_j + 1)^d K(xi,xj)=(xi⋅xj+1)d
-
径向基函数(RBF)核函数( σ \sigma σ是一个控制函数宽度的参数): K ( x i , x j ) = exp ( − ∥ x i − x j ∥ 2 2 σ 2 ) K(\mathbf{x}_i, \mathbf{x}_j) = \exp\left(-\frac{\|\mathbf{x}_i - \mathbf{x}_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(−2σ2∥xi−xj∥2)