




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模式识别结课论文题 目:模式识别中基于支持向量机算法分析学 院: 电气工程与信息工程学院 专 业: 电气工程 姓 名: 学 号: 指导教师: 教授 1支持向量机支持向量机是从线性可分情况下的最优分类面发展而来的,因此我们也从线性可分情况下的支持向量机思想开始讨论支持向量机的理论1.1线性支持向量机首先我们分析如下图的分类问题图1线性可分分类问题图1中包含两类共十个样本点,我们现在的目的是将其正确分开为两类,显然有许多直线能将两类样本点正确分开,所以我们需要讨论的是哪条分类直线更好一些。而最好的一条分类直线就是使分类间隔最大的直线,这条直线的求解方式如下。首先我们假定分类直线方程为 (1.1)我
2、们定义过两类样本点中离分类线最近点平行分类线的直线为支持直线,则支持直线方程为 (1.2)则两条支持直线之间的距离为,这样我们求最优分类线的问题就转化为求使取最大值的的问题。而分类问题的最基本要求是能够正确分类,因此样本点应该在如下区域中 (1.3)这样我们可以得到如下的最优化问题 (1.4)此时引入Lagrange函数得到(1.5)这样可以得到式(1.5)的对偶问题 (1.6)这是一个凸规划问题,我们根据KKT条件,假设得到该对偶问题的解为,那么 (1.7)选取中的一个正分量,据此计算 (1.8)构造分类超平面,由此求得决策函数 (1.9)其中 (1.10)这就是线性可分支持向量机的基本原理
3、。1.2 非线性支持向量机上面讨论的是最优和广义线性分类函数,要解决一个特征空间中的最优线性分类问题,我们只需知道这个空间中的内积运算即可。支持向量机的最主要特点还是解决非线性问题的能力,我们假设如下XOR问题图2非线性分类问题我们首先观察图2(a)中的分类问题,无法通过线性方法处理,因此我们需要寻找其他方法。假定,我们定义映射 (1.11)这样我们可以得到四个样本点的如下映射 (1.12)这样就形成了如图2(b)所示的空间关系,在这个三维空间上,分类问题成为了线性问题。这就是支持向量机处理非线性问题思想的简单表示,将该非线性问题通过函数映射到更高维的空间中,使其变为线性问题,继而在高维空间中
4、进行线性规划。具体算法如下给定训练集 (1.13)选取适当的从欧氏空间到Hilbert空间的变换,以及惩罚参数C>0。构造并求解如下的凸二次规划问题 (1.14)得解,选取,得到 (1.15)从而得到决策函数,其中。1.3 核函数我们在分析非线性支持向量机思想时,很容易发现变换在算法中的作用完全是通过内积和实现的,换句话说,变换总是以内积的形式出现,因此函数是很重要的,只要选定了该函数,则并不需要考虑变换而仍然可以得到决策函数。我们称这个函数为核函数。将核函数引入支持向量机之后,可以将式(1.14)改为如下的最优化问题 (1.16)得到的决策函数中这就是标准支持向量机(SVM),我们所讨
5、论的支持向量机就是这个模型。核函数的选取是支持向量机算法中十分重要的内容,只要满足mercer条件的函数均可以作为核函数使用,目前使用比较多的核函数有:线性核函数:K(x,y) = x*y;径向基核函数:K(x,y) = ;2 支持向量机分类算法的实现支持向量机算法是在训练样本的特征空间求取能把两类样本没有错误分开的最大间隔超平面,在数学上表示为一个凸二次规划的问题。也可以说算法求解的主要内容是通过求解二次规划(QP)问题,这个优化问题的求解是支持向量机算法的核心,可以说支持向量机的算法就得到了实现。前面所述支持向量机算法可以表示为在式(2.2)和式(2.3)的约束下求式(2.1)取最小值时的
6、拉格朗日乘子 为训练样本的个数。 (2.1) (2.2) (2.3)其中: 为n元列向量,是要求的拉格朗日乘子; 是一个正定矩阵; 是样本的所属类别,由1或一1组成的列向量;xi为训练样本。可以看出,求解支持向量机就是求解上述的一个二次规划问题,求解后得到拉格朗日乘子 ,也就求得了最大间隔超平面。求解这个二次规划问题需要深厚的数学功底数值计算方面的技能,在主流程序语言中实现算法又需要专业的计算机程序设计的知识。在MATLAB环境下求解这一问题会变得非常简单,这得益于MATLAB软件强大的优化工具箱,提供了一个求解二次规划的函数,可以直接调用。二次规划问题(quadratic programmi
7、ng)的标准形式为: subto Aeqx=beq 其中,H、A、Aeq为矩阵;f、b、beq、lb、ub、x为向量,其它形式的二次规划问题都可转化为标准形式。函数quadprog格式如下:x,fva1=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)其中H、f、A、b、Aeq、beq、lb、ub为标准形中的参数;x为求解得到的最优值,也就是二次规划的解析解;lb、ub分别为x的下界与上界,满足不等式约;Aeq、beq满足等约束条件Aeq*x=beq;x0为设置的初值,这个值是人为赋予x的值,一般x为零;fval为目标函数最小值,可以看出,支持向量机算法是一个标准的二次规划
8、问题; ,根据训练样本数据求出;f = -1;支持向量机算法没形式的不等式约束条件,所以A、b为空矩阵; ,beq=Y,实现A Y=0等式约束;Lb=0、ub=C,实现 不等式约束;x0=0,赋予A的初始值为零。样本数据已知,c是人工赋于的值。3实例说明及实验结果3.1实验程序代码 %定义核函数及相关参数nu = 0.2; % nu -> (0,1 在支持向量数与错分样本数之间进行折衷ker = struct('type','linear');% 构造两类训练样本 n = 50;randn('state',6);x1 = randn(2,n
9、);y1 = ones(1,n);x2 = 5+randn(2,n);y2 = -ones(1,n);figure;plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.');axis(-3 8 -3 8);title('C-SVC')hold on; X = x1,x2; %训练样本,d*n的矩阵,n为样本个数,d为样本维数Y = y1,y2; % 训练目标,1*n的矩阵,n为样本个数,值为+1或-1% -% 训练支持向量机ticsvm = svmTrain('svc_nu',X,Y,ker,nu);t_train = toc%寻找支持向量¿a = svm.a;epsilon = 1e-8; %如果小于此值则认为是0i_sv = find(abs(a)>epsilon); %支持向量下标plot(X(1,i_sv),X(2,i_sv),'ro');% -% 测试输出x1,x2 = meshgrid(-2:0.1:7,-2:0.1:7);rows,cols = size(x1);nt = rows*cols; % ²测试样本数Xt = resh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论