matlab-线性分类器的设计doc(共13页)_第1页
matlab-线性分类器的设计doc(共13页)_第2页
matlab-线性分类器的设计doc(共13页)_第3页
matlab-线性分类器的设计doc(共13页)_第4页
matlab-线性分类器的设计doc(共13页)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、线性分类器设计1 问题描述对“data1.m”数据,分别采用感知机算法、最小平方误差算法、线性SVM算法设计分类器,分别画出决策面,并比较性能。(注意讨论算法中参数设置的影响。)2 方法描述2.1 感知机算法线性分类器的第一个迭代算法是1956年由Frank Rosenblatt提出的,即具有自学习能力的感知器(Perceptron)神经网络模型,用来模拟动物或者人脑的感知和学习能力。这个算法被提出后,受到了很大的关注。感知器在神经网络发展的历史上占据着特殊的位置:它是第一个从算法上完整描述的神经网络,是一种具有分层神经网络结构、神经元之间有自适应权相连接的神经网络的一个基本网络。感知器的学习

2、过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限次迭代之后的收敛。感知器的基本模型结构如图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并不是一个已知的参数,故感知器算法

3、很重要的一个步骤即是寻找一个合理的决策超平面。故设这个超平面为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、算法在经过有限次迭代之后是收敛的,也就是说,根据(4)规则修正权向量w,可以让所有的特征向量都正确分类。采用感知器算法实现data1.m的数据分类流程如图2所示:图2 单层感知器算法程序流程MATLAB程序源代码如下:function Per1()clear all;close all;%样本初始化x1(1,1)= 0.1; x1(1,2)= 1.1;x1(2,1)= 6.8; x1(2,2)= 7.1;x1(3,1)= -3.5; x1(3,2)= -4.1;x1(4,1)= 2.0; x1(4,2)= 2.7;x1(5,1)= 4.1; x1(5,2)= 2.8;x1(6,1)= 3.1;

5、 x1(6,2)= 5.0;x1(7,1)= -0.8; x1(7,2)= -1.3;x1(8,1)= 0.9; x1(8,2)= 1.2;8.4 4.1; 4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2x2(1,1)= 7.1; x2(1,2)=;x2(2,1)= -1.4; x2(2,2)=;x2(3,1)= 4.5; x2(3,2)=;x2(4,1)= 6.3; x2(4,2)=;x2(5,1)= 4.2; x2(5,2)=;x2(6,1)= 1.4; x2(6,2)=;x2(7,1)= 2.4; x2(7,2)=;x2(8,1)= 2.5; x

6、2(8,2)=; for i=1:8 r1(i)=x1(i,1);end;for i=1:8 r2(i)=x1(i,2);end;for i=1:8 r3(i)=x2(i,1);end;for i=1:8 r4(i)=x2(i,2);end; figure(1);plot(r1,r2,*,r3,r4,o); hold on;%保持当前的轴和图像不被刷新,在该图上接着绘制下一图 x1(:,3) = 1;% 考虑到不经过原点的超平面,对x进行扩维x2(:,3) = 1;% 使x=x 1,x为2维的,故加1扩为3维 %进行初始化w = rand(3,1);% 随机给选择向量,生成一个3维列向量p =

7、 1; %p0非负正实数ox1 = -1;% 代价函数中的变量ox2 = 1;% 当x属于w1时为-1,当x属于w2时为1s = 1;% 标识符,当s=0时,表示迭代终止n = 0;% 表示迭代的次数w1 = 0;0;0; while s %开始迭代 J = 0; %假设初始的分类全部正确 j = 0;0;0; %j=ox*x for i = 1:45 if (x1(i,:)*w)0 %查看x1分类是否错误,在x属于w1却被错误分类的情况下,wx0 w1 = w; %分类正确,权向量估计不变 else %分类错误 j = j + ox1*x1(i,:);% j=ox*x。进行累积运算 J =

8、J + ox1*x1(i,:)*w;% 感知器代价进行累积运算 end end for i = 1:55 if (x2(i,:)*w)0 w1 = w; %分类正确,权向量估计不变 else %分类错误 j = j + ox2*x2(i,:);% j=ox*x。进行累积运算 J = J + ox2*x2(i,:)*w;% 感知器代价进行累积运算 end end if J=0 %代价为0,即分类均正确 s = 0; %终止迭代 else w1 = w - p*j;% w(t+1)=w(t)-p(ox*x)进行迭代 p=p+0.1;% 调整p n = n+1; %迭代次数加1 end w = w1

