线性分类器-模式识别
模式识别(4-1)

§4.2 Fisher线性判别
Fisher线性判别函数是研究线性判别函数中最 有影响的方法之一。对线性判别函数的研究就 是从R.A.Fisher在1936年发表的论文开始的。
§4.2 Fisher线性判别
设计线性分类器: g(x) wT x + w0
➢首先要确定准则函数; ➢然后再利用训练样本集确定该分类器的参数,以求使所确 定的准则达到最佳。
w
x = xp + r w , g(x)= r w
x2
x p是x在H 上的投影向量 r是x到H的垂直距离
w 是w方向上的单位向量 w
w x
r
xp
x1
H: g=0
线性判别函数的几何意义
令 g(x) wT x w0 = r w
若x为原点,则g(x) w0
原点到超平面H的距离:r0
w0 w
w0 0 原点在H的正侧 w0 0 原点在H的负侧 w0 0 H通过原点
一些基本参量的定义
2.在一维Y空间
➢各类样本均值
1 mi Ni
y,
yYi
i 1, 2
➢ 样本类内离散度、总类内离散度和类间离散度
Si ( y mi )2, yYi
Sw S1 S2 Sb (m1 m2 )2
i 1, 2
§4.2 Fisher线性判别
根据Fisher选择投影方向w的原则:使原样本向量在该方向上 的投影能兼顾:
mi
1 Ni
yYi
y
1 Ni
xX i
wT x =
wT mi ,
i 1, 2
Sb (m1 m2 )2 (wT m1 - wT m2 )2 = wT (m1 - m2 )(m1 - m2 )T w = wT Sbw
模式识别--第二讲 线性分类器

