模式识别方法
决策理论方法又称统计方法,是发展较早也比较成熟的一种方法。被识别对象首先数字化,变换为适于计算机处理的数字信息。一个模式常常要用很大的信息量来表示。许多模式识别系统在数字化环节之后还进行预处理,用于除去混入的干扰信息并减少某些变形和失真。随后是进行特征抽取,即从数字化后或预处理后的输入模式中抽取一组特征。所谓特征是选定的一种度量,它对于一般的变形和失真保持不变或几乎不变,并且只含尽可能少的冗余信息。特征抽取过程将输入模式从对象空间映射到特征空间。这时,模式可用特征空间中的一个点或一个特征矢量表示。这种映射不仅压缩了信息量,而且易于分类。在决策理论方法中,特征抽取占有重要的地位,但尚无通用的理论指导,只能通过分析具体识别对象决定选取何种特征。特征抽取后可进行分类,即从特征空间再映射到决策空间。为此而引入鉴别函数,由特征矢量计算出相应于各类别的鉴别函数值,通过鉴别函数值的比较实行分类。

模式识别算法
1. K-Nearest Neighbor
K-NN可以说是一种最直接的用来分类未知数据的方法。简单来说,K-NN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。
实际上K-NN本身的运算量是相当大的,因为数据的维数往往不止2维,而且训练数据库越大,所求的样本间距离就越多。就拿我们course project的人脸检测来说,输入向量的维数是1024维(32x32的图,当然我觉得这种方法比较silly),训练数据有上千个,所以每次求距离(这里用的是欧式距离,就是我们最常用的平方和开根号求距法) 这样每个点的归类都要花上上百万次的计算。所以现在比较常用的一种方法就是kd-tree。也就是把整个输入空间划分成很多很多小子区域,然后根据临近的原则把它们组织为树形结构。然后搜索最近K个点的时候就不用全盘比较而只要比较临近几个子区域的训练数据就行了。

当然,kd-tree有一个问题就是当输入维数跟训练数据数量很接近时就很难优化了。所以用PCA(稍后会介绍)降维大多数情况下是很有必要的
Bayes Classifier贝叶斯方法一篇比较科普的中文介绍可以见pongba的平凡而神奇的贝叶斯方法:
实际实现一个贝叶斯分类器之后再回头看这篇文章,感觉就很不一样。
在模式识别的实际应用中,贝叶斯方法绝非就是标正比于prior*likelihood这个公式这么简单,一般而言我们都会用正态分布拟合likelihood来实现。用正态分布拟合是什么意思呢?贝叶斯方法式子的右边有两个量,一个是prior先验概率,这个求起来很简单,就是一大堆数据中求某一类数据占的百分比就可以了,比如300个一堆的数据中A类数据占100个,那么A的先验概率就是1/3。第二个就是likelihood,likelihood可以这么理解:对于每一类的训练数据,我们都用一个multivariate正态分布来拟合它们(即通过求得某一分类训练数据的平均值和协方差矩阵来拟合出一个正态分布),然后当进入一个新的测试数据之后,就分别求取这个数据点在每个类别的正态分布中的大小,然后用这个值乘以原先的prior便是所要求得的后验概率了。贝叶斯公式中还有一个evidence,对于初学者来说,可能会一下没法理解为什么在实际运算中它不见了。实则上,evidence只是一个让最后标归一化的东西,而在模式分类中,我们只需要比较不同类别间标的大小,归一化反而增加了它的运算量。当然,在有的地方,这个evidence一定不能省,比如后文提到的GMM中,需要用到EM迭代,这时候如果不用evidence将标归一化,后果就会很可怕。
