机器学习 - 支持向量机的推导

支持向量机(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 w⋅xi+b≥1
    • 对于属于负类的点: w ⋅ x i + b ≤ − 1 \mathbf{w} \cdot \mathbf{x}_i + b \leq -1 w⋅xi+b≤−1

    这两个约束可以统一为: y i ( w ⋅ x i + b ) ≥ 1 y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 yi(w⋅xi+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∣∣w∣∣2

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

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

非线性可分的情况

现实中,大多数数据集并不是线性可分的。为了处理这种情况,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(w⋅xi+b)≥1−ξi,并且 ξ i ≥ 0 \xi_i \geq 0 ξi≥0

    目标函数变为:

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∣∣w∣∣2+Ci=1∑nξ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)=xi⋅xj
    • 多项式核: 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): 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(−γ∣∣xi−xj∣∣2)

    使用核函数后,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 min21∑i,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 αi≥0,这里, α 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 xi⋅xj,使得优化问题能够在高维空间中进行求解。

总结

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

更多问题咨询

Cos机器人

相关推荐
沐怡旸1 小时前
【算法】【链表】328.奇偶链表--通俗讲解
算法·面试
小白狮ww1 小时前
LAMMPS 教程:移动原子演示
人工智能·深度学习·机器学习
掘金安东尼4 小时前
Amazon Lambda + API Gateway 实战,无服务器架构入门
算法·架构
码流之上5 小时前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
快手技术7 小时前
快手提出端到端生成式搜索框架 OneSearch,让搜索“一步到位”!
算法
CoovallyAIHub1 天前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP1 天前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo1 天前
半开区间和开区间的两个二分模版
算法
moonlifesudo1 天前
300:最长递增子序列
算法
CoovallyAIHub1 天前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