支持向量机的介绍.docx

上传人:王** 文档编号:1016307 上传时间:2024-03-15 格式:DOCX 页数:17 大小:103.89KB
下载 相关 举报
支持向量机的介绍.docx_第1页
第1页 / 共17页
支持向量机的介绍.docx_第2页
第2页 / 共17页
支持向量机的介绍.docx_第3页
第3页 / 共17页
支持向量机的介绍.docx_第4页
第4页 / 共17页
支持向量机的介绍.docx_第5页
第5页 / 共17页
支持向量机的介绍.docx_第6页
第6页 / 共17页
支持向量机的介绍.docx_第7页
第7页 / 共17页
支持向量机的介绍.docx_第8页
第8页 / 共17页
支持向量机的介绍.docx_第9页
第9页 / 共17页
支持向量机的介绍.docx_第10页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《支持向量机的介绍.docx》由会员分享,可在线阅读,更多相关《支持向量机的介绍.docx(17页珍藏版)》请在优知文库上搜索。

1、支持向量机(SVM)介绍目标本文档尝试解答如下问题:如何使用OPenCV函数CvSVMhrain训练一个SVM分类器,以及用CvSVIVkpredict测试训练结果。什么是支持向量机(SVM)?支持向量机(SVM)是一个类分类器,正式的定义是一个能够将不同类样本在样本空间分隔的超平面。换句话说,给定一些标记(Iabel)好的训练样本(谧督式学习),SVM算法输出一个最优化的分隔超平面。如何来界定一个超平面是不是最优的呢?考虑如下问题:假设给定一些分属于两类的2维点,这些点可以通过直线分割,我们要找到一条最优的分割线.Note在这个例如中,我们考虑卡迪尔平面内的点与线,而不是高维的向量与超平面。

2、这一简化是为了让我们以更加直觉的方式建立起对SVM概念的理解,但是其根本的原理同样适用于更高维的样本分类情形。在上面的图中,你可以直觉的观察到有多种可能的直线可以将样本分开。那是不是某条直线比其他的更加适宜呢?我们可以凭直觉来定义一条评价直线好坏的标准:距离样本太近的直线不是最优的,因为这样的直线对噪声敏感度高,泛化性较差。因此我们的目标是找到一条直线,离所有点的距离最远。由此,SVM算法的实质是找出一个能够将某个值最大化的超平面,这个值就是超平面离所有训练样本的最小距离。这个最小距离用SVM术语来说叫做间隔(margin)。概括一下,最优分割超平面最大化训练数据的间隔。如何计算最优超平面?下

3、面的公式定义了超平面的表达式:f(x)=o+位X,叫做权重向量,BO叫做偏置(bias)0Seealso关于超平面的更加详细的说明可以参考T.Hastie,R.Tibshirani和J.H.Friedman的书籍ElementsofStatisticalLearning,section4.5(SeperatingHyperplanes)o最优超平面可以有无数种表达方式,即通过任意的缩放B和%。习惯上我们使用以下方式来表达最优超平面o+=l式中X表示离超平面最近的那些点。这些点被称为支持向量*。该超平面也称为*canonical超平面.通过几何学的知识,我们知道点X到超平面(B,BO)的距离为:

4、孑*o+distance=Mp特别的,对于canonical超平面,表达式中的分子为1,因此支持向量到canonical超平面的距离是o+1distancesupportVeCtOrS=ipii=jjjj刚刚我们介绍了间隔(margin),这里表示为M,它的取值是最近距离的2倍:M=ll最后最大化M转化为在附加限制条件下最小化函数L(B)0限制条件隐含超平面将所有训练样本Xi正确分类的条件,minL()=-2subjecttoyi(xi+o)1i,式中Ui表示样本的类别标记。这是一个拉格朗日优化问题,可以通过拉格朗日乘数法得到最优超平面的权重向量B和偏置%。源码include#includei

