You are on page 1of 34

第7章 支持向量机SVM

•PR07 Support vector machine (SVM)

Lecturer: Wu XiaoGang
2020.9
1

信息技术学院,2020
目 录
目 录
• 线性不可分如何转成可分?

• 支持向量机原理
• 结构风险最小准则
• 线性不可分-软间隔
• 支持向量机算法实现

• 内容与课程思政小结

• 基于SVM算法的人脸识别
一、问题导入

• 非线性与线性的转化 辩证法:降维升维

• 开拓视野,提升境界(升维)
一、问题导入
• 在低维空间中线性不可分的问题,映射到高维空间是否都
可以变成线性可分的问题?
• 需要映射到多少维才行?这些问题一直困扰着线性分类器,
也限制了线性分类器的应用范围。

25
一、问题导入
• 当数据线性可分或弱线性可分时,线性支持向量机将数据分开;
• 当数据非线性可分时,使用核函数将数据映射到高维空间使得
数据在高维空间线性可分。

• 高维空间可以做一些低维空
间觉得不可能的事情。
• 那么如何映射到高维空间?
高维到底需要多高?
一、问题导入

• 支持向量机算法的出现,给出一个比较有效的
解决方案。

矛盾转化的思想是数学的
灵魂,把困难问题转化为
容易解决的问题。支持向
量 机 SVM 算 法 的 出 发 点 是
把二分类问题映射到几何
空间,找到最佳分隔线或
最佳超平面。在升维的同
时避免维度带来的复杂计
算,其关键是核函数定义
了转换空间的内积。
25
二、新课内容
支持向量机算法SVM (Support vector machine)
➢ 支持向量机算法是由俄罗斯著名的统计学家和数学家
弗拉基米尔·瓦普尼克(Vapnik)1963年提出,并且
构建了一套严密的统计学习理论,对模式识别、机器
学习领域产生了重要影响。
二、新课内容
1.SVM的关键思想
➢ 贝叶斯决策中使用训练集来估计概率分布Pr(x,y)或
密度函数p(x,y),这种概率方法称为生成式方法。
➢ 直接给出估计概率Pr(y|x)或Pr(x|y)称判别方法。
➢ SVM的目的是希望找到最佳的分类边界。
二、新课内容
1.SVM的关键思想
• 一个点(样例)的边际margin是其到分界超平面
的垂直距离
• SVM最大化(所有训练样本的)最小边际
• 有最小边际的点称为支持向量(support vectors)
所以叫支持向量机support vector machine
二、新课内容
2. SVM的几何示意图

红色超平面
绿色为其法向量w

求任一点x到超
平面的距离r?
二、新课内容
2. 如何求解最大分类间隔
• x投影点为x⊥ , 那么
• x- x⊥ 为距离向量
• 方向与w相同, 𝑤Τ∥ 𝑤 ∥
𝑤
• 𝑥= x⊥ +r ,两边同乘𝑤T+b
∥𝑤∥

𝑤T𝑤
• G(𝑥) = 𝐺 x⊥ + r
∥𝑤∥

• G(𝑥) = r ∥ 𝑤 ∥
𝐺(𝑥)
• 𝒓=
∥𝑤∥
二、新课内容
2. 如何求解最大分类间隔
➢ 对于权向量 w的平行的决策边界的范围的宽度,称为
分类间隔 d。
➢ 如果将分类决策边界居中,分类间隔 d 就等于 2 倍
的支持向量 xs(设样本到边界的距离为r)
二、新课内容
2. 如何求解最大分类间隔
二、新课内容
➢ 二次优化-条件

两类样本到分类决策边界的距离都要比支持向量更大。因
为 所以对其他向量判别函数的绝对值都要大于 1。
二、新课内容
➢ 二次优化问题求解方法
支持向量机通过将所有约束条件与拉格朗日乘子相乘后添
加到优化目标中,在求取拉格朗日乘子的最大值条件下,
求取最短的权向量 w。

yi
二次优化的凸规划问题存在唯一解,其充要条件可以通过
拉格朗日函数分别对权向量 w 和偏置量 b求偏导来得到。
二、新课内容
➢ 二次优化问题求解方法(续)
将 w 代入拉格朗日函数,通过数据集中所有样本的特征向量及
其所属类别来求得拉格朗日乘子α,进而求得最优权向量 w。在
求解α的过程中,需要满足 KKT 条件:
二、新课内容
➢ 二次优化问题求解方法(续)

