《模式识别》学习笔记(一)

目录

一、绪论

1、模式

2、模式识别系统

2.1、数据采集及预处理:

2.2、特征生成:

2.3、特征提取与选择:

2.4、识别分类:

2.5、分类器设计:

3、模式识别方法:

3.1 有监督学习与无监督学习

3.2鉴别模型与产生式模型

二、距离分类器

1、距离分类器

1.1 距离分类的一般形式

1.2 模板匹配

1.3 最近邻分类

1.4 最近邻分类器的加速

1.5、K-近邻算法

2、距离和相似性度量

1、距离

2、相似性度量

3、分类器性能评价

1、评价指标

2、评价方法

 


前言

《模式识别》学习笔记主要参照哈尔滨工业大学出版社出版的《模式识别(第2版)》一书的内容,主要用于自己复习,如有侵权请速联系。

由于本人先自我学习的《数据挖掘与分析》和《机器学习》,所以在学习《模式识别》之前对此概念没有一个足够的认识,感觉《模式识别》讲述的可能是数据挖掘中的关联规则模式,与《机器学习》中的内容不搭边。但简单翻看一遍后便有了新的感悟,我们在人工智能领域所涉及到的所有项目,其实都可以归结为“模式识别”项目,例如,图像分类,自然语言处理等。而《机器学习》侧重于对数学概念的解析,《模式识别》侧重于整个工程方面的架构解析——前者偏向理论细节,后者偏向实践过程。

在这打一波广告,个人感觉哈工大出版社出版的《模式识别(第二版)》一书写的确实好,主要是读的很舒服,而且书中配套有代码,加深了对概念的理解。

一、绪论

1、模式

粗略地说,存在于外部世界中每一个要识别的对象都可以称作是一个模式;更准确地说,模式并不是指识别对象本身,外部世界的事务只有通过人的视觉、听觉、嗅觉、感触器官的感知才能够为人所认识,而模式则是指计算机通过对信号的采样,量化和处理之后得到的关于识别对象描述的一组属性几何,例如视觉识别对象的颜色、大小、形状,听觉识别对象的声音在各个频率上的能量分布等。

2、模式识别系统

模式识别系统完成的工作是从外部世界获取一个所要识别对象的数据,经过分析和处理之后辨别其类别属性。完整的识别系统一般需要包括识别和训练两个过程。

识别过程:数据采集及预处理->特征生成->特征提取与选择->识别分类->分类结果

 ------------------------------------------------------------------------------------- ↑ ----------------------------

训练过程:数据采集及预处理->特征生成->特征提取与选择->分类器设计

2.1、数据采集及预处理:

数据采集主要是将外部世界需要识别的对象转为计算机可识别的输入。预处理则对采集的样本进行滤波降噪。

2.2、特征生成:

经过数据采集得到的数据量一般比较大,很难直接作为输入进行识别,这就需要我们对原始信息进行处理,找出特征,分类器再根据这些特征来判别识别对象的类别属性。例如,我们想要无损测量苹果的糖度,我们便可以直接想到可以用光谱对苹果表皮进行近红外的漫反射光谱测量,那么我们就可以选择光谱数据作为样本的特征。

2.3、特征提取与选择:

采用什么样的特征对对象进行识别是模式识别系统设计的一个关键问题,但特征往往是与实际应用相关的,不同的分类问题需要不同的特征。通常做法是尽量多地从原始数据中生成与问题相关的特征,然后选择出最有效的特征,或对这些特征进行组合得到一组更有下的特征,这个过程一般称作特征的提取与选择。例如,我们有一套苹果表皮近红外漫反射光谱样本的数据,如果直接把谱图作为输入进行训练,则表示我们的特征值有400多个,而样本一共才200个,远小于特征数,这时我们就需要对原数据进行主成分分析降维。主成分分析的结果就可以作为是我们样本较为合理的特征。个人感觉2与3之间的关联性很强,合并为一条又不妥,如果改为“特征的生成选择->特征提取”会不会更容易理解一点呢。

2.4、识别分类:

经过特征生成和特征提取与选择之后,每个被识别的对象都被描述为一组特征,这组特征一般被称为“特征矢量”。每个对象所对应的特征矢量可以看作是特征空间中的一个点,识别分类环节根据特征矢量判别对象所属的类别,这个过程可以看作是采用一定数学方式实现从“特诊空间”到“类别空间”的映射。

2.5、分类器设计:

对于简单的问题,可以采用人工的方式设计分类器,决定什么样的特诊矢量应该映射为哪一个类别。然而,对于一个复杂的实际问题来说,人工方式设计分类器往往是低效的,特征别是当特征的数量很多、特征空间的维度很高时,很难通过人的直观感觉设计出一个合适的分类器。在训练过程中设计者需要提供大量有效的识别对象的实例(这些实例一般被称作“训练样本”),而识别系统则采用一定的训练和学习算法在这些训练样本的基础之上自动完成分类器的设计。