第 1 页第二讲 线性分类器一、 判别函数1、 决策论方法在模式识别中,如果根据模式特征信息,按照决策论的思路,以一定的数量规则来采取不同的分类决策,将待识别的模式划分到不同的类别中去,就称为模式识别的决策论方法。
在决策论方法中,特征空间被划分成不同的区域,每个区域对应一个模式类,称为决策区域(Decision Region )。
当我们判定待识别的模式位于某个决策区域时,就判决它可以划归到对应的类别中。
图1 决策区域需要注意的是:决策区域包含模式类中样本的分布区域,但不等于模式类的真实分布范围。
2、 判别函数如果特征空间中的决策区域边界(Decision Boundary )可以用一组方程0)( x i G来表示,则将一个模式对应的特征向量x 代入边界方程中的)(x i G ,确定其正负符号,就可以确定该模式位于决策区域边界的哪一边,从而可以判别其应当属于的类别,)(x i G 称为判别函数(Discriminant Function )。
判别函数的形式可以是线性的(Linear )或非线性(Non-linear)的。
第 2 页例如图2就显示了一个非线性判别函数,当G (x )>0时,可判别模式x ∈ω1;当G (x )<0时,可判别x ∈ω2。
图2 非线性判别函数非线性判别函数的处理比较复杂,如果决策区域边界可以用线性方程来表达,则决策区域可以用超平面(Hyperplane )来划分,无论在分类器的学习还是分类决策时都比较方便。
例如图3中的特征空间可以用两个线性判别函数来进行分类决策:当G 21(x )>0且G 13(x )>0时,x ∈ω2; 当G 13(x )<0且G 21(x )<0时,x ∈ω3; 当G 21(x )<0 且 G 13(x )>0时,x ∈ω1;当G 21(x )>0且G 13(x )<0时,x 所属类别无法判别。
模式识别之二次和线性分类器课件

线性分类器利用训练数据集学习得到 一个线性函数,该函数可用于对新数 据进行分类。分类决策边界是一个超 平面,将不同类别的数据分隔开来。
线性分类器数学模型
线性函数
优化目标
正则化
线性分类器使用的线性函数通 常表示为权重向量和特征向量 的内积加上偏置项,即y = w^Tx + b,其中y是预测类别 ,w是权重向量,x是特征向量 ,b是偏置项。
模式识别之二课次件和线性分类器
contents
目录
• 引言 • 二次分类器原理 • 线性分类器原理 • 二次与线性分类器比较 • 二次和线性分类器应用案例 • 总结与展望
01
引言
模式识别概述
模式
01
在感知或观察事物时,人们所发现的事物之间规律性的关系或
特征。
模式识别
02
利用计算机对输入的信号进行分类或描述,以实现自动识别目
01
深度学习在模式识别 中的应用
深度学习技术为模式识别提供了新的 解决方案,能够自动提取数据的深层 特征,提高识别精度。
02
多模态数据融合
利用多模态数据融合技术,将不同来 源、不同类型的数据进行融合,提高 模式识别的性能和鲁棒性。
03
迁移学习在模式识别 中的应用
迁移学习技术可以将在一个任务上学 到的知识迁移到另一个任务上,从而 加速模型训练,提高识别效率。
自然语言处理领域应用案例
1 2
文本分类
通过训练二次和线性分类器,对文本进行分类, 如新闻、广告、评论等,提高信息处理的效率。
情感分析
利用分类器对文本中的情感进行识别和分析,为 企业了解用户需求、改进产品提供参考。
3
机器翻译
结合分类器对源语言进行识别和转换,实现不同 语言之间的自动翻译,促进跨语言交流。
《模式识别》线性分类器设计实验报告

《模式识别》实验报告三、线性分类器实验1.(a)产生两个都具有200 个二维向量的数据集X1 和X1 ’。
向量的前半部分来自m1=[-5;0]的正态分布,并且S1=I 。
向量的后半部分来自m2=[5;0]的正态分布,并且S1=I。
其中I是一个2×2 的单位矩阵。
(b)在上面产生的数据集上运用Fisher 线性判别、感知器算法和最小平方误差判别算法,需要初始化参数的方法使用不同的初始值。
(c)测试每一种方法在X1 和X1 ’ 上的性能(错误率)。
(d)画出数据集X1 和X1 ’,已经每种方法得到对应参数向量W 的分界线。
Fisher线性判别图1 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数向量w = [-9.9406, 0.9030]’错误率error=0,感知器算法:图2 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.1;0.1];迭代次数iter=2参数向量w = [-4.8925, 0.0920]’错误率error=0图3 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 1];迭代次数iter=2参数向量w = [-3.9925, 0.9920]’错误率error=0图4 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[10; 10];迭代次数iter=122参数向量w = [-5.6569, 7.8096]’错误率error=0图5 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[50; 50];迭代次数iter=600参数向量w = [-27.0945, 37.4194]’错误率error=0图6 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[50; 100];迭代次数iter=1190参数向量w = [-54.0048, 74.5875]’错误率error=0最小平方误差判别算法:图7 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.1; 0.1];参数向量w = [-0.1908, -0.0001]’错误率error=0图8 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.5; 0.5];参数向量w = [-0.1924, 0.1492]’错误率error=0图9 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 0.5];参数向量w = [-0.1914, 0.0564]’错误率error=0图10 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 1];参数向量w = [-0.1943, 0.3359]’错误率error= 0.00502.重复1.中的实验内容,数据集为X2 和X2 ’。
模式识别 线性分类器

3(3-1)/2=3个判决函数。即:每次从M类中取出两类的组合:
2
=
d 23 ( X ) 0
x2
-
3
-
1
O
2023/12/6
2!
d13 ( X ) 0
2
−
1
- d12 ( X ) 0
例3.4 已知dij(X)的位
region ,IR)。
d1 , d 2 0,
d3 0
d1 0,
d 2 , d3 0
2
1
d 2 0,
d1 , d 3 0
全部<0
不属任何类
IR,可能
属于1 或 3
3
IR,可能
属于3 或 2
x
d 3 0,
d1 , d 2 0
-
d3 ( X ) 0
1
d ( X ) w1 x1 w2 x2 w3 0
2
x1
O
图3.2 两类二维模式的分布
2023/12/6
式中: x1 , x2 为坐标变量,
w1 , w2 , w3 为方程参数。
5
x2
d(X) 0
+
-
将某一未知模式 X 代入:
1
d ( X ) w1 x1 w2 x2 w3
c) 找交集。
12
例3.2 已知di(X)的位置和正负侧,分析三类模式的分布区域 。
请同学们自己先分析一下。
d 3( X ) 0
+
—1ຫໍສະໝຸດ —d2 ( X) 0
+
模式识别:线性分类器

