中科大模式识别大作业miniproject汇总.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模式识别miniproject实验报告报告人:李南云学号:S期:2016.12.23数据分析在此简要的说明一下数据情况,给定数据集分为train和test两个data文件,train.data是11列8285行,意味着有8285个样本,矩阵的最后一列是该列所对应的样本类别。根据统计,train数据前466个样本均为1类,而后7819个样本均为-1类,所以该分类器为二分类问题。MATLAB中用importdata()读取数据,并将样本和其所属类别分开来,样本为trnset,所属类别为trnclass,train数据用于训练分类器。Test.data是11列2072行,同样也意味着有2072个样本,最后一列为该列所对应样本类别,test数据前117为1类,后1955个数据为-1类。同样读取数据后,分为tstset和tstclass两个矩阵,前者代表2072个样本,后者代表所对应样本的类别,我们需要将train所训练好的分类器应用在tstset样本上,输出分类结果tstclass1,将其与tstclass相比较,计算每个类别的正确率和总的正确率。算法介绍本次实验采用了SVM(support vector machines)分类模型,由于数据线性不可分而且在实际问题中数据也大都线性不可分,所以本次试验采取的线性不可分SVM方法,即将数据向高维空间映射,使其变得线性可分。本实验选取的二分类算法,SVC_C。下面先以线性分类器为例,来引入SVM算法的一些概念和处理流程,如图1所示,假设C1和C2是需要区分的类别,而在二维平面中它们的样本如图,中间的一条直线就是一个线性分类函数,由图中可以看出,这个线性分类函数可以完全的将两类样本区分开来,我们就称这样的数据是线性可分的,否则则为线性不可分,本实验中所采用的数据在二维空间里分布如图2和图3所示(红色标注分类为1的样本,蓝色标注为分类为-1的样本),明显线性不可分。图1图2图3设图1中线性函数为g(x)=wx+b(x是样本的向量表示),那么当有一个样本xi需要判别的时候,就可以看g(xi)的值,若g(xi)0就判别为C1类,若g(xi)0就判别为C2类(等于的时候就拒绝判断)。此时也等价与给函数g(x)附加一个符号函数sgn(),即f(x)=sgn[g(x)]是我们真正的判别函数,中间那条线的表达式是g(x)=0,即wx+b=0,我们也把这个函数叫做分类面。在此我们就不对几何间隔、二次规划问题、支持向量等做详细的介绍了。SVM在线性分类器上做了重大改进,即为——核函数!线性分类器只能对线性可分的样本进行处理,但是实际中很多样本都是线性不可分的,那么这种线性可分的分类器就不适用了,是否有某种办法,让线性不可分的数据变得线性可分呢?实际上是有的!我们可以用一个二维平面中的分类问题作为例子,如图4图4横轴短点a和b之间红色的部分里的所有点为正类,两边的黑色点为负类,我们明显找不到符合要求的线性函数将两类数据区分开来,但是可以找到一条曲线例如图5中的曲线来判断所属类别,它的函数表达式可以写为g(x)=c0+c1x+c2x2。图5明显它不是一个线性函数,但是我们可以新建一个向量a和y1= ,=这样g(x)就可以转化为f(y)=a,y,即:g(x)=f(y)=a*y在任意维度的空间中,这种形式的函数都是一个线性函数,因为自变量y的次数不大于1.这样原来在二维空间中线性不可分的问题映射到四维空间中,就变成了线性可分的,这也就形成了我们最初想解决线性不可分问题的基本思路——向高维空间转化,使其变得线性可分。而转化的最关键部分就是找打x对于y的映射方法,遗憾的是假设x’是由x变换得到的高维变量,在此维度下,问题线性可分,那么只需要计算f(x’)=w’,x’+b的值来进行分类,即只关心高维空间里内积w’,x’的值。而从理论上来说x’是由x变换得来的,因此广义上可以吧它叫做x的函数,而w’是常量,它是一个低维空间向量里的常量w经过x与x’之间相同的变换得到的,所以给定了一个w和w’的值,我们就可以有一个确定的f(x’)的值与其对应。那么是否能有这样一种的函数K(w,x),它接受低维空间的输入值,却能够计算出高维空间的内积w’,x’?如果真的有这种函数,那么当给定了一个低维空间的输入x之后,使g(x)=K(w,x)+b和f(x’)=w’,x’+b这两个函数的计算结果就完全一样,我们就不用费力的去找映射关系了。而上述的K(w,x)却是存在,它被称为核函数(核,kernel),而且只要是满足了Mercer条件的函数,就可以作为核函数。核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。那么就有两个问题:既然有很多核函数,针对具体问题我们应该怎么选择呢?如果使

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档