包含对三种支持向量机的介绍,包括线性可分支持向量机,线性支持向量机和非线性支持向量机,包含核函数和一种快速学习算法-序列最小最优化算法SMO。
非线性支持向量机与核函数
核技巧
非线性分类问题
给定一个训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi属于输入空间,xi∈X=Rn,yi∈Y={−1,+1},i=1,2,⋯,N,如果可以用Rn中的一个超曲面将正负例正确分开,则称这个问题为非线性可分问题
用线性分类方法求解非线性问题分为两步,首先使用一个变换将原空间的数据映射到新空间,然后在新空间里用线性分类方法从训练数据中学习分类模型,基本想法就是通过一个非线性变换将输入空间对应于一个特征空间
核函数的定义
设X是输入空间(欧式空间Rn的子集或离散集合),又设H为特征空间(希尔伯特空间),如果存在一个从X到H的映射:
ϕ(x):X→H
使得对所有x,z∈X,函数K(x,z)满足条件:
K(x,z)=ϕ(x)⋅ϕ(z)
则称K(x,z)为核函数,ϕ(x)为隐射函数,式中ϕ(x)⋅ϕ(z)是两者的内积,核技巧的想法是,在学习与预测中只定义核函数K(x,z),而不显示地定义隐射函数ϕ,可以看到,对于给定的核K(x,z),特征空间H和隐射函数ϕ的取法并不唯一,可以取不同的特征空间,即便是在同一特征空间里也可以取不同的映射
核技巧在支持向量机中的应用
在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及输入实例与实例之间的内积
12N∑i=1N∑j=1αiαjyiyj(xi⋅xj)−N∑i=1αi
在对偶问题的目标函数中的内积xi⋅xj可以用核函数K(x,z)=ϕ(x)⋅ϕ(z)来代替,此时对偶问题的目标函数为:
W(α)=12N∑i=1N∑j=1αiαjyiyjK(xi,xj)−N∑i=1αi
同样,分类决策中的内积也可以用核函数代替:
f(x)=sign(Ns∑i=1α∗iyiK(xi,x)+b∗)
这等价于经过映射函数ϕ将原来的输入空间变换到一个新的特征空间,将输入空间的内积xi⋅xj变换为特征空间中的内积ϕ(xi)⋅ϕ(xj)
正定核
目的:函数K(x,z)成为核函数的条件
正定核的充要条件
设K:X×X→R是对称函数,则K(x,z)为正定核的充要条件是对任意xi∈X,i=1,2,⋯,m,K(x,z)对应的Gram矩阵:
K=[K(xi,xj)]m×m
是半正定矩阵
正定核的等价定义
设X⊂Rn,K(x,z)是定义在X×X上的对称函数,如果对任意的x1,x2,⋯,xm∈X,K(x,z)关于x1,x2,⋯,xm的Gram矩阵K=[K(xi,xj)]m×m是半正定矩阵,则称K(x,z)是正定核。
常用核函数
多项式核函数polynomial kernel function
此时对应的支持向量机是一个p次多项式分类器
K(x,z)=(x⋅z+1)p
高斯核函数gaussain kernel function
此时对应的支持向量机是高斯径向基函数分类器
K(x,z)=exp(−||x−z||22σ2)
非线性支持向量分类机
非线性支持向量机学习算法
输入:训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈X=Rn,yi∈Y={+1,−1},i=1,2,⋯,N
输出:分类决策函数
- 选择适当的核函数K(x,z)和惩罚参数C>0,构造并求解约束最优化问题求得最优解α∗=(α∗1,α∗2,⋯,α∗N)T
minα 12N∑i=1N∑j=1αiαjyiyjK(xi,xj)−N∑i=1αis.t. N∑i=1αiyi=00≤αi≤C,i=1,2,⋯,N
- 选择α∗的一个分量0<α∗j<C,计算:
b∗=yj−N∑i=1α∗iyiK(xi,xj)
f(x)=sign(N∑i=1α∗iyiK(x,xi)+b∗)
序列最小最优化算法(SMO算法)
sequential minimal optimization
目的:当训练样本容量很大的时候,快速实现支持向量机学习
SMO算法要解的问题如下:
minα 12N∑i=1N∑j=1αiαjyiyjK(xi,xj)−N∑i=1αis.t. N∑i=1αiyi=00≤αi≤C,i=1,2,⋯,N
变量是αi,算法是一种启发式算法,
基本思路如下,如果所有变量的解都满足此最优化问题的KKT条件,那么此时最优化问题的解就得到了,因为KKT条件是最优化问题的充分必要条件,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更加接近原始二次规划问题的解,因为这会使原始二次规划问题的目标函数值变小,
重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,
子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定,假设α1,α2为两个变量,α3,α4,⋯,αN固定,那么由约束不等式∑Ni=1αiyi=0和y21=1可知:
α1=−y1N∑i=2αiyi
整个SMO算法包含两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法
两个变量二次规划的求解方法
不失一般性,假设α1,α2为两个变量,α3,α4,⋯,αN固定,省略不含α1,α2的常数项,于是最优化问题可以写为:
minα1,α2 W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2−(α1+α2)+y1α1N∑i=3yiαiKi1+y2α2N∑i=3yiαiKi2s.t. α1y1+α2y2=−N∑i=3yiαi=ζ0≤αi≤C,i=1,2
约束可以用二维空间中的图形表示:

