【机器学习基础】机器学习入门核心算法:支持向量机(SVM)

机器学习入门核心算法:支持向量机(SVM)

一、算法逻辑

1.1 基本概念

支持向量机(Support Vector Machine, SVM)是一种监督学习算法 ,核心目标是寻找一个最优超平面,最大化不同类别数据间的分类间隔(Margin)。其核心特性包括:

  • 间隔最大化:通过几何间隔最大化提高泛化能力
  • 核技巧:隐式映射到高维空间处理非线性问题
  • 稀疏性:仅依赖支持向量决定模型

适用场景

  • 小样本、高维数据
  • 非线性可分问题
  • 对模型解释性要求不高的场景

1.2 核心思想

线性可分情况

设训练集 D = { ( x i , y i ) } i = 1 m , y i ∈ { − 1 , + 1 } D = \{(\boldsymbol{x}i, y_i)\}{i=1}^m, \quad y_i \in \{-1, +1\} D={(xi,yi)}i=1m,yi∈{−1,+1}

目标超平面方程:
w T x + b = 0 \boldsymbol{w}^T\boldsymbol{x} + b = 0 wTx+b=0

分类决策函数:
f ( x ) = sign ( w T x + b ) f(\boldsymbol{x}) = \text{sign}(\boldsymbol{w}^T\boldsymbol{x} + b) f(x)=sign(wTx+b)

几何间隔 定义:
γ = y i ( w T x i + b ) ∥ w ∥ \gamma = \frac{y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b)}{\|\boldsymbol{w}\|} γ=∥w∥yi(wTxi+b)

二、算法原理与数学推导

2.1 原始优化问题

最大化间隔等价于最小化权值范数
min ⁡ w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \begin{aligned} \min_{\boldsymbol{w},b} & \quad \frac{1}{2}\|\boldsymbol{w}\|^2 \\ \text{s.t.} & \quad y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) \geq 1, \quad i=1,2,...,m \end{aligned} w,bmins.t.21∥w∥2yi(wTxi+b)≥1,i=1,2,...,m

2.2 拉格朗日对偶

引入拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi≥0
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 m α i [ y i ( w T x i + b ) − 1 ] L(\boldsymbol{w},b,\boldsymbol{\alpha}) = \frac{1}{2}\|\boldsymbol{w}\|^2 - \sum_{i=1}^m \alpha_i[y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) - 1] L(w,b,α)=21∥w∥2−i=1∑mαi[yi(wTxi+b)−1]

KKT条件
{ α i ≥ 0 y i ( w T x i + b ) − 1 ≥ 0 α i [ y i ( w T x i + b ) − 1 ] = 0 \begin{cases} \alpha_i \geq 0 \\ y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) - 1 \geq 0 \\ \alpha_i[y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) - 1] = 0 \end{cases} ⎩ ⎨ ⎧αi≥0yi(wTxi+b)−1≥0αi[yi(wTxi+b)−1]=0

2.3 对偶问题

转化为对偶形式:
max ⁡ α ∑ 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 = 1 m α i y i = 0 , α i ≥ 0 \begin{aligned} \max_{\boldsymbol{\alpha}} & \quad \sum_{i=1}^m \alpha_i - \frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m \alpha_i\alpha_j y_i y_j \boldsymbol{x}_i^T\boldsymbol{x}j \\ \text{s.t.} & \quad \sum{i=1}^m \alpha_i y_i = 0, \quad \alpha_i \geq 0 \end{aligned} αmaxs.t.i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxji=1∑mαiyi=0,αi≥0

支持向量 :对应 α i > 0 \alpha_i > 0 αi>0的样本点

2.4 核函数技巧

非线性映射

设 ϕ ( x ) \phi(\boldsymbol{x}) ϕ(x)为映射函数,核函数定义为:
κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa(\boldsymbol{x}_i, \boldsymbol{x}_j) = \phi(\boldsymbol{x}_i)^T\phi(\boldsymbol{x}_j) κ(xi,xj)=ϕ(xi)Tϕ(xj)

常用核函数

核函数类型 表达式 特点
线性核 x i T x j \boldsymbol{x}_i^T\boldsymbol{x}_j xiTxj 无映射,处理线性可分
多项式核 ( γ x i T x j + r ) d (\gamma\boldsymbol{x}_i^T\boldsymbol{x}_j + r)^d (γxiTxj+r)d 可调阶数d
RBF核(高斯核) exp ⁡ ( − γ ∣ x i − x j ∣ 2 ) \exp(-\gamma|\boldsymbol{x}_i - \boldsymbol{x}_j|^2) exp(−γ∣xi−xj∣2) 应用最广泛

2.5 软间隔与松弛变量

引入松弛变量 处理噪声数据:
min ⁡ w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i s.t. y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 \begin{aligned} \min_{\boldsymbol{w},b,\xi} & \quad \frac{1}{2}\|\boldsymbol{w}\|^2 + C\sum_{i=1}^m \xi_i \\ \text{s.t.} & \quad y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0 \end{aligned} w,b,ξmins.t.21∥w∥2+Ci=1∑mξiyi(wTxi+b)≥1−ξi,ξi≥0

惩罚系数C的作用

  • C→∞:严格硬间隔
  • C→0:允许更大分类错误

三、模型评估

3.1 评估指标

