支持向量机(一)线性可分支持向量机
支持向量机(二)线性支持向量机
支持向量机(三)非线性支持向量机与核函数
支持向量机(四)SMO算法
本文介绍SVM用于二元分类。
SVM学习策略:间隔最大化,可形式化为一个求解凸二次规划问题。(间隔最大化使它有别于感知机。)
支持向量机模型包括:线性可分支持向量机、线性支持向量机、非线性支持向量机。
当训练集线性可分,通过硬间隔最大化学习的线性分类器为线性可分支持向量机,又称硬间隔支持向量机;
当训练集近似线性可分,通过软间隔最大化学习的线性分类器为线性支持向量机,又称软间隔支持向量机;
当训练集线性不可分,通过核技巧及软间隔最大化学习的非线性分类器称为非线性支持向量机。
一、线性可分支持向量机
图 7.1 中“○”表示正例,“x”表示负例。图中直线将两类数据正确划分,并间隔最大化。

在线性可分的训练集中,通过间隔最大化或等价求解相应的凸二次规划问题得到的分离超平面为:
w∗x+b∗ = 0
分类决策函数:
f(x) = sign(w∗⋅ x + b∗)
称为线性可分支持向量机。
二、函数间隔、几何间隔
图 7.1 中,A,B,C三点,点 A 距超平面较远,若该点预测为正类,比较确信预测是正确的;点 C 距离超平面较近,预测为正类不那么确信,点 B 确信度在点 A、C 之间。所以一个点距离超平面的远近可以表示预测的确信程度。
|wx+b| 能相对的表示点 x 距离超平面的远近,wx+b 的符号与 y 是否一致表示分类是否正确。所以 y(wx+b) 表示分类的正确性和确信度,这就是函数间隔(不要将函数间隔、集合间隔与点到直线的距离混淆)。
1.函数间隔
训练集 T 和超平面 (w,b),则样本点 (xi,yi) 到超平面 (w,b) 的函数间隔(与点到直线的距离有区别)为:
^γi = yi(w⋅ x + b)
函数间隔的最小值:
^γ=mini=1,⋯,N^γi(1)
成比例的改变 w 和 b,比如 2w 和 2b,超平面没改变,函数间隔变为原来 2 倍。
对超平面的法向量 w 加以约束,函数间隔成几何间隔。
2.集合间隔
训练集 T 和超平面 (w,b),则样本点 (xi,yi) 到超平面 (w,b) 的几何间隔为:
γi=yi(w∥w∥⋅xi+b∥w∥)(2)
几何间隔最小值:
γ=mini=1,⋯,Nγi(3)
函数间隔与几何间隔的关系:
γi=^γi∥w∥(4)
γ=^γ∥w∥(5)
三、间隔最大化
1.最大间隔分离超平面
使训练集线性可分,分离超平面有无数多个(等价于感知机);使间隔最大的分离超平面唯一。
最大间隔分离超平面可以表示为下面的最优化问题:
maxω, b γ(6)
s.t. yi(w∥w∥⋅xi+b∥w∥)⩾γ,i=1,2,⋯,N(7)
即最大化超平面的几何间隔 γ,
约束条件:训练集的每个点的几何间隔至少是 γ。
根据函数间隔与几何间隔的关系:
maxω, b ^γ∥ω∥(8)
s.t. yi(ω⋅ xi+b)⩾^γ,i=1,2,⋯,N(9)
函数间隔 ^γ 的取值不影响最优化问题的解。(w、b 按比例变为 λw、λb,此时函数间隔 λ^γ。这个改变对不等式没影响,对目标函数的优化也没影响。)
取 ^γ=1 代入,并且最大化 1||w|| 等价最小化 12||w||2。所以线性可分支持向量机的最优化问题(原始问题):
minω, b 12∥ω∥2(10)
s.t. yi(ω ⋅ xi+b)⩾1,i=1,2,⋯,N(11)
这是凸二次规划问题。
2.支持向量、间隔边界
H1、H2上的点是支持向量。H1、H2 称为间隔边界。

在决定分离超平面时只有支持向量起作用。其他点不起作用。所以将此分类模型称为支持向量机。
实例:正例点 x1=(3,3)T,x2=(4,3)T,负例点 x3=(1,1)T,求最大间隔分离超平面。