模式识别:线性分类器一、实验目的和要求目的:了解线性分类器,对分类器的参数做一定的了解,理解参数设置对算法的影响。
要求:1. 产生两类样本2. 采用线性分类器生成出两类样本的分类面3. 对比线性分类器的性能,对比参数设置的结果二、实验环境、内容和方法环境:windows 7,matlab R2010a内容:通过实验,对生成的实验数据样本进行分类。
三、实验基本原理感知器基本原理:1.感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限次迭代之后的收敛。
感知器的基本模型结构如图1所示:图1 感知器基本模型其中,X输入,Xi表示的是第i个输入;Y表示输出;W表示权向量;w0是阈值,f是一个阶跃函数。
感知器实现样本的线性分类主要过程是:特征向量的元素x1,x2,……,xk是网络的输入元素,每一个元素与相应的权wi相乘。
,乘积相加后再与阈值w0相加,结果通过f函数执行激活功能,f为系统的激活函数。
因为f是一个阶跃函数,故当自变量小于0时,f= -1;当自变量大于0时,f= 1。
这样,根据输出信号Y,把相应的特征向量分到为两类。
然而,权向量w并不是一个已知的参数,故感知器算法很重要的一个步骤即是寻找一个合理的决策超平面。
故设这个超平面为w,满足:(1)引入一个代价函数,定义为:(2)其中,Y是权向量w定义的超平面错误分类的训练向量的子集。
变量定义为:当时,= -1;当时,= +1。
显然,J(w)≥0。
当代价函数J(w)达到最小值0时,所有的训练向量分类都全部正确。
为了计算代价函数的最小迭代值,可以采用梯度下降法设计迭代算法,即:(3)其中,w(n)是第n次迭代的权向量,有多种取值方法,在本设计中采用固定非负值。
由J(w)的定义,可以进一步简化(3)得到:(4)通过(4)来不断更新w,这种算法就称为感知器算法(perceptron algorithm)。
可以证明,这种算法在经过有限次迭代之后是收敛的,也就是说,根据(4)规则修正权向量w,可以让所有的特征向量都正确分类。
模式识别教学大纲

模式识别教学大纲模式识别是利用机器模仿人脑对现实世界各种事物进行描述、分类、判断和识别的过程,是信息科学和人工智能的重要组成部分。
模式识别与我们日常生活中所用到的智能技术息息相关,小到手机上的智能语音播报,指纹匹配和人脸识别,大到自动驾驶、医学检测、智能制造都用到了模式识别的相关算法和理论。
课程概述模式识别是一门与人工智能密切相关的专业课,本课程主要系统介绍模式识别的基本理论和方法,包括:模式识别的基本理论、监督模式识别中常用的线性和非线性分类器、非监督模式识别的分类器设计方法以及特征选择和提取的方法、分类器的评价方法等。
模式识别作为一门实践性很强的学科,授课的时候采用算法的理论讲解和实验演示相结合的方法来进行。
通过本课程的学习,不仅可以系统掌握模式识别的基本知识、理论和方法,了解模式识别的发展趋势和应用领域,还能够为将来进一步深入学习和研究模式识别和人工智能打下坚实的基础,帮助我们提高解决工程问题的能力。
授课目标模式识别作为一门实践性很强的学科,授课的时候采用算法的理论讲解和实验演示相结合的方法来进行。
通过本课程的学习,可以系统掌握模式识别的基本知识、理论和方法,了解模式识别的发展趋势和应用领域,不仅能够为将来进一步深入学习和研究模式识别和人工智能打下坚实的基础,还会帮助我们提高解决工程问题的能力。
课程大纲第一章绪论第一讲模式与模式识别第二讲模式识别的主要方法第三讲模式识别系统的应用举例第四讲模式识别系统的典型构成第一章绪论部分的单元测试第二章贝叶斯决策理论第一讲贝叶斯决策基础第二讲基于最小错误率的贝叶斯决策第三讲基于最小风险的贝叶斯决策第四讲贝叶斯分类器的设计第五讲正态分布时的统计决策第六讲matlab代码演示实例贝叶斯决策理论测试(一)贝叶斯决策理论单元测试(二)第三章概率密度函数的估计第一讲最大似然估计第二讲贝叶斯估计第三讲贝叶斯学习概率密度函数的估计的单元测试第四章线性分类器第一讲引言第二讲线性判别函数的基本概念第三讲Fisher线性判别第四讲Fisher线性判别matlab演示第五讲感知器算法第六讲感知器算法实例第七讲感知器算法matlab演示第八讲最小平方误差判别关于感知器算法和最小平方误差判别的测验关于fisher线性判别准则的测验第五章非线性分类器第一讲分段线性判别函数第二讲二次判别函数第三讲神经网络的基础知识和BP神经网络第四讲神经网络参数的确定第五讲多层神经网络在模式识别中的应用方法第六讲BP神经网络的matlab实例单元测试(一)单元测试(二)单元测试(三)第六章其他分类方法近邻法的测试第一讲近邻法原理第二讲快速搜索近邻法第三讲剪辑近邻法第四讲压缩近邻法第七章决策树第一讲决策树第二讲id3算法第三讲随机森林决策树的测试第八章非监督模式识别第一讲动态聚类方法第二讲分级聚类方法非监督模式识别测试题第九章特征选择和特征提取第一讲特征选择和提取的基本概念第二讲特征选择的判据第三讲特征选择的最优和次优算法第四讲特征提取的PCA算法第五讲K-L变换第六讲特征提取的matlab演示实例特征选择的测试题目特征提取的单元测试第十章模式识别系统的评价第一讲监督模式识别中错误率的估计方法第二讲监督模式识别中的交叉验证及自举法第三讲影响分类器性能估计的其它因素第四讲非监督模式识别系统性能的评价系统评价的测试预备知识具有一定的数学基础,掌握了线性代数以及概率论与数理统计两门课程涉及到的知识,如果有人工智能的相关基础就更好了!参考资料[1] 张学工《模式识别》(第3版),清华大学出版社,2010年。
第4章 线性分类器