最优解W表示成训
∂𝐿 练样本的加权和
=0 ⟹ 𝑤 = σ𝑛𝑖=1 𝛼𝑖 𝑦𝑖 𝑥𝑖
∂𝑤
∂𝐿 权重在两类
=0 ⟹ σ𝑛𝑖=1 𝛼𝑖 𝑦𝑖 =0 中是平衡的
∂𝑏

𝛼𝑖 (𝑦𝑖 (𝑤 𝑇 𝑥𝑖 +b)-1=0 i=1,2…,n 互补松驰

𝛼𝑖 ≥ 0 i=1,2…,n
𝑦𝑖 (𝑤 𝑇 𝑥𝑖 +b) ≥1 i=1,2…,n
二、新课内容
➢ 最优的b值 与支持向量

互补松驰
𝛼𝑖 (𝑦𝑖 (𝑤 𝑇 𝑥𝑖 +b)-1=0 i=1,2…,n
如果𝛼𝑖 > 0,那么𝑦𝑖 (𝑤 𝑇 𝑥𝑖 +b)-1=0,展开移项:
𝑦𝑖 𝑏 = 1 − 𝑦𝑖 𝑤 𝑇 𝑥𝑖 ,两边同乘𝑦𝑖 得
𝑦𝑖 2𝑏 = 𝑦𝑖 − 𝑦𝑖 2𝑤 𝑇 𝑥𝑖
由:𝑦𝑖 2 =||G(x)||2 =1, 因此对于特定的i有:
𝑏 = 𝑦𝑖 − 𝑤 𝑇 𝑥𝑖 ,对所有的b求均值
𝑏 ∗ = 𝑦𝑖 − 𝑊 ∗ 𝑇 𝑥𝑖

对应拉格朗日乘子𝛼𝑖 > 0的特殊的向量b*,称为支持向量


二、新课内容
3 不可分的问题的线性分类器SVM
一个模式识别问题,其本质上是线性可分的,但由于模式采集的
过程中各种噪声干扰和误差,造成了一些异常点。有可能使线性
可分的问题变成了线性不可分的问题
二、新课内容
3. 不可分的问题的线性分类器SVM
如果求取到了不考虑异常点的最优权向量,则异常点到线
性分类器决策边界的距离一定比支持向量到分类决策边界
的距离更近,即异常点的判别函数值的绝对值一定小于 1
的。所以引入松弛变量ξ。

C称为惩罚因子,表示对分类器中存在异常点
的容忍程度。C 越小对异常点的容忍度越高;
C 越大,对异常点的容忍度较低。
二、新课内容
4. 核SVM
➢ 支持向量机解决了低维空间中的非线性分类问题。但是:
• 怎么知道应该映射到多少维的特征空间?
• 又如何找到合适的映射函数?
将问题转化到高维
空间后,会带来巨
➢ 非线性支持向量机 大的计算量问题,
甚至会有维度灾难。

在高维空间的线性支持向量机求解过程中,除了类别标签以外,并没
有用到原始空间中的样本 x(i)映射到高维空间中的像 y(i),只用到
高维空间中两个向量的内积。也就是说我们能够不经过原始特征空间
到高维特征空间的映射过程,就能够计算出两个低维空间的向量在高
维空间中的内积,就可以实现非线性支持向量机求解的目标。
4 SVM核思想形象化
二、新课内容
4. 核 SVM
➢ 核函数:它的输入是低维空间中的两个向量,输出是这
两个向量经过同一个映射到另一个空间以后的内积。

这个条件称为
“Mercer 定理”
二、新课内容
5. 经验风险最小化准则
➢ 经验风险:训练之后的分类器错误分类集中的样本比例。
➢ 目标是经验风险最小化,被错分越少越好,最好Remp=0。
➢ 例:左图训练集中能找到一条线性的分类边界来实现经
验风险最小化,右图需要一条弯曲的分类边界。
非线性边界存在过拟合问题
二、新课内容
5. 结构风险最小化准则
➢ 为解决过拟合问题Vapnik 等提出了结构风险最小化 SRM。
➢ 结构风险:
指训练好的分类器在面对未知样本时分类错误的概率。

因为自然界真实的样本分布情
况并不知道,也很难准确地计
算出结构风险是多少。但是,
Vapnik 的 SRM 理论给出了它的一
个上界,也称为泛化误差界
二、新课内容
5. 结构风险最小化准则(续)
样本数越大,置信风险就越小,结构风险
越小。否则,结构风险的大小受置信风险
的 VC 维影响,VC 维 h 越大,则置信风
险也越大。

VC 维是一类函数能够打散的两分类样本集中最大样本数量。
例:在二维特征空间中,样本集中有 2个样本或3个样本时,都能分隔,
所以线性分类器的 VC 维就是 3。而对于 4 个样本的样本集打散呢?
显然二次曲线是可以的。所以二次函数分类器 VC 维至少是 4。
三、应用实现
SVM的Matlab实现
% svm.m
clear variables
clc
load ('test_images.mat');
load ('test_labels.mat');
load ('train_images.mat');
load ('train_labels.mat');
train_num = 500;
test_num = 200;
data_train = mat2vector(train_images(:,:,1:train_num),train_num);%图像转向量
data_test = mat2vector(test_images(:,:,1:test_num),test_num);%mnist数据集图像
为28*28
% 这里我们用最简单的线性模型做演示;SVM中可调的超参数非常多,如损失
函数以及选用的核函数等 如果需要进一步设定,可以参考帮助文档,如设置t =
% templateSVM('Standardize',1,'KernelFunction','gaussian');,将t送入fitcecoc即可
t = templateSVM('KernelFunction','linear');
svm_model = fitcecoc(data_train,train_labels1(1:train_num),'Learners',t);
三、应用实现
SVM的Matlab实现
% svm.m续
%训练模型,由于是多分类,不能直接调用fitcsvm
%测试结果

result = predict(svm_model,data_test);
result = result.';
fprintf('预测结果:');
result(1:20)%取20个打印出来对比
fprintf('真实分布:');
test_labels1(1:20)
acc = 0.;
for i = 1:test_num
if result(i)==test_labels1(i)
acc = acc+1;
end
end
fprintf('精确度为:%5.2f%%\n',(acc/test_num)*100);
三、应用实现
SVM的Matlab实现
四、课程小结
从SVM的介绍学到的思想?

29
四、课程小结
• 当数据线性可分或弱线性可分时,线性支持向量机将数据分开;
• 当数据非线性可分时,使用核函数将数据映射到高维空间使得
数据在高维空间线性可分。

• 《三体》中,通过降维攻击可以把被攻击对象封住,反过来增
加维度可以展开。在SVM中,通过核函数来解决的。不管什么
的模型,可能都有一些线性不可分的点,可以不要这些点,通
过松弛变量来处理这些膈人的东西。
五、拓展学习
2维例子:自变量x和y,给定约束条件g(x,y)=c,要求f(x,y)在约束g下的极值。
拉格朗日乘子法:就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=0 的约
画出f的等高线图,约束g=c只有一个自由度,图中红色曲线所示。当约束曲线
束条件下的极值的方法。主要思想是引入一个新的参数 λ (即拉格
g=c与某一条等高线f=d1相切时,函数f取得极值。两曲线相切等价于两曲线在
朗日乘子),将约束条件函数与原函数联系到一起,配成与变量数量
切点处拥有共线的法向量。因此可得函数f(x,y)与g(x,y)在切点处的梯度成正
相等的等式方程,从而求出得到原函数极值的各个变量的解。
比。于是可列方程组求解切点坐标(x,y),进而得到函数f的极值。

梯度:求偏导
五、拓展学习
进一步的阅读
✓ 如果对本章的内容感兴趣,可以参考如下文献
 凸函数、拉格朗日乘子法、KKT条件:
◼ Convex Optimization第一、二、五章
 SVM和统计学习
◼ http://research.microsoft.com/pubs/67119/svmtutorial.pdf
◼ 最新会议论文集:ICML、NIPS、AISTATS、COLT、…
 SMO:
http://en.wikipedia.org/wiki/Sequential_minimal_optimizati
on
◼ LIBSVM, SVMLight

 Pegasos: http://www.cs.huji.ac.il/~shais/code/
 DCD/LIBLINEAR:
http://www.csie.ntu.edu.tw/~cjlin/liblinear/
 加性核:我的主页→publications页面→[W5]

31
六、布置作业

实验五 支持向量机的手写数字(或人脸)识别

要求:
1.分析算法原理与代码实现的关系。
2.对比或改进不同算法的时间效率
3.可选Matlab或python语言实现

31

You might also like