解:根据训练集构造约束最优化问题:
minω, b 12(ω21+ω22)
s.t. 3ω1+3ω2+b⩾1
4ω1+3ω2+b⩾1
−ω1−ω2−b⩾1
求得:w1=w2=12,b=−2。则最大间隔分离超平面为
12x(1)+12x(2)−2=0
其中,x1=(3,3)T 与 x3=(1,1)T 为支持向量。
四、对偶算法
将线性可分支持向量机的最优化问题 (10)∼(11) 作为原始问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。
优点:一是对偶问题更容易求解;二是引入核函数,进而推广到非线性分类问题。
对每一个不等式约束(11) 引用拉格朗日乘子 αi≥0, i=1,2,...,N,构建拉格朗日函数:(因为约束条件 yi(ω ⋅ xi+b)−1≥0,所以在构造时用减法)
L(w,b,α)=12||w||2−N∑i=1αiyi(ω∙ xi+b)+N∑i=1αi(12)
其中,(α1,α2,...αN)T 为拉格朗日乘子向量。
则原始问题:
minω, b maxα L(ω,b,α)
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
maxα minω, b L(ω,b,α)
即先求 L(ω,b,α) 对 ω、b 的极小值,再求对 α 的极大值。
(1)求 minα, b L(ω,b,α)
将拉格朗日函数 L(ω,b,α) 分别对ω,b 求偏导并令其等于0。
∇wL(w,b,α)=w−N∑i=1αiyixi=0∇bL(w,b,α)=−N∑i=1αiyi=0
得
w=N∑i=1αiyixi(13)
N∑i=1αiyi=0(14)
将式 (13) 代入拉格朗日函数 (12), 并利用式 (14), 即得
L(w,b,α)=12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)−N∑i=1αiyi((N∑j=1αjyjxj)⋅xi+b)+N∑i=1αi=−12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)+N∑i=1αi
即
minw,bL(w,b,α)=−12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)+N∑i=1αi
(2)求 minw,bL(w,b,α) 对 α 的极大, 即是对偶问题
maxα −12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)+N∑i=1αi s.t. N∑i=1αiyi=0αi⩾0,i=1,2,⋯,N(15)
将式 (15) 的目标函数由求极大转换成求极小, 就得到下面与之等价的对偶最优化问题:
minα 12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)−N∑i=1αis.t. N∑i=1αiyi=0αi⩾0,i=1,2,⋯,N(16)(17)(18)
考虑原始最优化问题 (10)~(11) 和对偶最优化问题 (16)~(18),原始问题满足定理2的条件,所以存在 ω∗,α∗,β∗,使 ω∗ 是原始问题的解,α∗,β∗ 是对偶问题的解。这意味原始问题可以转换为对偶问题。
对线性可分训练集,假设对偶最优化问题 (16)~(18) 对 α 的解为 α∗=(α∗1,α∗2,...,α∗N)T,可以由 α∗ 求得原始最优化问题 (10)~(11) 对 (ω,b) 的解 ω∗,b∗。
定理 : 设 α∗=(α∗1,α∗2,...,α∗N)T 是对偶问题的解,则存在下标 j,使得 α∗j>0,按下式求原始问题的解 ω∗,b∗:
ω∗=N∑i=1α∗iyixib∗=yj−N∑i=1yiα∗i(xi⋅xj)(19)(20)
1.线性可分支持向量机对偶算法
输入:训练集 T=(x1,y1),(x2,y2),...,(xN,yN),其中 yi∈(−1,1)
输出:分离超平面、分类决策树
① 构造约束最优化问题
minα 12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)−N∑i=1αis.t. N∑i=1αiyi=0αi≥0, i=1,2,...,N
求得最优解 α∗=(α∗1,α∗2,...,α∗N)T。
② 计算
ω∗=N∑i=1α∗iyixi
并选择 α∗ 的一个正分量 α∗j>0, 计算
b∗=yj−N∑i=1α∗iyi(xi⋅xj)
③ 求得分离超平面
ω∗⋅x+b∗=0
分类决策函数:
f(x)=sign(ω∗⋅ x+b∗)
在线性可分支持向量机中,由式 (19)、(20) 可知,ω∗、b∗ 只依赖训练集中 α∗i>0 的样本点 (xi,yi),其他样本点对 ω∗、b∗ 没影响。将训练集中 α∗i>0 的样本点 (xi,yi) 称为支持向量。
实例 2:数据与实例 1 相同,正例点 x1=(3,3)T,x2=(4,3)T,负例点 x3=(1,1)T,用对偶算法求线性可分支持向量机。
解:根据数据,y1=1,y2=1,y3=−1。
对偶问题是:
minα 12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)−N∑i=1αi=12N∑i=1αiyixi×N∑j=1αjyjxj−N∑i=1αi=12⎛⎜
⎜
⎜
⎜
⎜
⎜
⎜
⎜⎝(3,3)(33)α21+(3,3)(43)α1α2−(3,3)(11)α1α3+(4,3)(33)α1α2+(4,3)(43)α22−(4,3)(11)α2α3−(1,1)(33)α1α3−(1,1)(43)α2α3+(1,1)(11)α23⎞⎟
⎟
⎟
⎟
⎟
⎟
⎟
⎟⎠−N∑i=1αi=12(18α21+25α22+2α23+42α1α2−12α1α3−14α2α3)−α1−α2−α3s.t. α1+α2−α3=0αi≥0, i=1,2,3
将 α3=α1+α2 带入目标函数
s(α1,α2)=4α21+132α22+10α1α2−2α1−2α2
对 α1,α2 求偏导并令其为 0,易知 s(α1,α2) 在点 (32,−1)T 取极值,但该点不满足约束条件 α2≥0,所以最小值应该在边界上。
当 α1=0 时,最小值 s(0,213)=−213;
当 α2=0 时,最小值 s(14,0)=−14。
于是 s(α1,α2) 在 α1=14,α2=0 达到最小,此时 α3=α1+α2=14。
这样,α∗1=α∗3=14 对应的实例点 x1,x3 是支持向量。根据式 (19)、(20) 得
ω∗=N∑i=1α∗iyixi=14(3,3)T−14(1,1)T=(12,12)T
选择 α∗ 的一个正分量 α∗j=α∗1=14,计算 b∗
b∗=yj−N∑i=1α∗iyi(xi⋅xj)=1−[14(3,3)(33)−14(1,1)(33)]=−2
分离超平面
12x(1)+12x(2)−2=0
分类决策函数
f(x)=sign(12x(1)+12x(2)−2)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)