9、;% 更新权向量估计endx = linspace(0,10,5000);% 取5000个x的点作图y = (-w(1)/w(2)*x-w(3)/w(2);% x*w1+y*w2+w0=0,w=w1;w2;w0plot(x,y,r);% 用红线画出分界面disp(n);% 显示迭代的次数axis(1,12,0,8)% 设定当前图中,x轴范围为1-12,为y轴范围为0-8end所得的结果如图3所示:图3 感知器算法分类图2.2 最小二乘法基于分类判别的思想,我们期望w1类的输出为y1 = -1,w2的输出为y2 = 1。但实际的输出和期望并不总是相等的。运用最小二乘法(Least Squares

10、 Methods),可以让期望输出和真实的输出之间的均方误差最小化,即:(5)要使得J(w)最小,需要满足正交条件(orthogonality condition):(6)可以得到:(7)就是求得的加权向量。其中:(8)称为自相关矩阵;(9)称为期望输出和输入特征向量的互相关。通过最小均方误差算法实现线性分类的程序流程如图4所示:图4 最小均方误差算法程序流程图MATLAB程序源代码如下:function MSE1()clear all;close all; %样本初始化%数据同上一算法,略; hold on;% 保持当前的轴和图像不被刷新,在该图上接着绘制下图 %初始化函数y1 = -one

11、s(45,1);% w1类的期望输出为-1y2 = ones(55,1);% w2类的期望输出为1x1(:,3) = 1;% 考虑到不经过原点的超平面,对x进行扩维x2(:,3) = 1;% 使x=x 1,x为2维的,故加1扩为3维x = x1;x2; % 使x矩阵化y = y1;y2; % 使y矩阵化display(x) % 显示x矩阵display(y) % 显示y矩阵R = x*x; %求出自相关矩阵E = x*y; %求出期望输出和输入特征向量的互相关w = inv(R)*E%求权向量估计值 x = linspace(0,10,5000);% 取5000个x的点作图y = (-w(1)

12、/w(2)*x-w(3)/w(2);%x*w1+y*w2+w0=0,w=w1;w2;w0plot(x,y,r);% 用红线画出分界面axis(1,12,0,8);% 设定当前图中,x轴范围为1-12,为y轴范围为0-8disp(w);% 显示权向量 end所得结果如图5所示:图5 最小二乘法分类图2.3 支撑矢量机(SVM)SVM是针对线性可分情况进行分析,对于线性不可分的情况,通过非线性映射算法将低维输入线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间可以采用线性算法对样本的非线性特征进行线性分析。而且,SVM是基于最优化理论的算法,在特征空间中构造最优超平面,且这个最优

13、超平面是全局最优的,同时,支持向撑矢量机的最优超平面分类器是唯一的。在线性可分的情况下,我们想要设计一个超平面,使得所有的训练向量正确分类:(10)由于感知器算法可能收敛于任何可能的解,显然,这样设计得到的超平面不唯一的。最优超平面是使得每一类数据与超平面的距离最近的向量与超平面之间的距离最大的这样的平面,或者说,最优超平面是使得超平面在每一个方向上与w1类、w2类中各自最近的点距离都相同。这样,我们设计的分类器的容量就更大,两类数据被错误分类的概率更小;同时当面对未知数据的分类时,最优超平面可靠度最高。最优超平面可以通过求解二次优化问题来获得:(11)满足约束条件:(12)在样本数目特别大的

14、时候,可以将二次规划问题转化为其对偶问题:(13)(14)(15)满足约束条件:(16)这里,是拉格朗日算子,是最优超平面的法向量,是最优超平面的偏移量。在这类优化问题的求解中,根据karush-kuhn-tucker条件,求得的解必满足:(17)从式中我们可以发现,对于=0这样的点对于样本分类没有任何作用,只有0时的样本才对分类起作用,这些样本就称为支撑矢量。通过SVM算法实现分类的程序流程如图6所示:图6 SVM算法程序流程图MATLAB程序源代码如下:function SVM()close all;clear all; %数据初始化 略hold on; % 保持当前的轴和图像不被刷新,在

15、该图上接着绘制下图 y1 = ones(45,1); %对于每一个xi,yi为相应的标识器,对于w1为1,对于w2为-1y2 =-ones(55,1);X = x1;x2; %x矩阵化Y = y1;y2; %y矩阵化l = zeros(100,1);% 对lambda进行初始化 A=;b=; %不存在线性不等式约束,故为空Aeq=Y;beq=0; %定义线性等式约束lb=zeros(100,1); %定义上下界约束,有lambda大于等于0lambda = fmincon(Optimization,l,A,b,Aeq,beq,lb);%用fmincon函数来求解非线性多变量约束问题,其中Opt

16、imization为等价最优任务w = X*(lambda.*Y);% 求解支撑矢量 s = find(lambda 0); %提取非0的元素位置下标构成新矩阵sum=0; %初始化累计变量N = length(s) ; %算出非0元素的个数for i=1:N; j=s(i); sum=sum+Y(j) - X(j,:)*w;% 由条件 wx+w0=y 隐含得到,其中y为正负1endw0 = sum/N;% 计算w0的值,w0是通过所有条件的均值计算得出的 x = linspace(0,10,5000);% 取5000个x点画图y = (-w(1)/w(2)*x-w0/w(2); %x*w1+

17、y*w2+w0=0,w=w1;w2;w0plot(x,y,r);% 用红线标出分界面axis(1,12,0,8);% 设定当前图中,x轴范围为1-12,为y轴范围为0-8display(w);% 显示出权向量display(w0);% 显示出w0endfunction fl = Optimization(lambda) %用此函数来描述最优化问题fl = (-1*ones(100,1)*lambda+1/2*(lambda.*Y)*X*X*(lambda.*Y);%最优化问题的等价函数endSVM算法分类效果如图7所示:图7 支撑矢量机算法分类图3 比较与分析感知机分类方法分类错误的数据个数为

18、0个;最小二乘法分类方法分类错误的数据个数为3个,且错误较明显;支撑矢量机分类方法分类错误的数据个数为2个,错误不明显。可知,感知机分类方法的分类误差最小,最小二乘法分类方法分类误差最大。感知机分类方法决策面的优劣程度取决于w的选取,所得的超平面可能不唯一,无法判断最优解,感知机分类方法可以再有限次的迭代内求出问题的解。最小二乘法分类方法在处理较大的训练样本时,计算量较大,导致误差偏大。由于该方法是基于最小平方误差来进行分类的,所以不能保证最小样本错误分类数,即不保证一定能将样本完全正确分开。支撑矢量机分类方法可以对样本目标进行较为精准的最优分类。对同一目标样本进行分类,感知机分类方法分类用时

19、为0.443814 seconds,最小二乘法分类用时为0.116585 seconds,支撑矢量机分类方法分类用时2.200510 seconds。可见,使用最小二乘法分类方法的运算量最小,运算速度最快,使用支撑矢量机分类方法运算量最大,运算速度最慢。FirstTrain=75,145;80,150;85,155;SecondTrain=55,105;60,100;65,95;ThirdTrain=110,100;100,100;110,80;Mean=mean(FirstTrain);mean(SecondTrain);mean(ThirdTrain);Study=80,125;Study

20、Type=zeros(size(Study,1);fori=1:size(Study,1)n,m=min(pdist2(Study(i,:),Mean);StudyType(i)=m;Endfigurescatter(FirstTrain(:,1),FirstTrain(:,2),b);text(Mean(1,1),Mean(1,2),第一类,Color,k);holdon;scatter(SecondTrain(:,1),SecondTrain(:,2),o,b);text(Mean(2,1),Mean(2,2),第二类,Color,k);scatter(ThirdTrain(:,1),Th

21、irdTrain(:,2),d,b);text(Mean(3,1),Mean(3,2),第三类,Color,k);fori=1:size(Study,1)ifStudyType(i)=1text(Study(i,1)+1,Study(i,2),第一类,Color,r);elseifStudyType(i)=2text(Study(i,1)+1,Study(i,2),第二类,Color,r);elseifStudyType(i)=3text(Study(i,1)+1,Study(i,2),第三类,Color,r);endscatter(Study(i,1),Study(i,2),*,g);for

22、j=1:size(Mean,1)ifj=StudyType(i)plot(Study(i,1),Mean(j,1),Study(i,2),Mean(j,2),-,Color,m);elseplot(Study(i,1),Mean(j,1),Study(i,2),Mean(j,2),-.);endendendtitle(最小距离法分类结果)xlabel(x1);ylabel(x2)%训练样本FirstTrain=75,145;80,150;85,155;SecondTrain=55,105;60,100;65,95;ThirdTrain=110,100;100,100;110,80;Mean=mean(FirstTrain);mean(SecondTrain);mean(ThirdTrain);Study=80,125;StudyType=zeros(size(Study,1); for i=1:size(stud

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论