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

支持向量机(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机器人

相关推荐
June`20 分钟前
专题三:穷举vs暴搜vs深搜vs回溯vs剪枝(全排列)决策树与递归实现详解
c++·算法·深度优先·剪枝
Alessio Micheli23 分钟前
基于几何布朗运动的股价预测模型构建与分析
线性代数·机器学习·概率论
vlln27 分钟前
适应性神经树:当深度学习遇上决策树的“生长法则”
人工智能·深度学习·算法·决策树·机器学习
奋斗者1号34 分钟前
机器学习之决策树与决策森林:机器学习中的强大工具
人工智能·决策树·机器学习
xiangzhihong81 小时前
LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
机器学习
小L爱科研1 小时前
4.7/Q1,GBD数据库最新文章解读
数据库·机器学习·数据分析·回归·健康医疗
冲帕Chompa1 小时前
图论part09dijkstra算法
算法·图论
·云扬·1 小时前
【PmHub后端篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现
redis·算法·lua
周Echo周1 小时前
20、map和set、unordered_map、un_ordered_set的复现
c语言·开发语言·数据结构·c++·算法·leetcode·list
zkmall2 小时前
推荐算法工程化:ZKmall模板商城的B2C 商城的用户分层推荐策略
算法·机器学习·推荐算法