支持向量机(一)线性可分支持向量机
支持向量机(二)线性支持向量机
支持向量机(三)非线性支持向量机与核函数
支持向量机(四)SMO算法
一、核技巧
1.非线性分类问题
如图 7.7,无法用直线(线性模型)将正实例点 “●”、负实例点 “×” 正确分开,但可用一条椭圆曲线(非线性模型)将其分开。

非线性问题不好求解,可将非线性问题变换为线性问题,如图 7.7,将左图中的椭圆变为右图中的直线。
设原空间为 χ⊂R2R2,x=(x(1),x(2))T∈χ,新空间为 Z⊂R2R2,z=(z(1),z(2))T∈Z,定义从原空间到新空间的变化:
z=ϕ(x)=((x(1))2,(x(2))2)T
原空间的椭圆
ω1(x(1))2+ω2(x(2))2+b=0
变为新空间中的直线
ω1z(1)+ω2z(2)+b=0
这样,非线性问题变换为线性问题。
核技巧:通过一个非线性变换 将输入空间(欧式空间 R2R2 或离散集合)对应于一个特征空间(希尔伯特空间 H),使输入空间 RnRn 的超曲面模型对应于特征空间 H 中的超平面模型(支持向量机)。
2.核函数的定义
定义: 设 χ 是输入空间,H 为特征空间,如果存在从 χ 到 H 的映射
ϕ(x):χ→H(1)
使得对所有 x,z∈χ,函数 K(x,z) 满足条件
K(x,z)=ϕ(x)⋅ϕ(z)(2)
则称 K(x,z) 为核函数,ϕ(x) 为映射函数。
对于给定的核函数 K(x,z),特征空间 H 和映射函数 ϕ 取法不唯一,可以取不同的特征空间,即使同一特征空间也可以取不同的映射。
实例 1: 输入空间 R2R2,核函数 K(x,z)=(x⋅z)2,找出其相关的特征空间 H 和映射 ϕ(x)。
解: 取特征空间 H=R3R3,记 x=(x(1),x(2))T,z=(z(1),z(1))T,由于
(x⋅z)2=(x(1)z(1)+x(2)z(2))2=(x(1)z(1))2+2x(1)z(1)x(2)z(2)+(x(2)z(2))2
所以可以取映射
ϕ(x)=((x(1))2,√2x(1)x(2),(x(2))2)T
容易验证 ϕ(x)⋅ϕ(z)=(x⋅z)2=K(x,z)。
仍取 H=R3R3 以及
ϕ(x)=1√2((x(1))2−(x(2))2,2x(1)x(2),(x(1))2+(x(2))2)T
同样有 ϕ(x)⋅ϕ(z)=(x⋅z)2=K(x,z)。
还可以取 H=R4R4 和
ϕ(x)=((x(1))2,x(1)x(2),x(1)x(2),(x(2))2)T
3.核技巧在支持向量机的应用
线性支持向量机的对偶问题中,目标函数、决策函数都只涉及输入实例与实例之间的内积。
将对偶问题的目标函数中的内积 xi⋅xj 用核函数 K(xi,xj)=ϕ(xi)⋅ϕ(xj) 来代替。此时对偶问题的目标函数为
W(α)=12N∑i=1N∑j=1αiαjyiyjK(xi,xj)−N∑i=1αi
分类决策函数为
f(x)=sign(Ns∑i=1α∗iyiϕ(xi)ϕ(x)+b∗)=sign(Ns∑i=1α∗iyiK(xi,x)+b∗)
这等价于经过映射函数 ϕ 将输入空间中的内积 xi⋅xj 变换为特征空间中的内积 ϕ(xi)⋅ϕ(xj),在新的特征空间里学习线性支持向量机。
当映射函数是非线性时,学习到含有核函数的支持向量机是非线性支持向量机。学习是隐式地在特征空间进行的,不需要显示地定义特征空间和映射函数。
二、正定核
对称函数 K(x,z) 成为核函数(通常指正定核函数)的充要条件:设 K(x,z) 是定义在 χ×χ 上的对称函数,即 K(x,z)=K(z,x),对任意的 x1,x2,...,xm∈χ,K(x,z) 对应的 Gram 矩阵是半正定的。
希尔伯特空间:是一个完备的,可能是无限维的,被赋予内积的线性空间(线性空间亦称向量空间)。
完备:指的是对极限计算是封闭的,即计算结果还是属于线性空间。
线性空间:指的是对加法、数乘计算是封闭的,即计算结果还是属于线性空间。
希尔伯特空间是函数空间,它的每一个元素都可以看作是函数。
构成希尔伯特空间的步骤:定义映射函数 ϕ 并构成向量空间 S;然后在 S 上定义内积构成内积空间;最后将 S 完备化构成希尔伯特空间。
1.定义映射,构成向量空间 S
定义映射
ϕ:x→K( ⋅ ,x)
根据这一映射,对任意的 xi∈χ,αi∈RR,i=1,2,...,m,定义线性组合
f(⋅)=N∑i=1αiK( ⋅ ,xi)
三、常用核函数
1.线性核函数
K(x,z)=x⋅z
线性核函数对应的是线性可分支持向量机。
2.多项式核函数
K(x,z)=(x⋅z+1)P
对应的支持向量机是一个 p 次多项式分类器。此时的分类决策函数为
f(x)=sign(Ns∑i=1α∗iyi(xi⋅x+1)p+b∗)
3.高斯核函数
K(x,z)=exp(−||x−z||22σ2), σ>0
对应的支持向量机是高斯径向基函数分类器。此时分类决策树函数为
f(x)=sign(Ns∑i=1α∗iyiexp(−||x−z||22σ2)+b∗)
4.拉普拉斯核函数
K(x,z)=exp(−||x−z||2σ), σ>0
5.Sigmoid核函数
K(x,z)=tanh(βx⋅z+θ), β>0,θ<0
6.字符串核函数
核函数不仅定义在欧式空间,还可定义在离散数据的集合上。
比如,字符串核是定义在字符串集合上的核函数。字符串核函数在文本分类、信息检索、生物信息等方面都有应用。
四、非线性支持向量机
利用核技巧,将线性分类的学习方法应用到非线性分类问题中。
将线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机对偶形式中的内积换成核函数。
从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划 (3)~(5),学习得到的分类决策函数
f(x)=sign(N∑i=1α∗iyiK(x,xi)+b∗)(3)
称为非线性支持向量机,K(x,z) 是正定核函数。
1.非线性支持向量机学习算法
输入:训练集 T={(x1,y1),(x2,y2),...,(xN,yN)},其中 xi∈χ=RnRn,yi∈Y={−1,1},i=1,2,...,N
输出:分类决策树
① 选取核函数 K(x,z) 和参数 C,构造并求解最优化问题
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(3)(4)(5)
求最优解 α∗=(α∗1,α∗2,...,α∗N)T。
② 选择 α∗ 的一个正分量 0<α∗j<C,计算
b∗=yj−N∑i=1α∗iyiK(xi,xj)
③ 构造决策函数:
f(x)=sign(N∑i=1α∗iyiK(x,xi)+b∗)
当 K(x,z) 是正定核函数时, (3)~(5) 是凸二次规划问题,解存在。
五、总结
-
对于输入空间中的非线性分类问题,通过非线性变换转化为高维特征空间中的线性分类问题。然后在高维特征空间中学习线性支持向量机。
-
由于在线性支持向量机学习的对偶问题里,目标函数和分类决策函数都只涉及实例与实例之间的内积,所以不需要显式地指定非线性变换,而是用核函数来替换当中的内积。
-
核函数表示,通过一个非线性转换后的两个实例间的内积。
具体地,K(x,z) 是一个核函数,或正定核,意味着存在一个从输入空间 χ 到特征空间 H 的映射 ϕ(x):χ→H,对任意的 x,z∈χ,有
K(x,z)=ϕ(x)⋅ϕ(z)
-
对称函数 K(x,z) 为正定核的充要条件:里面任何点的集合形成的 Gram 矩阵是半正定的。即对任意 xi∈χ,i=1,2,...,m,对任意正整数 m,对称函数 K(x,z) 对应的 Gram 矩阵是半正定的。所以在线性支持向量机学习的对偶问题中,用核函数 K(x,z)替代内积,求得的就是非线性支持向量机
f(x)=sign(N∑i=1α∗iyiK(x,xi)+b∗)
【推荐】国内首个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)