3、模式识别方法:

3.1 有监督学习与无监督学习

有监督学习又被称为有教师学习,需要知道训练样本集合中的每个样本具体属于哪个类别;无监督学习又被称为无教师学习,只知道训练样本集合中的每个样本,而不知道每个训练样本所属的类别,甚至在有些情况下所属类额的数量也是未知的。

3.2鉴别模型与产生式模型

如何构造和学习分类函数g(x)是模式识别研究的关键问题,识别方法根据设计思想的不同大致分为:鉴别模型与生产式模型。

鉴别模型认为不同类别的样本在特征空间中处于不同的区域,这类方法在训练过程中通过输出样本集学习分类函数,使得g(x)对于不同区域的样本输出不同的值,依据判别函数的输出值来判断待识别样本处于特征空间中的哪个类别的区域。根据分类函数g(x)复杂程度不同,鉴别模型又可分为线性和非线性两种。

产生式模型看作是分布在特征空间中的一个随机矢量,每个类别的模式可能出现在空间中的任意一点,只不过在某些区域出现的概率比较大,某些区域出现的概率比较小(甚至为0).针对出现在特征空间中某一点的待识别模式,产生式模型根据该点属于哪个类别的概率更大来判别其类别属性。

二、距离分类器

识别对象与某个类别是否相似是人在做出判断时的一个基本依据,根据这个思路,也可以利用相似性来构造用于计算机识别的分类器,这就是本章将要介绍的“距离分类器”。只要能够判断样本与类别之间的相似程度或者样本与样本之间的相似程度,据可以构造出一个距离分类器,所以说这是一种最简单的分类方法。

1、距离分类器

1.1 距离分类的一般形式

距离分类器的目的是将需要识别的样本x分类到与其最相似的类别中,因此如果能够度量x与每一个类别的相似程度s(x,wi),i=1,2,……n,那么就可以采用如下方式进行分类,如果j = argmax(x,wi),则判别x∈wj。这表示如果j是在所有i的可能取值中使得s(x,wi)最大者,则判别x属于wj类。其中,argmax函数在直角坐标系下返回的是y值最大点所对应的x的值。

1.2 模板匹配

由于使用距离度量样本之间的以及样本与类别之间的相似程度是一种最常用的方法,因此本章介绍的分类器被称为“距离分类器”。每个类别的代表样本有时被称为“模板”,相应的分类方法称为“模板匹配”。

1.3 最近邻分类

模板匹配用待识别样本与代表每个类别的一个样本之间的距离度量它与类别之间的相似程度。大多数的模式识别问题中,每一个类别可以得到很多训练样本,当每个类别存在多于一个训练样本时,如何来度量待识别样本于类别之间的相似程度呢?

每个类别已知的所有训练样本可以表示成一个集合,样本于类别之间的相似程度可以用样本与所有类别中最近样本的距离来度量。实际上可以采用一种更简单的方法来识别:首先计算待识别样本x与所有训练样本的距离,寻找与x距离最近的训练样本y,然后以y所属的类别分类x,这个过程一般称为”最近邻分类“。

实践证明,当训练样本数量较多时,最近邻分类器对于很多识别问题可以取得良好的分类效果。然而,最近邻分类器也存在着许多明显的不足:首先,最近邻算法的计算量较大,每次识别时x需要同所有的n个样本计算距离,而模板匹配只需要同c个代表计算,因此最近邻算法的识别速度一般较慢;同时,最近邻算法需要保存所有的训练样本,占用的存储空间也比较大O(nd),实际的训练样本中可能存在噪声,某些样本特征的生成有偏差,或者被标注了错误的类别标签,而最近邻算法对x类别的判断只依赖于与其距离最近的训练样本y,当y为噪声样本时,对x的分类就会发生错误。

1.4 最近邻分类器的加速

提高最近邻分类器识别速度的根本方法时减少待识别样本与训练样本之间距离的计算次数。

1、减少为单模板匹配

减少最近邻算法计算量最直接的方式是用每个类别的训练样本学习出一个模板来代表这个类别。

单模板匹配的学习过程非常简单,只需要计算每个类别训练样本的均值并将其作为该类别的匹配模板,识别时采用与匹配模板同样的过程就可以得到识别结果。

2、减少为多模板匹配问题

