模式识别与机器学习-SVM(带软间隔的支持向量机)

SVM(带软间隔的支持向量机)

谨以此博客作为复习期间的记录。

软间隔思想的由来

在上一篇博客中,回顾了线性可分的支持向量机,但在实际情况中,很少有完全线性可分的情况,大部分线性可分的情况都是整体线性可分,个别样本点无法线性分割开。因此就要避免这极个别样本点对分割平面产生的影响。
线性可分支持向量机

软间隔的引入

在分类过程中,允许极个别数据点"越界",如何在目标函数中体现这一点呢?

软间隔支持向量机(Soft Margin Support Vector Machine)的数学形式可以通过修改支持向量机(SVM)的优化目标函数和约束条件来实现。软间隔允许一些数据点越界,引入了松弛变量来处理这些点。

首先,我们考虑软间隔的目标函数和约束条件:

  1. 目标函数:

    最小化目标函数,同时考虑间隔的最大化和误分类点的惩罚,即:
    min ⁡ w , b , ξ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i \min_{\mathbf{w}, b, \boldsymbol{\xi}} \frac{1}{2}\|\mathbf{w}\|^2 + C \sum_{i=1}^{N} \xi_i w,b,ξmin21∥w∥2+Ci=1∑Nξi

    这里 w \mathbf{w} w 是超平面的法向量, b b b 是截距, ξ \boldsymbol{\xi} ξ 是松弛变量, C > 0 C > 0 C>0 是一个超参数,用于控制对误分类点的惩罚程度。

  2. 约束条件:

    考虑函数间隔大于等于 1 的约束条件,以及松弛变量 ξ \boldsymbol{\xi} ξ 的非负性约束:
    y i ( w ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , ... , N ξ i ≥ 0 , i = 1 , 2 , ... , N \begin{align*} & y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 - \xi_i, \quad i = 1, 2, \dots, N \\ & \xi_i \geq 0, \quad i = 1, 2, \dots, N \end{align*} yi(w⋅xi+b)≥1−ξi,i=1,2,...,Nξi≥0,i=1,2,...,N

线性支持向量机学习算法

输入: 训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left\{\left(x_1, y_1\right),\left(x_2, y_2\right), \cdots,\left(x_N, y_N\right)\right\} T={(x1,y1),(x2,y2),⋯,(xN,yN)}, 其中, x i ∈ X = R n , y i ∈ x_i \in \mathcal{X}=\mathbf{R}^n, y_i \in xi∈X=Rn,yi∈ Y = { − 1 , + 1 } , i = 1 , 2 , ⋯   , N \mathcal{Y}=\{-1,+1\}, \quad i=1,2, \cdots, N Y={−1,+1},i=1,2,⋯,N;

输出: 分离超平面和分类决策函数.

(1) 选择惩罚参数 C > 0 C>0 C>0, 构造并求解凸二次规划问题
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s.t. ∑ i = 1 N α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N \begin{aligned} \min \alpha & \frac{1}{2} \sum{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j\left(x_i \cdot x_j\right)-\sum_{i=1}^N \alpha_i \\ \text { s.t. } & \sum_{i=1}^N \alpha_i y_i=0 \\ & 0 \leqslant \alpha_i \leqslant C, \quad i=1,2, \cdots, N \end{aligned} αmin s.t. 21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαii=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N

求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T \alpha^*=\left(\alpha_1{ }^*, \alpha_2{ }^*, \cdots, \alpha_N{ }^*\right)^{\mathrm{T}} α∗=(α1∗,α2∗,⋯,αN∗)T.

(2) 计算 w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^N \alpha_i^* y_i x_i w∗=∑i=1Nαi∗yixi

选择 α ∗ \alpha^* α∗ 的一个分量 α j ∗ \alpha_j{ }^* αj∗ 适合条件 0 < α j ∗ < C 0<\alpha_j^*<C 0<αj∗<C, 计算
b ∗ = y j − ∑ i = 1 N y i α i ∗ ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^N y_i \alpha_i^*\left(x_i \cdot x_j\right) b∗=yj−i=1∑Nyiαi∗(xi⋅xj)

(3) 求得分离超平面
w ∗ ⋅ x + b ∗ = 0 w^* \cdot x+b^*=0 w∗⋅x+b∗=0

分类决策函数:
f ( x ) = sign ⁡ ( w ∗ ⋅ x + b ∗ ) f(x)=\operatorname{sign}\left(w^* \cdot x+b^*\right) f(x)=sign(w∗⋅x+b∗)

相关推荐
南宫萧幕16 小时前
MATLAB/Simulink 从零打通:HEV 能量管理 GA 联合仿真保姆级建模指南
开发语言·算法·matlab·汽车·控制·pid
小雅痞17 小时前
[Java][Leetcode middle] 15. 三数之和
java·算法·leetcode
图码17 小时前
矩阵数据结构入门指南:声明、初始化与基本操作
运维·数据结构·线性代数·算法·矩阵
Navigator_Z17 小时前
LeetCode //C - 1030. Matrix Cells in Distance Order
c语言·算法·leetcode
无敌昊哥战神17 小时前
【回溯算法巅峰之作】LeetCode 51. N皇后问题详解与常见避坑指南 (C/C++/Python)
c语言·算法·leetcode
mftang17 小时前
BSS段、Data段、Text段的具体含义和数据特性
数据库·算法
王老师青少年编程17 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【反悔贪心】:建筑抢修
c++·算法·贪心·反悔贪心·csp·信奥赛·建筑抢修
TianFuRuanJian17 小时前
科普 | 仿真中的“体力活”:网格验证能不能自动化?
算法·仿真·ai网格
Mr数据杨17 小时前
花卉图像分类在植物识别与生态监测中的应用
人工智能·机器学习·分类·数据挖掘·数据分析·kaggle
leoufung17 小时前
LeetCode 135. Candy:从直觉到最优解的完整推导
算法·leetcode·职场和发展