转载 层次聚类doc.docx
《转载 层次聚类doc.docx》由会员分享,可在线阅读,更多相关《转载 层次聚类doc.docx(10页珍藏版)》请在冰豆网上搜索。
转载层次聚类doc
转载层次聚类
层次聚类算法HierarchicalClusteringAlgorithms基本工作原理
给定要聚类的N的对象以及N*N的距离矩阵(或者是相似性矩阵),层次式聚类方法的基本步骤(参看S.C.Johnsonin1967)如下:
1.将每个对象归为一类,共得到N类,每类仅包含一个对象.类与类之间的距离就是它们所包含的对象之间的距离.
2.找到最接近的两个类并合并成一类,于是总的类数少了一个.
3.重新计算新的类与所有旧类之间的距离.
4.重复第2步和第3步,直到最后合并成一个类为止(此类包含了N个对象).
根据步骤3的不同,可将层次式聚类方法分为几类:
single-linkage,complete-linkage以及average-linkage聚类方法等.
single-linkage聚类法(也称connectedness或minimum方法):
类间距离等于两类对象之间的最小距离,若用相似度衡量,则是各类中的任一对象与另一类中任一对象的最大相似度。
complete-linkage聚类法(也称diameter或maximum方法):
组间距离等于两组对象之间的最大距离。
average-linkage聚类法:
组间距离等于两组对象之间的平均距离。
average-link聚类的一个变种是R.D'Andrade(1978)的UCLUS方法,它使用的是median距离,在受异常数据对象的影响方面,它要比平均距离表现更佳一些.这种层次聚类称为"凝聚"法,由于它迭代合并所有分类。
也有一种"划分"层次聚类法,与"凝聚"相反,它先将所有对象放在同一类中,并不断划分成更小的类,划分法一般很少使用。
这两个网页特别值得一看。
讲的非常好。
这些天研究了一下层次聚类,偶尔发现了这个网址。
下面是其他网页的一些关于层次聚类的内容。
参考一下
层次聚类方法是不可逆的,也就是说,当通过凝聚式的方法将两组合并后,无法通过分裂式的办法再将其分离到之前的状态,反之亦然。
另外,层次聚类过程中调查者必须决定聚类在什么时候停止,以得到某个数量的分类。
最后,必须记住,在不必要的情况下应该小心使用层次聚类方法。
最好用于有潜在层次结构的数据上。
凝聚式方法是层次聚类中被广泛使用的方法。
过程中,会产生一系列的分划:
最初的是n个单成员的类,最后的划分是一个包含全部个体的单个类。
凝聚式聚类有很多方法,但基本的操作是相似的,在每一步中,将距离最近的类或者个体融合成一个类。
方法之间的差异只是由不同的个体和组之间,或组与组之间的距离的计算方法而带来的。
下面介绍一些常用的方法。
单连锁(singlelinkage),又称最近邻(nearestneighbour)方法。
这个方法使用数据的相似度矩阵或距离矩阵,定义类间距离为两类之间数据的最小距离。
这个方法不考虑类结构。
可能产生散乱的分类,特别是在大数据集的情况下。
因为它可以产生chaining现象,当两类之间出现中间点的时候,这两类很有可能会被这个方法合成一类。
单连锁也可以用于分裂式聚类,用来分开最近邻距离最远的两组。
全连锁(completelinkage),又称最远邻(furthestneightbour)方法。
同样从相似度矩阵或距离矩阵出发,但定义距离为两类之间数据的最大距离。
同样不考虑到类的结构。
倾向于找到一些紧凑的分类。
(组)平均连锁(groupaveragelinkage),又称为UPGMA(UnweightedPair-GroupMethodusingtheAverageapproach)。
跟前两个方法一样,从相似度矩阵或距离矩阵出发,但定义距离为类间数据两两距离的平均值。
这个方法倾向于合并差异小的两个类。
(距离)介于单连锁和全连锁之间。
它考虑到了类的结构,产生的分类具有相对的鲁棒性。
质心连锁(centroidlinkage),又称为UPGMC(UnweightedPaire-GroupMethodusingCentroidapproach)。
不同于前面的方法,它从距离矩阵和原始数据出发,一般定义距离为平方欧几里得距离(可以使用其他距离测度方法,但是可能会对缺少原始数据的阐释,比如"质心"的概念),此距离为个体与组的质心(所有成员的原始数据均值),或组与组的质心距离。
(待补充)
中值连锁(medianlinkage),又称为WPGMC(WeightedPair-GroupMethodusingCentroidapproach。
跟前面的UPGMC不同的是,在计算组的质心时,将合成该组的两部分(组组,个体和组?
)按照相同的权重计算,也就是说算出的质心实际上是组成该组的两部分的质心的均值。
(待补充)
Ward′smethod,又称离差平方和法(errorsumofsquarescriterion)。
这个方法倾向于在每一步使组内的离差平方和的增量最小。
所谓的离差平方和定义为
E=sum_{m=1}^{g}E_{m}
WhereE_{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),第l个个体(l=1,.,n_{m}),第k个变量(k=1,.,p)的数值。
具体描述见P61。
其他的方法包括,加权的平均值连锁(WPGMA),相似于平均值连锁,但是在计算类间距的时候给距离加上了相当于类中成员个数倒数的权重。
平方和法(sumofsquares)是类似于Ward′smethod的方法,但是它基于每个类的平方和而不是聚合的类的平方和的增值。
Lance和William给出了一个灵活的方法,定义了一个递归公式。
公式中的参数变化对应前面常间的那些方法。
这个公式给出类k和由类i类j合成的类(ij)之间的距离为:
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},eta1,gamma=0
而前面的六种方法对应于不同的alpha,eta,和gamma取值。
具体见P63表4.2。
各种凝聚聚类方法有利有弊。
比如连锁现象(chain)出现在两个明显分开的类间插入中间点时的情况,这种现象出现在单连锁情况下。
虽然单连锁无法还原原来的类结构,但它在找出特例上可以起到作用。
全连锁和平均连锁同样无法还原类结构,且倾向于产生球形的类。
在凝聚聚类时,选择合适的类的个数和画出原始数据的图像尤为重要。
经验研究表明,当数据中潜在的类的成员数相似时,Ward′smethod表现良好,但在成员数不同时表现不好,此时质心法或全连锁可以给出满意的结果。
在聚类的稳定性方面,全连锁要强于单连锁,后者对数据中出现例外时的敏感度较高。
在应用到实际问题上时,质心法和中值连锁由于产生的分类不符合层次体系所以被抛弃,而Ward′smethod,全连锁,和平均值连锁值得推荐。
没有一种方法是特别出色的,且这些方法都会给出不同的分类结果。
有两点得记住,单连锁拥有很好的数学性质,易于编程,但是结果不佳;Ward′smethod效果不错但是会产生不必要的球形的类。
分裂式方法跟凝聚式方法的方向相反,从一个整类出发,一步一步细化。
由于每一步时对一个k元素的类,需要考虑2^{k}-1种分划情况,所以运算量非常大,而显得不实用。
但是对于二进制数据来说,一些简化方法使得分裂式方法变得可行。
比如单元分裂方法(monotheticdivisivemethods)在每一步基于一个变量进行划分,而多元方法(polytheticmethods)则使用全部的变量。
分裂式方法的有点在于研究者可以把注意力集中在数据的结构上面。
单元分裂方法在每一步选出一个变量对整个类进行细分,"拥有"这个值的归为一类,"没有"的为另一类。
N其选取的标准可能是类的同质性,或是该变量与其他变量的关联性。
前者常用信息量(informationcontent)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.10来计算。
单元方法有以下好处:
1,对于新的成员容易聚类;2.可以解决数据缺失的问题,比如用关联性最高的那个变量来代替;3.每一步分类基于哪些变量都是可见的。
但是缺点是如果数据中有不常见的变量,可能会使该数据归到错误的类中。
多元方法则同时考虑全部变量。
它需要用到邻近度矩阵。
它先找出类中距离其他成员最远的那个(距离其他成员的距离的平均),构成分离组(splintergroup),然后计算余下所有的成员距离分离组的距离,和它距主组中其他成员的距离,如果前者更小,则其将被并入分离组,重复直到找不到这样的个体。
应用层次聚类方法时,需要考虑到以下几点:
1,聚类过程的图像化表示;2,树状图的比较;3,方法的数学性质;4,分划的选择;5,计算算法。
下面将分别讨论这几点。
1,树状图和其他树图(如无根树)。
在树状图里,节点代表一个类,而茎长(或高度)则代表(一般是两个)合并的类之间的距离。
如果试图在树图中表现聚类的顺序,可以不需要将茎延伸至零高度线。
茎上没有表明其他数学性质的树又称为无权或有序树。
节点上的名字称为标记(label),内节点一般不标。
用来代表内节点的类成员称为标本(exemplar),或中心点(centrotype)。
通常定义这个成员为类成员中拥有最大类内相似性(或最小的类内相异性)。
Medoid是一种特别的例子,它定义为拥有最小类内绝对值距离的成员。
要记住的是因为树状图可以有2^{n-1}种表示,如何优化树状图的样子是个需要考虑的问题。
在树状图的表示上人们作了不少扩展。
比如树墙图(espalier),途中水平线上显示类之间的相对同质性和分离性;金字塔图(pyramid),允许出现重叠的类;累加树(additiveorpathlengthtree)则用节点之间的路径长度来表示两点之间的邻近度,其中一个例子就是phlip程序做出的nj树(neighbour-joining),这种树亦可做成无根树。
2,树图间的比较和衡量其失真度。
常常用来做树图比对或树图与邻近度矩阵比对的方法是,copheneticcorrelation和GoodmanandKruskal′sgamma。
前者利用cophenetic矩阵,矩阵元是两个样本被归为一类时,所在节点在树图中的高度。
copheneticcorrelation是对应的cophenetic矩阵之间的积乘相关性(相关系数-R:
cor)。
一般可以将矩阵展成向量再计算。
另外的非参数的关联性度量是GoodmanandKruskal′sgamma,定义为
(S_{+}-S_{-})/(S_{+}-S_{-})
其中,S_{+}和S_{-}分别是一致和不一致的个数。
对于矩阵比较时的一致和不一致,定义为一对成对数据间的比较。
3,层级法的数学性质。
首先是ultrametic性质,比较简单的描述是,对于任意三个点间的三个