值得注意的是,层次聚类方法是不可逆的,也就是说,当通过凝聚式的方法将两组合并后,无法通过分裂式的办法再将其分离到之前的状态,反之亦然。另外,层次聚类过程中调查者必须决定聚类在什么时候停止,以得到某个数量的分类。最后,必须记住,在不必要的情况下应该小心使用层次聚类方法。最好用于有潜在层次结构的数据上。 数据挖掘研究院
凝聚式方法是层次聚类中被广泛使用的方法。过程中,会产生一系列的分划:最初的是n个单成员的类,最后的划分是一个包含全部个体的单个类。凝聚式聚类有很多方法,但基本的操作是相似的,在每一步中,将距离最近的类或者个体融合成一个类。方法之间的差异只是由不同的个体和组之间,或组与组之间的距离的计算方法而带来的。下面介绍一些常用的方法。
单连锁(single linkage),又称最近邻(nearest neighbour)方法。这个方法使用数据的相似度矩阵或距离矩阵,定义类间距离为两类之间数据的最小距离。这个方法不考虑类结构。可能产生散乱的分类,特别是在大数据集的情况下。因为它可以产生chaining现象,当两类之间出现中间点的时候,这两类很有可能会被这个方法合成一类。单连锁也可以用于分裂式聚类,用来分开最近邻距离最远的两组。 数据挖掘研究院
全连锁(complete linkage),又称最远邻(furthest neightbour)方法。同样从相似度矩阵或距离矩阵出发,但定义距离为两类之间数据的最大距离。同样不考虑到类的结构。倾向于找到一些紧凑的分类。
(组)平均连锁(group average linkage),又称为 UPGMA(Unweighted Pair-Group Methodusing the Average approach)。跟前两个方法一样,从相似度矩阵或距离矩阵出发,但定义距离为类间数据两两距离的平均值。这个方法倾向于合并差异小的两个类。(距离)介于单连锁和全连锁之间。它考虑到了类的结构,产生的分类具有相对的鲁棒性。
质心连锁(centroid linkage),又称为UPGMC(Unweighted Paire-Group Method using Centroid approach)。不同于前面的方法,它从距离矩阵和原始数据出发,一般定义距离为平方欧几里得距离(可以使用其他距离测度方法,但是可能会对缺少原始数据的阐释,比如“质心”的概念),此距离为个体与组的质心(所有成员的原始数据均值),或组与组的质心距离。(待补充)
中值连锁(median linkage),又称为WPGMC(Weighted Pair-Group Method using Centroid approach。跟前面的UPGMC不同的是,在计算组的质心时,将合成该组的两部分(组组,个体和组?)按照相同的权重计算,也就是说算出的质心实际上是组成该组的两部分的质心的均值。(待补充) 数据挖掘研究院
Ward′s method,又称离差平方和法(error sum of squares criterion)。这个方法倾向于在每一步使组内的离差平方和的增量最小。所谓的
E=sum_{m=1}^{g} E_{m}
Where
E_{m}=sum_{l=1}^{n_{m}}sum_{k=1}^{p}(x_{ml,k}-ar{x}_{m,k})^{2}
其中,
ar{x}_{m,k}=(1/n_{m})sum_{l=1}^{n_{m}}x_{ml,k} 数据挖掘研究院
是第m组中第k个变量的均值,x_{ml,k}是原始数据中第m组(m=1,...,g)
其他的方法包括,加权的平均值连锁(WPGMA),相似于平均值连锁,但是在计算类间距的时候给距离加上了相当于类中成员个数倒数的权重。平方和法(sum of squares)是类似于Ward′s method的方法,但是它基于每个类的平方和而不是聚合的类的平方和的增值。
Lance和William给出了一个灵活的方法,定义了一个递归公式。公式中的参数
d_{k(ij)}=alpha_{i}d_{ki}+alpha_{j}d_{kj}+eta*d_{ij}+gamma|d_{ki}-d_{kj}|
其中d_{ij}是类i和类j之间的距离。Lance和William定义参数满足
alpha_{i}+alpha_{j}+eta=1,alpha_{i}=alpha_{j},eta<1,gamma=0 数据挖掘研究院
而前面的六种方法对应于不同的alpha,eta,和gamma取值。具体见P
各种凝聚聚类方法有利有弊。比如连锁现象(chain)出现在两个明显分开的类间插入中间点时的情况,这种现象出现在单连锁情况下。虽然单连锁无法还原原来的类结构,但它在找出特例上可以起到作用。全连锁和平均连锁同样无法还原类结构,且倾向于产生球形的类。在凝聚聚类时,选择合适的类的个数和画出原始数据的图像尤为重要。
经验研究表明,当数据中潜在的类的成员数相似时,Ward′s method表现良好,但在成员数不同时表现不好,此时质心法或全连锁可以给出满意的结果。在聚类的稳定性方面,全连锁要强于单连锁,后者对数据中出现例外时的敏感度较高。在应用到实际问题上时,质心法和中值连锁由于产生的分类不符合层次体系所以被抛弃,而Ward′s method,全连锁,和平均值连锁值得推荐。没有一种方法是特别出色的,且这些方法都会给出不同的分类结果。有两点得记住,单连锁拥有很好的数学性质,易于编程,但是结果不佳;Ward′s method效果不错但是会产生不必要的球形的类。 数据挖掘研究院
分裂式方法跟凝聚式方法的方向相反,从一个整类出发,一步一步细化。由于每一步时对一个k元素的类,需要考虑2^{k}-1种分划情况,所以运算量非常大,而显得不实用。但是对于二进制数据来说,一些简化方法使得分裂式方法变得可行。比如单元分裂方法(monothetic divisive methods)在每一步基于一个变量进行划分,而多元方法(polythetic methods)则使用全部的变量。分裂式方法的有点在于研究者可以把注意力集中在数据的结构上面。 数据挖掘实验室
单元分裂方法在每一步选出一个变量对整个类进行细分,“拥有”这个值的归为一类,“没有”的为另一类。N其选取的标准可能是类的同质性,或是该变量与其他变量的关联性。前者常用信息量(information content)C作为量度。信息量的计算如下 数据挖掘研究院
C=pnlog{n}-sum_{k=1}^{p}[f_klog{f_k}-(n-f_k)log(n-f_k)]
其中n为个体数量,p为变量数,f_k是“拥有”第k个变量的个体数目。选取变量时倾向于选择使信息量降低最多的那个。
另外的标准则是变量之间的关联性。选择关联性最大的那个变量进行划分。关联性的计算是这样的:对于两个变量V_i和V_j,计同时为1时的频度为a,同时为零时为d,i为1而j为0时为c,i为0而j为1时为b,可以通过P68公式4.6-4.1
多元方法则同时考虑全部变量。它需要用到邻近度矩阵。它先找出类中距离其他成员最远的那个(距离其他成员的距离的平均),构成分离组 (splinter group),然后计算余下所有的成员距离分离组的距离,和它距主组中其他成员的距离,如果前者更小,则其将被并入分离组,重复直到找不到这样的个体。
应用层次聚类方法时,需要考虑到以下几点:1,聚类过程的图像化表示;2 ,树状图的比较;3,方法的数学性质;4,分划的选择;5,计算算法。下面将分别讨论这几点。
1,树状图和其他树图(如无根树)。在树状图里,节点代表一个类,而茎长 (或高度)则代表(一般是两个)合并的类之间的距离。如果试图在树图中表现聚类的顺序,可以不需要将茎延伸至零高度线。茎上没有表明其他数学性质的树又称为无权或有序树。节点上的名字称为标记(label),内节点一般不标。用来代表内节点的类成员称为标本(exemplar),或中心点(centrotype)。通常定义这个成员为类成员中拥有最大类内相似性(或最小的类内相异性)。Medoid是一种特别的例子,它定义为拥有最小类内绝对值距离的成员。要记住的是因为树状图可以有2^{n-1}种表示,如何优化树状图的样子是个需要考虑的问题。
在树状图的表示上人们作了不少扩展。比如树墙图(espalier),途中水平线上显示类之间的相对同质性和分离性;金字塔图(pyramid),允许出现重叠的类;累加树(additive or path length tree)则用节点之间的路径长度来表示两点之间的邻近度,其中一个例子就是phlip程序做出的nj树( neighbour-joining),这种树亦可做成无根树。
2,树图间的比较和衡量其失真度。常常用来做树图比对或树图与邻近度矩阵比对的方法是,cophenetic correlation和Goodman and Kruskal′s gamma 。 数据挖掘研究院
前者利用cophenetic矩阵,矩阵元是两个样本被归为一类时,所在节点在树图中的高度。cophenetic correlation是对应的cophenet
另外的非参数的关联性度量是Goodman and Kruskal′s gamma,定义为 数据挖掘实验室
(S_{+}-S_{-})/(S_{+}-S_{-}) 数据挖掘实验室
其中,S_{+}和S_{-}分别是一致和不一致的个数。对于矩阵比较时的一致和不一3,层级法的数学性质。首先是ultrametic性质,比较简单的描述是,对于任意三个点间的三个距离,其中最大的两个值相等。不符合这个性质的层级方法会在树状图里出现翻转。翻转并不一定带来坏处,比如调查者的目的不是完整的层级结构而是某个特定的划分,而且它可以提示那个地方没有清晰的结构。质心法和中值法都会产生翻转。这会给层级聚类的结果的解释带来麻烦。空间保守性质,单连锁会产生空间压缩(space contraction),全连锁会产生空间膨胀( space dilation),而像平均值连锁则符合空间保守(space conservation)。空间保守性质简言之就是说,到合并的类的距离介于到原先各组分的距离之间。 Fisher和Van Ness提出了一些容许性性质。比如(k-group)well-structure
4,分划的选择。如果调查者关心的不是层级结构,而是想得到一个分类,那么就必须决定分类的数量。非正式的方法是从树状图入手,在某个特定的“高度 ”切割树状图得到分组。而正式的方法包括下一章讨论的优化方法,和专门基于层级聚类性质的方法。后者包括:
- upper tail rule,基于树状图中不同融合级别的相对大小,具体的说,就是在选择第一个满足下面这个条件的分组j:
alpha_{j+1}>ar{alpha}+k*s_{alpha}其中alpha_0,到alpha_{n-1}是对应于得到n,n-1,...,1个类的融合级别,。ar{alpha} 和s_{alpha}是之前j融合级的平均和无偏标准差。k是一个常数。Mojena建议k取值在2.75-3.50,而Milligan建议1.25。 - 第二个方法是使用于QC(质量控制)中的方法,基于一个移动的平均过程。从得到j=r to j=n-2个分组的聚类阶段中,选择第一个满足下面条件的分组,
alpha_{j+1}>ar{alpha}+L_j+b_j+k*s_j其中,ar{alpha} and s_j跟前面的方法一样,但是是基于t值的。L_j and b_j是向上的均值矫正。(L_j is the ′trend lag′ , in QC jargon, wual under certain simplifying assumptions to (r-1)b_j/2, where b_j is the moving least-squares slope of the fusion levels)。
5,层级算法。层级算法不同于层级方法,对于一种层级聚类方法,可以使用多种算法来得到相同的结果。一种全局算法是直接优化算法(direct optimizing algorithms),比如吝啬树(parsimonious tree),找一个层级树中级数最少的。在邻近度矩阵中有数据缺失时这种算法比较有用。另外像前面提到的Lance和 Williams的递归公式也可以用于算法,但其计算复杂度是n^2log(n),在
层次聚类算法是实际应用中聚类分析的支柱。在各种软件包中都能找到它的身影,而且使用简单。调查者需要考虑:1,邻近度的量度方法;2,聚类方法; 3,类的数量。层次聚类在使用中遇到的困难是,没有一个聚类方法可以推荐,因为一些有着很好数学性质(像单连锁)的方法,常常不能产生可以按常识解释的结果。而且选定划分时最好的方法也不明确。当不需要探究层级结构时,当需要找到一个对数据合适的划分时,下一章的方法更值得推荐。而一些传统的层级聚类方法带来的问题可以被第六章里提到的基于模型的技术克服。

