第二章 距离分类器和聚类分析 2.1 距离分类器 一、模式的距离度量 通过特征抽取,我们以特征空间中的一个点来表示输入的模式,属于同一个类别的样本所对应的点在模式空间中聚集在一定的区域,而其它类别的样本点则聚集在其它区域,则就启发我们利用点与点之间距离远近作为设计分类器的基准。这种思路就是我们这一章所要介绍的距离分类器的基础。下面先看一个简单的距离分类器的例子。 例2.1  作为度量两点之间相似性的距离,欧式距离只是其中的一种,当类别的样本分布情况不同时,应该采用不同的距离定义来度量。 设为空间中的两个点,两点之间的距离,更一般的称为是范数,一个矢量自身的范数为矢量的长度。 作为距离函数应该满足下述三个条件: 对称性:; 非负性:,当且仅当; 三角不等式:。 满足上述条件的距离函数很多,下面介绍几种常用的距离定义: 设,为维空间中的两点 欧几里德距离:(Eucidean Distance)  街市距离:(Manhattan Distance)  明氏距离:(Minkowski Distance)  当时为欧氏距离,当时为街市距离。 角度相似函数:(Angle Distance)  为矢量和之间的内积,为矢量与之间夹角的余弦。 距离函数的定义形式还有很多,我们应该根据具体问题来选择一种适合的函数定义,使其能够真正反映模式之间的相似性。定义了范数的线性空间称为赋范线性空间。 二、单个标准样本的距离分类器 设有个类别,,每个类别有一个标准样本,现有一待识样本,则应该属于与其距离最小的标准样本代表的那一类,即:如果,则判别。  对于两类问题来说,就相当于用一个垂直平分两个标准样本点的连线的超平面将两类分开。 三、多个标准样本的距离分类器 如果每个类别只有一个训练样本,则只能以这个训练样本作为标准样本来设计距离分类器。然而一个样本很难反映出类别的总体分布,因此在实际设计中,一般都要尽可能多的搜集各个类别的样本,样本量的增加能够跟好的反映出类别的中体分布情况,这样带来的问题就是如何利用多个样本来设计距离分类器?下面介绍几种常用的方法。 平均样本法 此方法中,我们还希望以一个标准样本来代表每个类别,这样就可以采用单个标准样本距离分类器的准则来进行分类。下面的问题就是如何来确定这个标准样本,这实际上就是如何利用训练样本集来进行学习的问题。 在模式识别方法中,我们将经常遇到最优化问题,下面我们就以这个简单问题来介绍一下最优化方法的一些概念。 设有个类别,,第类有训练样本集,我们希望求得一个标准样本,训练样本。我们要寻找的标准样本实际上应该是一个距离训练样本集中所有样本的平均距离最小的一点,则一点最能够代表这个训练样本集。例如,如果类别样本的分布为一个球形的话,这一点应该是球的中心。 这一条件可以用下面的函数表示:,此函数称为目标函数。我们的目标就是要寻找到一个,使得最小。 以欧氏距离为例,,下面对的各维元素取偏导数:  则:。以矢量形式表示:。 平均样本法的特点是:1、算法简单;2、每个类别只需存储一个平均样本,存储量小;3、识别时只需计算次距离函数,计算量小;4、对类别样本的分布描述能力不强,效果不一定很好。 在单个样本的距离分类器中,实际上我们是定义了一个未知类别模式到某一类别的距离,这个距离就是待识模式与类别标准样本之间的距离:,然后以模式与类别的距离作为分类的判据。实际上在多个标准样本的问题中,我们还可以定义其它形式的模式与类别的距离。 平均距离法 已知类别的训练样本集为:,定义待识模式与类别的距离:  然后还是以与待识模式最近的类别作为识别结果。在平均距离法中,需要存储所有的训练样本,而且在识别时还要计算待识模式与每个训练样本的距离,所以计算量比较大。 最近邻法 最近邻法以与待识样本距离最近的标准样本点的类别作为分类类别。实际上相当于定义待识模式与类别的距离:  最近邻法也要存储和计算所有的训练样本,同时与平均距离法相比容易受到噪声的干扰,当与最近点为噪声时,就会导致误识。 最近邻法的改进: 平均样本法用一点代表一个类别,过分集中;最近邻法以类内的每一点代表类别,过于分散,在通常情况下可以采用折衷的办法,首先将每个类别的训练样本划分为几个子集,在各个子集中计算平均样本,每一个类别以几个子集的平均样本代表,采用最近邻法分类。(举例:红苹果,绿苹果),这样做的好处是,一方面可以减少存储量和计算量,同时还可以减小噪声的干扰,这是在实际系统使用比较多的方法。 -近邻法 -近邻法是另外一种减小噪声干扰的改进方法,它不是根据与未知样本最近的一个样本的类别来分类,而是根据最近邻的各样本点中多数点的类别来分类。方法如下: 计算与所有训练样本的距离; 对所有的从小到大排序; 统计前个中各类训练样本的个数,,必有; 取作为的类别。 -近邻法中,值得选择非常重要,太大则就会变成那一类的训练样本说多就分类到哪一类,太少则容易受到噪声的影响,当时,就变为了最近邻法。 2.2 聚类分析 在某些问题中,我们已知的只是一个训练样本集,而不知道样本集中每个样本的类别标号,这就需要我们首先将这些样本分成若干类,然后再用分好类的样本训练出相应的分类器。将未知类别的一组样本分成若干类的过程称为是聚类分析,也称为是无监督学习或无教师学习。 聚类分析的思路非常直观,也是根据各个带分类模式特征的相似程度来进行分类,将在特征空间中聚集在一起的样本点划分为一类。 聚类分析的方法可以分为三类:简单聚类法、系统聚类法和动态聚类法。 一、简单聚类法(试探法) 最近邻规则的简单试探法 设个待分类的模式,已知一个阈值(每个样本到其聚类中心的最大距离),分类到,类别中心分别为。 第一步:取任意的样本作为第一个聚类中心的初始值,例如:; 计算:, 若,,则增加一个新类别,取其中心为; 否则,将归入以为中心的类,重新计算。 第二步:设已有类别,其中心为, 计算:,; 若,且,则增加新类别,令; 否则,属于最近的类别,即,,并重新计算类的中心。 第步:设已有个类别,其中心为, 计算:,…,; 若,,则增加新类别,其中心; 否则,属于最近的一类,,; 重新计算第类的聚类中心。 例2.2-1 这种方法的好处是计算比较简单,缺点是对初始的第一个聚类中心的选择依赖性比较强,同时聚类效果还要受到阈值的影响。(图3.3-2,pp64)一般在实际问题中需要对不同的初始聚类中心和不同的阈值进行试探,直到得到一个满意的聚类结果为止。 最大最小距离算法 最大最小距离法的思路是:在样本集中以最大距离原则选取新的聚类中心,以最小距离原则进行模式归类。 已知个待分类的模式,阈值比例系数, 任选样本作为第一个聚类中心; 从样本集中选择距离最远的样本作为第二个聚类中心,,设定距离阈值:; 计算未被作为聚类中心的各样本与之间的距离,以其中的最小值作为该样本的距离: ,取; 若:,则相应的样本作为第三个聚类中心,,然后转5);否则,转6); 设存在个聚类中心,计算未被作为聚类中心的各样本到各聚类中心的最小距离:,然后寻找其中的最大值:,如果,则,转5);否则,转6); 按照最小距离原则,将所有样本分到个类别中。 例2.2-2 二、合并法(系统聚类法,Hierarchical Clustering Method) 系统聚类法的思路是首先以每一个样本自成一类,然后按照距离准则逐步合并,类别数由多到少,直到达到合适的类别数为止。 这里,我们在合并两个类别时,需要依据类与类之间的距离度量,首先我们来定义类与类之间的相似性度量。 最短距离法: 设和是两个聚类,两类之间的距离定义为:,为类的第个样本,为类的第个样本。为第类中所有样本与第类中所有样本之间的最小值。 最长距离法: 与最短距离法相似,两类之间的距离定义为:,为类的第个样本,为类的第个样本。为第类中所有样本与第类中所有样本之间的最小值。 类平均距离法: 两类之间的距离定义为:,和分别为、聚类中的样本数。 系统聚类算法:设有个样本待分类, 第一步:建立个初始类别,,其中。计算距离矩阵:,其中为与之间的距离; 第二步:寻找中的最小元素,合并相应的两个类别,建立新的分类:,重新计算距离矩阵。 第三步:重复第二步,直到满足类别数要求,或者的最小元素大于给定的阈值。 例2.3 合并法避免了聚类结果受初始聚类中心的影响,但是需要预先知道聚类的类别数,或者需要设定一个类间最小距离阈值。同时当样本数比较多时,计算量比较大。 三、动态聚类法(修改法) 动态聚类的思想是首先选择若干个样本点作为聚类中心,然后按照某种聚类准则使各样本点向各个中心聚集,从而得到初始分类;然后判断初始分类是否合理,如果不合理,则修改聚类中心,反复进行修改,直到分类合理为止。 动态聚类有多种算法,其中比较著名的是-均值算法和ISODATA算法。下面介绍其中的-均值算法(或称为-均值算法)。 设有个待分类样本,聚类为类,。 第一步:任选个初始聚类中心,例如选前个样本(称为旧聚类中心); 第二步:将每一个待分类样本按照最近邻准则分类,分别以旧聚点为标准样本的各类中去。 第三步:计算分类后各类的重心,称为新聚类中心:,,其中为类中的样本数; 第四步:检验是否分别等于,如果相等,则算法收敛,结束;否则用代替,返回第二步。 例2.4 -均值算法的结果也要受到所选的聚类中心的数目、初始聚类位置以及样本的几何性质的影响。 2.3 聚类结果评价 前面我们所介绍的几种聚类方法都存在着一定的缺陷,一般都要受到各种初始状态和各种预设的阈值影响,需要我们进行多次尝试之后才能得到满意的结果。这就需要有一个对聚类结果评价的方法,来帮助我们在多次尝试的结果种选择出一个满意的结果。同时如果这个评价准则建立好之后,也可以由程序来完成这个选择的任务。 常用的评价准则有: 类内距离方差:,可以用来衡量各个类别中的样本的平均离散程度,类内距离方差越小越好。 类间距离方差:,其中,为各个聚类中的平均矢量。类间距离方差可以用来衡量各个类别之间的离散程度,越大越好。 各类的样本数:一般情况要求各个类别中的样本数应该比较平均,避免出现某一类中样本数过多,或某一类中样本数过少的情况。 一般情况下,需要综合考虑几种评价准则,而不能只考虑其中的一项,同时还要有其它的条件限制,比如给定的聚类类别数等。例如,只考虑类内距离准则,则当每一个样本单独为一类时,准则最优;只考虑类间距离准则时,则所有样本聚为一类时,准则最优。 从聚类准则的角度来看,前集中聚类算法都是在某些条件限制下,对某个准则进行寻优。例如动态聚类法是在限定类别数的条件下,寻找到一个对样本集的划分方式,使得类内距离方差最小。但是各种聚类方法都是一种次优的搜索方法,不能保证最后的结果是一个最优解。如果要求最优解只能对所有的可能情况进行计算。但是当样本数比较多时,组合数很大,不可能对所有的组合进行遍历,比如在例2.4中,组合数为:,其中:。 近些年发展的一种求解上述类似寻优问题的算法是遗传算法,可以在一定程度上解决这类问题。