用上列方程组作图如下:
软件工程专业
0 .5
1
0 .5
g1 ( x) g 2 ( x) g1 ( x) g 3 ( x)
2
g 2 ( x ) g1 ( x ) g 2 ( x) g 3 ( x)
1 .0
g1 ( x) g3 ( x) 0
g21 ( x) 2, g31 ( x) 1, g32 ( x) 1
g3 j ( x) 0 因为 结论:所以X 属于ω 3类
5
2 判别区
x2 g 21 0
g 23 0
1判别区
g13 0
g23 ( x) 0
g12 ( x) 2, g13 ( x) 1, g 23 ( x) 1 g12 0
1
x1
边界
3
例如右上图:三类的分类问题,它 们的边界线就是一个判别函数
用判别函数进行模式分类,取决两个因素: 软件工程专业
判别函数的几何性质:线性与非线性 判别函数的参数确定:判别函数形式+参数 一类是线性判别函数:
线性判别函数:线性判别函数是统计模式识别的基本 方法之一,简单且容易实现 广义线性判别函数 所谓广义线性判别函数就是把非线性判别函数映射到 另外一个空间(高维)变成线性判别函数 分段线性判别函数
模式识别
软件工程专业 计算机与通信工程学院 计算机与通信工程学院
第四章 线性分类器
4.1 判别函数
假设对一模式X已抽取n个特征, 表示为: X ( x1 , x2 , x3 ,..., xn )T
软件工程专业
x2
2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业2-线性分类器第一章感知机算法 (2)1.1算法原理 (2)1.2程序代码 (2)1.3运行结果及解释 (4)第二章最小二乘算法 (6)2.1算法原理 (6)2.2程序代码 (7)2.3运行结果及解释 (8)第三章支持矢量机算法 (10)3.1算法原理 (10)3.2程序代码 (11)3.3运行结果及解释 (13)第四章三种方法比较 (16)理解和体会 (18)附录 (18)主程序代码:stp2.m (18)生成样本数据代码createSample.m (20)绘图代码plotData.m: (21)第一章 感知机算法1.1 算法原理对于两类的情况,线性分类器是一个超平面: *T =w x 0 ,其中*w 是法向量,x 是训练集的增广向量(每一个训练样本的最后一维值为1),应该满足如下条件:*1*2T T w w >∀∈<∀∈w x 0x w x 0x该算法的代价函数定义为()()TYJ δ∈=∑xx w wx 其中Y 是所有的被分错的训练样本的集合,而针对每一个分错的样本x ,其对应的δx 满足:1211w w δδ=-∈=+∈x x x x ,因此()J w 一定大于0的。
现在的目标就是求解优化函数min ()J w ,为了简单起见,采用梯度下降法,()()YJ δ∈∇=∑w xx w x ,迭代步骤为(1)()()tYt t αδ∈+=-∑xx w w x ,其中t α是迭代步长,同样为了简单起见,可以取一个较小的常数(太大会导致迭代在最小值附近振荡,太小会导致迭代很慢)1.2 程序代码function [w, ws, miss] = perceptron( data, nSample, dim, alpha, nStep) %% 感知机算法 %% 输入 % data 训练数据% nSample 训练的个数,是一个向量(每个类的个数) % dim 代表特征的个数 % alpha 迭代步长 % nStep 迭代次数 % %% 输出% w 线性分类结果 w'x = 0; (x 是增广向量) % ws 迭代过程ws 的变化情况 % miss 迭代过程中分错数的变化情况%% 初始化权重向量 w = rand(dim+1, 1); ws = zeros(dim+1, nStep);miss = zeros(1, nStep);data1 = data{1, 1};data2 = data{1, 2};%% 感知机算法流程for i = 1 : nStep% 做第i次迭代ws(:, i) = w; % 存储当前w的值missNum = 0;% 第一类分错统计for k = 1 : nSample(1)% 遍历当前组的第k个实例x = data1(:, k);if(w' * x < 0)w = w + alpha * x; % 修改w,分错了x,(x属于第一类,本应该满足w'x > 0)missNum = missNum + 1;endend% 第二类分错统计for k = 1 : nSample(2)% 遍历当前组的第k个实例x = data2(:, k);if(w' * x > 0)w = w - alpha * x;missNum = missNum + 1;endendmiss(i) = missNum;endend1.3运行结果及解释对上述函数,生成实例的系数为{[2.0 0.8; -1.5 1.7;], [-1.7 1; 1.3 -0.6;]};分别代表两类数据的两个特征的正太分布的均值和系数。
α=,迭代201次的结果如下图1-1:当算法取步长0.001图1-1 感知机算法结果图图1-1的左边部分为分错次数变化图,说明了算法效果还不错,分错次数一开始降得很快,但因为两类数据不能完全分开,导致错误次数始终不能降到0,从右图中也可以看出,决策线从初始的绿色逐渐变回红色,不断地调整。
α=时,迭代201次结果如下图1-2所示:当取算法步长1图1-2 感知机算法结果图可以发现,由于步长太大的时候,分错样本数发生振荡,因此,梯度下降法不能把步长取太大。
α=,迭代201次的结果如下图1-1:生成样本系数修改为当算法取步长0.001{[2.0 0.8; -1.8 0.9;],[-1.9 1; 1.9 -0.6;]};时候两类可以完全分开,发现算法很快就得到了一条决策线(但是这根线离蓝色类很近,直观上讲并不是最佳的线)图1-3 感知机算法结果图下面给出三维的分类结果:图1-4 感知机算法三维分类结果图第二章 最小二乘算法2.1 算法原理此算法采用了不一样的代价函数,定义为:22()TJ =w y -w x ,其中y 的第i 项i y 代表每一个样本对应的函数值,可以用两种方式定义,第一种:1211T i i i Ti i i w w ==+∀∈==-∀∈y w x x y w x x (此种情况,就不考虑两类的权重),第二种:21211122/()/()T i i i Ti i i N N N w N N N w ==+∀∈==-+∀∈y w x x y w x x (此种情况,考虑了两类的权重)第二种方法中,12,N N 分别代表第一类和第二类的样本数量。
分析优化函数min ()J w ,目的是求解T =y x w ,则有:1()T T T -=⇒=⇒=y x w xy xx w w xx xy ,这个叫做求伪逆。
下面思考,这两种方法有什么不同呢?事实上,对于第一种方案,min ()J w 的效果就是得到三条平行的超平面,1211T T T w w =+∈==-∈w x x w x w x x ,第一个平面是第一类的线性拟合结果,第二个平面是决策面,第三个平面是第二类的线性拟合结果,这种情况下,决策面刚好位于两个拟合平面的中央。
对于第二种情况,得到的三个超平面变为21211122/()/()T T T N N N w N N N w =+∈==-+∈w x x w x w x x ,故而当12N N > 时, 决策面就更靠近第一类所拟合的超平面这是因为此时:212112/()/()N N N N N N +<+2.2程序代码function [w, ww] = meanSquareError( data, nSample, dim) %% mse算法最小化 ||y - w'x||%% 输入% data 训练数据% nSample 训练的个数,是一个向量(每个类的个数)% dim 代表特征的个数%%% 输出% w 线性分类结果 w'x = y; (y 值为1,或-1)% ww 带权重的,(y 值为 n1/n, -n2/n)%% 最小二乘流程n1 = nSample(1);n2 = nSample(2);n = n1 + n2;x = zeros(dim+1, n);y = zeros(n, 1);x(:, 1 : n1) = data{1, 1};x(:, n1+1 : n) = data{1, 2};%% 没有权重的情况y(1:n1, 1) = 1;y(n1+1 : n) = -1;% 最小二乘公式,伪逆w = inv(x * x') * x * y;%% 有权重的情况y(1:n1, 1) = n2 / n;y(n1+1 : n) = -n1 / n;% 最小二乘公式,伪逆ww = inv(x * x') * x * y;end2.3运行结果及解释针对生成系数{[2.0 0.8; -1.8 0.9;], [-1.9 1; 1.9 -0.6;]}; 一类有1000个样本,二类只有300个样本时,运行结果如下:图2-1 最小二乘算法结果图可以看到,两种方法生成了同样的拟合直线,但是在不带权重的条件下,决策面在两条拟合线的中央,而带权重的时候,决策面偏向了蓝色区域(第一类)。
当两类的样本数量一样的时候,就可以得到一样的结果。
图2-2 最小二乘算法结果图图中‘+’型黄色直线和实型黄色直线也重合了,验证了2.1节中理论的正确性。
下面给出三维的结果图:图2-3 最小二乘算法三维结果图图2-4 最小二乘算法三维结果图第三章 支持矢量机算法3.1 算法原理目的是最大化每一类的所有样本点到决策面的欧几里得距离中的最小距离。
可以参考july 的博客/v_july_v/article/details/7624837。
决策面函数()T g =x w x ,那么样本点x 到决策面的欧几里得距离是()g x w,我们可以通过缩放w ,使得第一类最接近决策面的样本点1x 满足是1()1g =x ,第二类最接近决策面的样本点2x 满足是2()1g =-x 。
也就是说优化问题变成了221()2()1J subject to Y =⋅≥T minimize w w w x , 这是一个凸优化的问题,可以用cvx 工具箱解决。
cvx 工具箱的下载地址:/cvx/download/,当样本不可分的时候,如下图:图3-1 svm 算法不可分情况图使用凸优化求解的时候会发生不可解的情况。
就需要把优化问题转换为2211()2()11,2,...,01,2,...,N i i i i J C Y i Nsubject to i N ξξξ==+⋅≥-=≥=∑T minimize w w w x 其中C 是一个常量,用于控制决策面的结果(具体效果见3.3节),这也是一个凸优化的问题,可直接使用cvx 工具箱求解。
3.2 程序代码function [ out, cvx_optval] = stpCvxSvm(data, nSample, dim, type)%% svm 的优化求解,使用cvx 工具箱% min ||w|| s.t. y .* (w' * x) >= 1 (x 是增广向量)%%% 输入% data 训练数据% nSample 训练的个数,是一个向量(每个类的个数)% dim 代表特征的个数% type 表示svm 类型,如果为1表示训练集完全可分,否则不可分%%% 输出% out 线性分类结果 out'x = y; (y 值为1,或-1)% cvx_optval cvx 输出结果%% 初始化数据n1 = nSample(1);n2 = nSample(2);n = n1 + n2;x = zeros(dim+1, n);y = zeros(n, 1);x(:, 1 : n1) = data{1, 1};x(:, n1+1 : n) = data{1, 2};y(1:n1, 1) = 1;y(n1+1 : n) = -1;%% 核心代码,调用cvx 工具箱,优化该QP 问题if type == 1cvx_beginvariable w(dim+1, 1);minimize( norm(w, 2));subject toy .* (x' * w)>= 1;cvx_endelsecvx_beginvariables w(dim+1, 1)rho(n);minimize( norm(w, 2) + 1 * sum(rho) ); subject toy .* (x' * w) >= 1 - rho;rho >= 0;cvx_endendout = w;end3.3运行结果及解释对于二维情况,在线性可分的时候,结果如下:图3-2 svm算法线性可分结果图可以看到,决策线(黄色线)位于两类的支持向量的中央。