svm支持向量机

支持向量机(SVM)

1. SVM 的核心思想

支持向量机(Support Vector Machine, SVM)是一种监督学习算法,用于分类和回归任务。其目标是找到一个超平面,将数据点分为不同类别,同时 最大化分类间隔(margin)

对于线性可分数据,SVM 构造一个间隔最大的超平面;对于线性不可分数据,通过 核函数(Kernel Function) 将数据映射到高维特征空间,在高维空间中寻找分类超平面。


2. 线性 SVM 的公式推导

2.1 超平面定义

给定训练数据集:
{ ( x 1 , y 1 ) , ( x 2 , y 2 ) , ... , ( x n , y n ) } \{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\} {(x1,y1),(x2,y2),...,(xn,yn)}

其中:

  • x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd:表示输入特征向量;
  • y i ∈ { − 1 , + 1 } y_i \in \{-1, +1\} yi∈{−1,+1}:表示对应的标签。

假设超平面方程为:
w ⋅ x + b = 0 w \cdot x + b = 0 w⋅x+b=0

其中:

  • (w) 为法向量,决定超平面的方向;
  • (b) 为偏置,决定超平面的位置。

2.2 分类间隔

分类间隔 (M) 定义为:
M = 2 ∥ w ∥ M = \frac{2}{\|w\|} M=∥w∥2

为了最大化间隔,等价于最小化 (|w|^2)。同时,为了正确分类,需要满足:
y i ( w ⋅ x i + b ) ≥ 1 , ∀ i y_i(w \cdot x_i + b) \geq 1, \quad \forall i yi(w⋅xi+b)≥1,∀i

2.3 优化目标

优化问题可以表示为:
min ⁡ w , b 1 2 ∥ w ∥ 2 \min_{w, b} \frac{1}{2} \|w\|^2 w,bmin21∥w∥2

约束条件为:
y i ( w ⋅ x i + b ) ≥ 1 , ∀ i y_i(w \cdot x_i + b) \geq 1, \quad \forall i yi(w⋅xi+b)≥1,∀i


3. 对偶问题推导

引入拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi≥0,构造拉格朗日函数:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 n α i [ y i ( w ⋅ x i + b ) − 1 ] L(w, b, \alpha) = \frac{1}{2} \|w\|^2 - \sum_{i=1}^n \alpha_i \big[y_i(w \cdot x_i + b) - 1\big] L(w,b,α)=21∥w∥2−i=1∑nαi[yi(w⋅xi+b)−1]

对 (w) 和 (b) 求导并令导数为 0,可得:
w = ∑ i = 1 n α i y i x i w = \sum_{i=1}^n \alpha_i y_i x_i w=i=1∑nαiyixi
∑ i = 1 n α i y i = 0 \sum_{i=1}^n \alpha_i y_i = 0 i=1∑nαiyi=0

将 (w) 和 (b) 的表达式代入拉格朗日函数,得到对偶形式:
max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ( x i ⋅ x j ) \max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j (x_i \cdot x_j) αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyj(xi⋅xj)

约束条件为:
∑ i = 1 n α i y i = 0 , α i ≥ 0 \sum_{i=1}^n \alpha_i y_i = 0, \quad \alpha_i \geq 0 i=1∑nαiyi=0,αi≥0

最终,分类决策函数为:
f ( x ) = sign ( ∑ i = 1 n α i y i ( x ⋅ x i ) + b ) f(x) = \text{sign}\left(\sum_{i=1}^n \alpha_i y_i (x \cdot x_i) + b\right) f(x)=sign(i=1∑nαiyi(x⋅xi)+b)


4. 核函数与非线性 SVM

对于线性不可分数据,SVM 通过核函数 κ ( x i , x j ) \kappa(x_i, x_j) κ(xi,xj) 将数据映射到高维特征空间。常用核函数包括:

  1. 线性核
    κ ( x i , x j ) = x i ⋅ x j \kappa(x_i, x_j) = x_i \cdot x_j κ(xi,xj)=xi⋅xj

  2. 多项式核
    κ ( x i , x j ) = ( x i ⋅ x j + c ) d \kappa(x_i, x_j) = (x_i \cdot x_j + c)^d κ(xi,xj)=(xi⋅xj+c)d

  3. 高斯核(RBF 核)
    κ ( x i , x j ) = exp ⁡ ( − ∥ x i − x j ∥ 2 2 σ 2 ) \kappa(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) κ(xi,xj)=exp(−2σ2∥xi−xj∥2)

非线性问题的对偶形式为:
max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j κ ( x i , x j ) \max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j \kappa(x_i, x_j) αmaxi=1∑nαi−21i=1∑nj=1∑nαiαjyiyjκ(xi,xj)


5. 软间隔 SVM

对于线性不可分数据,可以引入松弛变量 ξ i \xi_i ξi 和惩罚参数 C C C,优化目标为:
min ⁡ w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 n ξ i \min_{w, b, \xi} \frac{1}{2} \|w\|^2 + C \sum_{i=1}^n \xi_i w,b,ξmin21∥w∥2+Ci=1∑nξi

约束条件为:
y i ( w ⋅ x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 y_i(w \cdot x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0 yi(w⋅xi+b)≥1−ξi,ξi≥0


6. 总结

SVM 的核心特点:

  1. 能有效处理高维数据;
  2. 通过核函数扩展到非线性问题;
  3. 在小样本数据集上表现出色。

但对于大规模数据集,其计算复杂度较高。

相关推荐
jndingxin1 小时前
OpenCV CUDA模块光流计算-----实现Farneback光流算法的类cv::cuda::FarnebackOpticalFlow
人工智能·opencv·算法
编程绿豆侠1 小时前
力扣HOT100之栈:394. 字符串解码
java·算法·leetcode
朝朝又沐沐1 小时前
基于算法竞赛的c++编程(18)string类细节问题
开发语言·c++·算法
大笨象、小笨熊2 小时前
机器学习简介
人工智能·机器学习
爱coding的橙子2 小时前
每日算法刷题Day27 6.9:leetcode二分答案2道题,用时1h20min
算法·leetcode·职场和发展
GalaxyPokemon2 小时前
LeetCode - 3. 无重复字符的最长子串
算法·哈希算法·散列表
a.3022 小时前
C++ 时间处理指南:深入剖析<ctime>库
数据结构·c++·算法
亮亮爱刷题3 小时前
算法刷题-回溯
算法
聚客AI3 小时前
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
人工智能·pytorch·python·rnn·神经网络·机器学习·自然语言处理
Neil今天也要学习3 小时前
永磁同步电机无速度算法--自适应龙贝格观测器
算法