指标 计算公式 适用场景
准确率 T P + T N T P + T N + F P + F N \frac{TP+TN}{TP+TN+FP+FN} TP+TN+FP+FNTP+TN 类别平衡时
ROC AUC 曲线下面积 综合性能评估
铰链损失 max ⁡ ( 0 , 1 − y i ( w T x i + b ) ) \max(0, 1 - y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b)) max(0,1−yi(wTxi+b)) 直接反映SVM优化目标

3.2 交叉验证调参

网格搜索示例

python 复制代码
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV

params = {
    'C': [0.1, 1, 10],
    'gamma': ['scale', 'auto'],
    'kernel': ['rbf', 'poly']
}
grid = GridSearchCV(SVC(), params, cv=5)
grid.fit(X_train, y_train)

四、应用案例

4.1 手写数字识别

数据集 :MNIST(60,000张28x28灰度图)
特征处理

  • 标准化像素值到[0,1]
  • PCA降维保留95%方差

模型配置

python 复制代码
svm = SVC(kernel='rbf', C=10, gamma=0.001)
svm.fit(X_train_pca, y_train)

性能结果

  • 测试集准确率:98.2%
  • 推理速度:120样本/秒

4.2 金融欺诈检测

业务场景 :信用卡交易异常检测
特征工程

  • 交易金额标准化
  • 时间窗口统计特征
  • 用户行为序列建模

模型优化

  • 类别不平衡处理:class_weight='balanced'
  • 使用RBF核捕捉非线性模式

产出效果

  • 欺诈交易召回率:89%
  • 误报率:0.3%

五、经典面试题

问题1:SVM为什么采用间隔最大化?

关键点解析

  1. 结构风险最小化:最大化间隔等价于最小化VC维,提升泛化能力
  2. 稀疏解性质:仅依赖支持向量,抗噪声能力强
  3. 几何解释:最大间隔划分对未见数据最鲁棒

问题2:核函数的作用是什么?

核心理解

  1. 隐式映射 :无需显式计算 ϕ ( x ) \phi(\boldsymbol{x}) ϕ(x),避免维度灾难
  2. 非线性扩展:在低维空间计算等价于高维空间的内积
  3. 灵活性:通过选择不同核函数适应数据结构

问题3:SVM如何处理多分类问题?

常见方案

  1. One-vs-One :构建 k ( k − 1 ) 2 \frac{k(k-1)}{2} 2k(k−1)个二分类器
  2. One-vs-Rest:每个类与剩余类训练一个分类器
  3. DAGSVM:有向无环图组织分类器

对比分析

方法 计算复杂度 训练时间 存储需求
One-vs-One O(k²)
One-vs-Rest O(k)

六、高级优化技术

6.1 增量学习

处理大规模数据策略

  1. 分块训练:将数据分为多个子集逐块训练
  2. 保留支持向量:每次迭代仅保留当前支持向量
  3. 热启动:用已有解初始化新模型

6.2 多核学习

组合多个核函数
κ ( x i , x j ) = ∑ k = 1 K β k κ k ( x i , x j ) \kappa(\boldsymbol{x}_i, \boldsymbol{x}j) = \sum{k=1}^K \beta_k \kappa_k(\boldsymbol{x}_i, \boldsymbol{x}_j) κ(xi,xj)=k=1∑Kβkκk(xi,xj)

其中 β k ≥ 0 \beta_k \geq 0 βk≥0为核权重系数

七、最佳实践指南

7.1 参数调优建议

参数 典型取值范围 作用说明
C 10⁻³ ~ 10³ 控制间隔与误差的权衡
gamma 10⁻⁵ ~ 1 RBF核带宽,影响模型复杂度
epsilon 0.01 ~ 0.1 控制支持向量回归的容忍度

7.2 特征预处理要点

  • 标准化:对线性核和RBF核必须执行
  • 特征选择:使用RFECV进行递归特征消除
  • 缺失值处理:SVM不支持缺失值,需提前填充

总结与展望

支持向量机凭借其坚实的数学基础和优秀的泛化性能,在模式识别、数据挖掘等领域持续发挥重要作用。未来发展方向包括:

  1. 大规模优化算法:提升超大数据集训练效率
  2. 深度核学习:结合深度神经网络学习核函数
  3. 异构计算加速:利用GPU/TPU加速核矩阵计算
相关推荐
苏苏susuus26 分钟前
机器学习:线性回归、损失函数、导数、偏导
人工智能·机器学习·线性回归
啥都想学的又啥都不会的研究生34 分钟前
常规算法学习
java·数据结构·b树·学习·算法·排序算法
ChanYanny35 分钟前
deepseek-r1的1.5b、7b、8b、14b、32b、70b和671b有啥区别?
机器学习·基础知识
I AM_SUN1 小时前
153. 寻找旋转排序数组中的最小值
数据结构·c++·算法·leetcode·二分法
小白菜又菜2 小时前
Leetcode 2942. Find Words Containing Character
算法·leetcode·职场和发展
数据与人工智能律师7 小时前
加密货币投资亏损后,能否以“欺诈”或“不当销售”索赔?
大数据·网络·算法·云计算·区块链
努力学习的小廉8 小时前
我爱学算法之—— 二分查找(下)
算法
AdSet聚合广告8 小时前
APP广告变现,开发者如何判断对接的广告SDK安全合规?
大数据·后端·算法·安全·uni-app
不二狗8 小时前
每日算法 -【Swift 算法】实现回文数判断!
开发语言·算法·swift