不等式约束使得(α1,α2)在盒子[0,C]×[0,C]中,等式约束使得(α1,α2)在平行于盒子对角线的直线上,因此要求的是目标函数在一条平行于对角线的线段上的最优值,这使得两个变量的最优化问题成为实质上的单变量的最优化问题,此时考虑α2的最优化问题
最优值αnew2的取值范围需要满足条件:
L≤αnew2≤H
其中L,H是αnew2所在的对角线段端点的界:
L=max(0,αold2−αold1),H=min(C,C+αold2−αold1)
L=max(0,αold2+αold1−C),H=min(C,αold2+αold1)
假设问题的初始可行解为αold1,αold2,最优解为αnew1,αnew2,并且假设沿着约束方向未经剪辑时α2的最优解为αnew,unc2
先记:
g(x)=N∑i=1αiyiK(xi,x)+bEi=g(xi)−yi=(N∑i=1αiyiK(xi,x)+b)−yi
最优化问题沿着约束方向未经剪辑时的解为:
αnew,unc2=αold2+y2(E1−E2)η
其中:
η=K11+K22−2K12=||Φ(x1)−Φ(x2)||2
经剪辑后α2的解是:
αnew2=⎧⎪⎨⎪⎩H,αnew,unc2>Hαnew,unc2,L≤αnew,unc2≤HL,αnew,unc2<L
由αnew2求得αnew1是:
αnew1=αold1+y1y2(αold2−αnew2)
变量的选择方法
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件。
- 第1个变量的选择
选择第一个变量的过程为外层循环,在训练样本中选取违反KKT条件最严重的点,检查样本点(xi,yi)满足KKT条件的方法:
αi=0⇔yig(xi)≥10<αi<C⇔yig(xi)=1αi=C⇔yig(xi)≤1
其中g(xi)=∑Nj=1αjyjK(xi,xj)+b,在检验过程中,首先遍历所有满足条件0<αi<C的样本点,即在间隔边界上的支持向量点,检查是否满足KKT条件,然后检查整个训练数据集
- 第2个变量的选择
在找到第一个变量α1的基础上寻找α2,已知αnew2依赖于|E1−E2|,而且α1确定,所以E1确定,如果E1是正的,选择最小的Ei作为E2,否则选择最大的Ei作为E2,如果选择的α2不能使目标函数有足够的下降,那么采用启发式规则继续选择α2试用,如果还是找不到合适的α2,就重新找另外的α1
- 计算阈值b和差值Ei
SMO算法
输入:训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)},其中xi∈X=Rn,yi∈Y={+1,−1},i=1,2,⋯,N,精度ε
输出:近似解^α
- 取初值α(0)=0,k=0;
- 选取优化变量α(k)1,α(k)2,解析求解两个变量的最优化问题,过程见上上小结,求解得到最优解α(k+1)1,α(k+1)2,更新α为α(k+1);
- 若在精度ε范围内满足停机条件
N∑i=1αiyi=0,0≤αi≤C,i=1,2,⋯,Nyi⋅g(xi)⎧⎨⎩≥1,{xi|αi=0}=1,{xi|0<αi<C}≤1,{xi|αi=C}
其中g(xi)=∑Nj=1αjyjK(xi,xj)+b
则转第四步,否则令k=k+1,转到第二步
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异