5、nclude4usingnamespacecv;678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152intmain()/Dataforvisualrepresentationintwidth=512,height=512;Matimage=Mat:zeros(height,width,CV8UC3);/Setuptrainingdatafloatlabels4=1.0,-1.0,-1.0,-1.0;MatIabelsMat(3,1,CV_32FC1,labels);f

6、loattrainingData42=501,10,255,10,501,255,10,501;MattrainIngDataMat(3,2,CV32FC1,trainingData);/SetupSVMsparametersCvSVMParamsparams;params,svmtype=CvSVM:C_SVC;params,kernel=CvSVM:LINEAR;params,termcrit=CvTermCriteria(CVTERMCRITITER,100,le-6);/TraintheSVMCvSVMSVM;SVM.train(traiFiingDataMat,IabelsMat,M

7、at(),Mat(),params);Vec3bgreen(0,255,0),blue(255,O,O);/ShowthedecisionregionsgivenbytheSVMfor(inti=0;iimage,rows;+i)for(intj=0;jimage,cols;+j)MatSampleMat=(Mat(1,2)i,j);floatresponse=SVM.predict(sampleMat);if(response=1)image.at(j,i)二green;elseif(response二二-1)image.at(j,i)二blue;)/Showthetrainingdatai

8、ntthickness=-1;intIineType=8;thickness,thickness,thickness,circle(image,Point(501,10),5,Scalar(0,0,0),IineTyPe);circle(image,Point(255,10),5,Scalar(255,255,255),IineType);circle(image,Point(501,255),5,Scalar(255,255,255),IineTyPe);circle(image,Point(10,501),5,Scalar(255,255,255),thickness,51IineType

9、);5556 Showsupportvectors57 thickness=2;58 IineType=8;intc=SVM.getsupportvectorcount();6061 for(inti=0;i2)。这个参数定义在CVSVMParamS.svm_type属性中.NoteCvSVM:C_SVC类型的重要特征是它可以处理非完美分类的问题(及训练数据不可以完全的线性分割)。在本例中这一特征的意义并不大,因为我们的数据是可以线性分割的,我们这里选择它是因为它是最常被使用的SVM类型。oSVM核类型.我们没有讨论核函数,因为对于本例的样本,核函数的讨论没有必要。然而,有必要简单说一下核函数

10、背后的主要思想,核函数的目的是为了将训练样本映射到更有利于可线性分割的样本集。映射的结果是增加了样本向量的维度,这一过程通过核函数完成。此处我们选择的核函数类型是CvsvM-LINEAR表示不需要进行映射。该参数由CVSVMParamS.kereLtyPe属性定义。O算法终止条件SVM训寮的过程就是一个通过迭代方式解决约束条件下的二次优化问题,这里我们指定一个最大迭代次数和容许误差,以允许算法在适当的条件下停止计算。该参数定义在CVTermCriteria结构中。3 .训练支持向量机调用函数CvSVhZLtrain来建立SVM模型。CvSVMSVM;SVM.train(trainingData

11、Mat,IabelsMat,Mat(),Mat(),params);4 .SVM区域分割函数CVSVMpredict通过重建训练完毕的支持向量机来将输入的样本分类。本例中我们通过该函数给向量空间着色,及将图像中的每个像素当作卡迪尔平面上的一点,每一点的着色取决于SVM对该点的分类类别:绿色表示标记为1的点,蓝色表示标记为-1的点。Vec3bgreen(0,255,0),blue(255,0,0);for(inti=0;iimage,rows;+i)for(intj=0;jimage,cols;+j)(MatSampleMat=(Mat_(1,2)i,j);floatresponse=SVM.predict(sampleMat);if(response=1)image.at(j,i)=green;elseif(response=-1)image.at(j,i)-blue;)5 .支持向量这里用了几个函数来获取支持向量的信息。函数CVSVM:SUPPortVeCtOrCOUE输出支持向量的数量,函数CvSVtVhqetSUDPortVeCtOr根据输入支持向量的索引来获取指定位置的支持向量。通过这一方法我们找到训练样本的支持向量并突出显示它们。intc-SVM

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!