当每个类别样本分布的区域都接近于球形,区域的大小相差不多,不同类别样本之间的距离较远时,用一个模板代替类别的所有训练样本进行识别可以取得很好的分类效果,但当样本的分布不满足这些条件时,情况可能就会完全不同了。在一个细长的区域内,如果简单的分别用均值代替两个类别的训练样本进行模板匹配,及时时训练样本也有很多会被错误分类。

对于这种情况,一个有效的办法是将每个类别的训练样本根据距离的远近划分为若干个子集,子集中的样本分别计算均值,每个均值都作为一个模板,用多个模板来代表每个类别的训练样本。

在多模板匹配过程中,样本需要同所有的模板进行距离计算,计算量要多余但模板匹配的次数,单远小于所有n个训练样本匹配的最近邻分类算法。采用多模板匹配算法需要解决的一个关键问题是如何对每个类别的训练样本集合进行合理的划分,每个类别应该划分为几个子集,每个子集应该包含哪些训练样本。如果样本的特征数量比较少,肉眼往往就可以找到对样本集合的合理划分。然而实际问题中样本往往处于一个高维的特征空间,人很难直观地观察出合理的划分方式,这种情况下一种常用的方法就是聚类算法来得到对样本集合的有效划分。

3、剪辑近邻

使用一个或多个模板代表所有的训练样本虽然能够提高分类器的计算效率,降低计算复杂度,但并不能保证识别的准确率。

降低最近邻分类器计算复杂度的另外一种方法是在训练阶段对样本集合进行“剪辑”,删除掉某些“无用”的样本,减少训练样本的数量,这样就可以在识别过程中不必同所有的训练样本计算距离。

剪辑近邻算法在保证分类准确率的前提下降低了最近邻算法计算的复杂度。

1.5、K-近邻算法

最近邻算法对样本分类依据的是与其距离最近的训练样本的类别。当训练集中存在噪音样本时,个别样本可能被标记了错误的类型标签,或者样本的某些特征在测量时掺杂了误差使得其在特征空间中发生了位置了偏移,当待识别样本以噪声样本为最近邻时,对其类别的判断就会发生错误。

1、K-近邻算法

K-近邻算法是对最近邻算法的一个自然推广,样本类别的判断不再只依赖与其最近的1个样本,而是由距离最近的K个样本投票来决定。显然K=1时,K-近邻算法退化为最近邻算法

K-近邻算法中参数K的选择对识别结果有很大的影响,K值选择过小,算法的性能接近于最近邻算法,K值选择过大,距离较远的样本也会对分类效果产生作用,这就会导致分类误差,适合的K值需要根据具体问题来确定。

K-近邻算法的一个不足是对于非平衡样本集来说,与待识别样本x最近的K个近邻样本数多的类别总是占优势,这样往往会引起分类的错误。当然,对样本数量较大时,识别效率不高

2、K-D树

K-D树时一种提高K-近邻算法计算效率的手段,在查找时将时间复杂度从n降低到logn。

K-D树是一种二叉树,它的构建是一个递归的过程,首先从样本集中选择一个样本保存在根节点上,然后选择一维特征,将训练样本集中所有选择的特征小于跟几点的放入左子树,大于的放入右子树,分别对左右子树递归的调用建树,直到子集中只包含一个样本位置。

利用K-D树的深度优先搜索可以快速地检索出需要识别的样本x处在哪个特征空间的哪个子区域中,首先样本的一维特征与根节点的比较,判断是进入左子树还是右子树,接着递归的进行判断。每次在与节点比较时,不仅判断下一步进入哪个分支,同时计算x与节点样本的距离,保存距离最近者,经过k次比较之后就可以得到最相近的样本。

K-D树经过Ologn复杂度的比较和判断就可以确定待识别样本x所处的区域,并且同时得到搜索过程经过的系欸但中与其最近的样本。但是这个样本并不能保证x的最近邻(因为我们是靠某一一维特征建立的子树)。为了找到真实的最近邻,K-D树搜索在到达叶节点之后需要有一个回溯的过程。K-D树的最近邻搜索算法中由于需要进行回溯,因此时间复杂度是大于二叉树深度优先搜索的Ologn。

2、距离和相似性度量

1、距离

我们上面所采用的距离都是欧式距离,但是现实生活中都是距离并不是都适用。

除了欧式距离,我们还会采用街市距离,且切比雪夫距离,闵可夫斯基距离,加权距离,汉明距离等等

2、相似性度量

如果认为两个样本之间的相似程度只与它们之间的夹角有关,而与矢量的长度无关,那么就可以用矢量夹角的余弦来度量相似性。

3、分类器性能评价

1、评价指标

1、识别错误率

2、拒识率

3、敏感性、特异性、ROC曲线(真真,真假,假真,假假)

4、召回率和准确率

2、评价方法

1、二分法

2、交叉验证

3、Bootstrap方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值