← 返回目录

Chapter 11: 支持向量机

Support Vector Machine

📖 本章概要

支持向量机(SVM)是一种强大的监督学习算法,用于分类和回归问题。 SVM的核心思想是找到一个最优超平面,该超平面具有最大间隔, 即离最近的数据点(支持向量)的距离最大。本章介绍硬间隔、软间隔、核技巧等核心概念。

✦
11.1

支持向量机原理

皮划艇比喻、支持向量、间隔最大化

想象一片湖面左右散布着红色和蓝色礁石,游戏规则是:皮划艇以直线路径穿越水道, 保证船身恰好紧贴礁石。寻找一条路径,让该路径通过的皮划艇宽度最大。 这就是SVM的核心思想——间隔最大化。

💡 核心概念

• 支持向量:离决策边界最近的数据点,用黑圈标注
• 决策边界:分离两类数据的超平面,wᵀx + b = 0
• 间隔:两条虚线之间的宽度,间隔越大泛化能力越强
• 优化目标:最大化间隔宽度,同时正确分类所有数据
✦
11.2

硬间隔:处理线性可分

决策边界、支持向量、间隔宽度公式

硬间隔SVM用于处理线性可分数据。决策边界定义为 f(x) = wᵀx + b = 0, 其中w为法向量(梯度向量),b为截距。间隔宽度为 2/||w||。 硬间隔要求所有数据点都在间隔外,即 y(wᵀx + b) ≥ 1。

📐 关键公式

• 决策边界:wᵀx + b = 0
• 间隔边界:wᵀx + b = ±1
• 间隔宽度:2/||w||,其中||w|| = √(w₁² + w₂² + ... + wₐ²)
• 点到超平面距离:d = |wᵀx + b| / ||w||
• 支持向量条件:y(wᵀx + b) = 1
✦
11.3

构造优化问题

拉格朗日函数、对偶问题

SVM的优化目标是最大化间隔宽度,等价于最小化||w||²。 本节利用拉格朗日乘子法(method of Lagrange multipliers)构造并求解支持向量机优化问题。 完整推导涉及13个步骤(公式22-35),包括原始问题→拉格朗日函数→偏导→对偶问题→格拉姆矩阵→决策边界。

✦
11.4

支持向量机处理二分类问题

实例:20样本数据、决策边界推导、支持向量影响

本节利用具体实例介绍如何实现硬间隔支持向量机进行预测分类。 图10展示为20个样本数据,容易发现,它们可以被一条直线完美分开。 下面利用支持向量机进行预测分类。

✦
11.5

软间隔

松弛变量、惩罚因子、处理线性不可分

实践中,数据往往线性不可分。软间隔允许部分数据点侵入间隔, 甚至被误分类。引入松弛变量ξi和惩罚因子C, 平衡间隔最大化和误分类惩罚。

📊 软间隔公式

• 优化目标:minw,b,ξ ½||w||² + C·Σξi
• 约束条件:yi(wᵀxi + b) ≥ 1 - ξi, ξi ≥ 0
• 松弛变量:ξi = 0(正确分类),0 < ξi < 1(在间隔内),ξi ≥ 1(误分类)
• 惩罚因子:C大→接近硬间隔,C小→更宽松
✦
11.6

核技巧

升维映射、核函数、处理非线性问题

核技巧将数据映射到高维特征空间,使原本线性不可分的数据变得线性可分。 关键是:无需显式计算高维映射φ(x),只需计算核函数K(x, x') = ⟨φ(x), φ(x')⟩。

常用核函数
线性核(Linear Kernel)
K(x, x') = x · x'
• 相当于原始空间
• 适用于线性可分问题
• 计算效率最高
多项式核(Polynomial Kernel)
K(x, x') = (x · x' + c)ᵈ
• d为多项式阶数
• c为常数项
• 适用于曲线边界
RBF核(Radial Basis Function)
K(x, x') = exp(-γ||x - x'||²)
• 也称高斯核
• γ控制核宽度
• 最常用的核函数
Sigmoid核
K(x, x') = tanh(αx·x' + c)
• 类似神经网络激活函数
• α和c为参数
• 较少使用

🚀 核技巧优势

• 无需显式映射:只计算内积,避免高维计算
• 处理非线性:在高维空间中线性可分
• 灵活选择:根据问题选择合适的核函数
• 理论保证:Mercer定理保证核函数的有效性
🛠️ sklearn实现
# 导入SVM分类器
from sklearn.svm import SVC
# 创建SVM模型
svm_linear = SVC(kernel='linear', C=1.0)
svm_rbf = SVC(kernel='rbf', C=1.0, gamma='scale')
svm_poly = SVC(kernel='poly', degree=3, C=1.0)
# 训练模型
svm_linear.fit(X_train, y_train)
# 预测
y_pred = svm_linear.predict(X_test)
# 获取支持向量
support_vectors = svm_linear.support_vectors_
参数C
惩罚因子
C大→低容错(硬间隔)
C小→高容错(软间隔)
参数gamma
RBF核参数
gamma大→窄核
gamma小→宽核
参数degree
多项式核阶数
degree越大越复杂
通常取2-4

📋支持向量机核心要点

🎯 核心思想
• 找到最优超平面分离数据
• 最大化间隔宽度(2/||w||)
• 支持向量决定决策边界
• 泛化能力强,避免过拟合
📐 三种形式
• 硬间隔:线性可分数据
• 软间隔:线性不可分,引入松弛变量
• 核技巧:非线性问题,升维映射
• 灵活处理各种分类问题
🔢 优化问题
• 原始问题:min ½||w||²
• 对偶问题:涉及内积,便于核函数
• KKT条件:最优性条件
• 凸优化问题,全局最优解
🚀 优势与应用
• 高维空间有效
• 内存效率高(只需存储支持向量)
• 适用于文本分类、图像识别
• 理论基础扎实