个人技术分享

支持向量机(Support Vector Machine,SVM)是一种用于分类和回归分析的机器学习算法,特别适用于高维数据。它的核心思想是找到一个最佳的超平面,将不同类别的样本进行正确的分类。

支持向量机的基本原理

  1. 线性可分的情况

    假设我们有两类数据集,我们希望找到一个超平面将这两类数据分开。对于二维数据,这个超平面就是一条直线;对于三维数据,它就是一个平面;更高维度的情况类似。SVM的目标是找到这个超平面,使得它不仅能分开这两类数据,还能使得两类数据离这个超平面尽可能远。

  2. 数学表示

    对于一个超平面,我们可以用方程来表示: wx + b = 0 ,其中:

    • w 是超平面的法向量。
    • b 是数据点。
    • (b) 是偏移量(bias)。

    我们希望找到这样的 w 和 b ,使得超平面将两类数据分开,并且离每一类数据的最小距离最大化。

  3. 最大化间隔(Margin)

    间隔是指从超平面到最近的一个数据点的距离。SVM希望最大化这个间隔。对于线性可分的情况,我们希望找到以下两个约束条件:

    • 对于属于正类的点: w ⋅ x i + b ≥ 1 \mathbf{w} \cdot \mathbf{x}_i + b \geq 1 wxi+b1
    • 对于属于负类的点: w ⋅ x i + b ≤ − 1 \mathbf{w} \cdot \mathbf{x}_i + b \leq -1 wxi+b1

    这两个约束可以统一为: y i ( w ⋅ x i + b ) ≥ 1 y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 yi(wxi+b)1 ,其中 y i y_i yi 是数据点的标签,正类为1,负类为-1。

  4. 优化问题

    现在我们的目标是找到 w 和 b,使得间隔最大化。这个优化问题可以转化为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{\mathbf{w}, b} \frac{1}{2} ||\mathbf{w}||^2 w,bmin21∣∣w2

使得 y i ( w ⋅ x i + b ) ≥ 1 y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 yi(wxi+b)1

这里,我们用 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2} ||\mathbf{w}||^2 21∣∣w2 作为目标函数是因为这样可以简化数学推导。

非线性可分的情况

现实中,大多数数据集并不是线性可分的。为了处理这种情况,SVM引入了两种方法:软间隔和核技巧。

  1. 软间隔

    为了允许少量的误分类,我们引入了松弛变量 ξ i \xi_i ξi 使得约束变为: y i ( w ⋅ x i + b ) ≥ 1 − ξ i y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 - \xi_i yi(wxi+b)1ξi,并且 ξ i ≥ 0 \xi_i \geq 0 ξi0
    目标函数变为:

min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i \min_{\mathbf{w}, b} \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^n \xi_i w,bmin21∣∣w2+Ci=1nξi

这里的 C 是一个超参数,用于控制间隔最大化和误分类数量之间的平衡。

  1. 核技巧

    核技巧(Kernel Trick)是将原始数据映射到一个更高维的空间,使得在这个高维空间中数据变得线性可分。常见的核函数有:

    • 线性核: 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)=xixj
    • 多项式核: 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)=(xixj+1)d
    • 高斯核(RBF): K ( x i , x j ) = exp ⁡ ( − γ ∣ ∣ x i − x j ∣ ∣ 2 ) K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma ||\mathbf{x}_i - \mathbf{x}_j||^2) K(xi,xj)=exp(γ∣∣xixj2)

    使用核函数后,SVM的优化问题就变成了: min ⁡ 1 2 ∑ i , j α i α j y i y j K ( x i , x j ) − ∑ i α i \min \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j K(\mathbf{x}_i, \mathbf{x}_j) - \sum_i \alpha_i min21i,jαiαjyiyjK(xi,xj)iαi

    使得 ∑ i α i y i = 0 \sum_i \alpha_i y_i = 0 iαiyi=0 α i ≥ 0 \alpha_i \geq 0 αi0,这里, α i \alpha_i αi 是拉格朗日乘子。核函数 K ( x i , x j ) K(\mathbf{x}_i, \mathbf{x}_j) K(xi,xj) 替代了原始的内积 x i ⋅ x j \mathbf{x}_i \cdot \mathbf{x}_j xixj,使得优化问题能够在高维空间中进行求解。

总结

支持向量机通过找到一个最佳的超平面来分类数据,在线性可分的情况下,通过最大化间隔来确定最佳的超平面。在非线性可分的情况下,通过引入软间隔和核技巧,使得SVM可以处理更复杂的数据集。最终的优化问题可以通过求解一个二次规划问题来完成。

更多问题咨询

Cos机器人