您好,欢迎访问三七文档
层次聚类方法万义飞Page2概要层次聚类方法将数据对象组成一棵聚类树。根据层次分解是以自底向上(合并)还是自顶向下(分裂)方式,层次聚类方法可以进一步分为凝聚的和分裂的。一种纯粹的层次聚类方法的质量受限于:一旦合并或分裂执行,就不能修正。也就是说,如果某个合并或分裂决策在后来证明是不好的选择,该方法无法退回并更正。Page3层次聚类方法一般来说,有两种类型的层次聚类方法:•凝聚层次聚类:采用自底向上策略,首先将每个对象作为单独的一个原子簇,然后合并这些原子簇形成越来越大的簇,直到所有的对象都在一个簇中(层次的最上层),或者达到一个终止条件。绝大多数层次聚类方法属于这一类。输入:n个对象,终止条件簇的数目k。输出:k个簇,达到终止条件规定簇数目。(1)将每个对象当成一个初始簇;(2)REPEAT(3)根据两个簇中最近的数据点找到最近的两个簇;(4)合并两个簇,生成新的簇的集合;(5)UNTIL达到定义的簇的数目;•分裂层次聚类:采用自顶向下策略,首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一个簇,或者达到某个终止条件,例如达到了某个希望的簇的数目,或者两个最近的簇之间的距离超过了某个阈值。输入:n个对象,终止条件簇的数目k。输出:k个簇,达到终止条件规定簇数目。(1)将所有对象整个当成一个初始簇;(2)FOR(i=1;i≠k;i++)DOBEGIN(3)在所有簇中挑出具有最大直径的簇C;(4)找出C中与其它点平均相异度最大的一个点p并把p放入splintergroup,剩余的放在oldparty中;(5)REPEAT(6)在oldparty里找出到最近的splintergroup中的点的距离不大于到oldparty中最近点的距离的点,并将该点加入splintergroup。(7)UNTIL没有新的oldparty的点被分配给splintergroup;(8)splintergroup和oldparty为被选中的簇分裂成的两个簇,与其它簇一起组成新的簇集合。(9)END.Page4Page5例子下图描述了一种凝聚层次聚类算法和一种分裂层次聚类算法对一个包含五个对象的数据集合{a,b,c,d,e}的处理过程。Step0Step1Step2Step3Step4bdceaabdecdeabcdeStep4Step3Step2Step1Step0agglomerativedivisive图1对数据对象{a,b,c,d,e}的凝聚和分裂层次聚类Page6层次聚类步骤初始,凝聚层次聚类算法将每个对象自为一簇,然后这些簇根据某种准则逐步合并,直到所有的对象最终合并形成一个簇。•例如,如果簇C1中的一个对象和簇C2中的一个对象之间的距离是所有属于不同簇的对象间欧氏距离中最小的,则C1和C2合并。在分裂层次聚类算法中,所有的对象用于形成一个初始簇。根据某种原则(如,簇中最近的相邻对象的最大距离),将该簇分裂。簇的分裂过程反复进行,直到最终每个新簇只包含一个对象。在凝聚或者分裂层次聚类方法中,用户可以定义希望得到的簇数目作为一个终止条件。Page7树状图通常,使用一种称作树状图的树形结构表示层次聚类的过程。它展示出对象是如何一步步分组的。图2显示图1的五个对象的树状图。图2数据对象{a,b,c,d,e}层次聚类的树状图表示Page8簇间距离四个广泛采用的簇间距离度量方法如下,其中|p-p'|是两个对象或点p和p'之间的距离,mi是簇Ci的均值,而ni是簇Ci中对象的数目。•最小距离:•最大距离:•均值距离:•平均距离:Page9簇间距离最小距离最大距离均值距离平均距离Page10当算法使用最小距离衡量簇间距离时,有时称它为最近邻聚类算法。此外,如果当最近的簇之间的距离超过某个任意的阈值时聚类过程就会终止,则称其为单连接算法。当一个算法使用最大距离度量簇间距离时,有时称为最远邻聚类算法。如果当最近簇之间的最大距离超过某个任意阈值时聚类过程便终止,则称其为全连接算法。Page11单连接算法例子先将五个样本都分别看成是一个簇,最靠近的两个簇是3和4,因为他们具有最小的簇间距离D(3,4)=5.0。第一步:合并簇3和4,得到新簇集合1,2,(34),5Page12单连接算法例子更新距离矩阵:D(1,(34))=min(D(1,3),D(1,4))=min(20.6,22.4)=20.6D(2,(34))=min(D(2,3),D(2,4))=min(14.1,11.2)=11.2D(5,(34))=min(D(3,5),D(4,5))=min(25.0,25.5)=25.0原有簇1,2,5间的距离不变,修改后的距离矩阵如图所示,在四个簇1,2,(34),5中,最靠近的两个簇是1和5,它们具有最小簇间距离D(1,5)=7.07。Page13单连接算法例子Page14单连接算法例子Page15单连接算法例子最小和最大度量代表了簇间距离度量的两个极端。它们趋向对离群点或噪声数据过分敏感。使用均值距离和平均距离是对最小和最大距离之间的一种折中方法,而且可以克服离群点敏感性问题。尽管均值距离计算简单,但是平均距离也有它的优势,因为它既能处理数值数据又能处理分类数据。Page16层次聚类方法的困难之处①层次聚类方法尽管简单,但经常会遇到合并或分裂点选择的困难。这样的决定是非常关键的,因为一旦一组对象合并或者分裂,下一步的处理将对新生成的簇进行。②不具有很好的可伸缩性,因为合并或分裂的决定需要检查和估算大量的对象或簇。Page17层次聚类的改进一个有希望的方向是集成层次聚类和其他的聚类技术,形成多阶段聚类。在下面的内容中会介绍下面这类的方法:①BIRCH:首先用树结构对对象进行层次划分,其中叶节点或者是低层次的非叶节点可以看作是由分辨率决定的“微簇”,然后使用其他的聚类算法对这些微簇进行宏聚类。Page18BIRCH方法BIRCH方法(BalancedIterativeReducingandClusteringUsingHierarchies)通过集成层次聚类和其他聚类算法来对大量数值数据进行聚类。其中层次聚类用于初始的微聚类阶段,而其他方法如迭代划分(在后来的宏聚类阶段)。它克服了凝聚聚类方法所面临的两个困难:①可伸缩性;②不能撤销前一步所做的工作。BIRCH使用聚类特征来概括一个簇,使用聚类特征树(CF树)来表示聚类的层次结构。这些结构帮助聚类方法在大型数据库中取得好的速度和伸缩性,还使得BIRCH方法对新对象增量和动态聚类也非常有效。Page19聚类特征(CF)考虑一个n个d维的数据对象或点的簇,簇的聚类特征是一个3维向量,汇总了对象簇的信息。定义如下CF(clusteringfeature)=n,LS,SS其中,n是簇中点的数目,LS是n个点的线性和(即),SS是数据点的平方和(即)。聚类特征本质上是给定簇的统计汇总:从统计学的观点来看,它是簇的零阶矩、一阶矩和二阶矩。niix1niix12Page20使用聚类特征,我们可以很容易地推导出簇的许多有用的统计量。例如,簇的形心x0,半径R和直径D分别是:其中R是成员对象到形心的平均距离,D是簇中逐对对象的平均距离。R和D都反映了形心周围簇的紧凑程度。nLSnxinix10nxxSLnSSnRnii210222)()1(222)1(2)(11nnSLnSSnnDnjjinixxPage21使用聚类特征概括簇可以避免存储个体对象或点的详细信息。我们只需要固定大小的空间来存放聚类特征。这是空间中BIRCH有效性的关键。聚类特征是可加的。也就是说,对于两个不相交的簇C1和C2,其聚类特征分别为CF1=n1,LS1,SS1和CF2=n2,LS2,SS2,合并C1和C2后的簇的聚类特征是CF1+CF2=n1+n2,LS1+LS2,SS1+SS2Page22例子假定在簇C1中有三个点(2,5),(3,2)和(4,3)。C1的聚类特征是:CF1=3,(2+3+4,5+2+3),(22+32+42,52+22+32)=3,(9,10,(29,38))假定C1和第2个簇C2是不相交的,其中CF2=3,(35,36),(417,440)。C1和C2合并形成一个新的簇C3,其聚类特征便是CF1和CF2之和,即:CF3=3+3,(9+35,10+36),(29+417,38+440)=6,(44,46),(446,478)Page23CF树CF树是一棵高度平衡的树,它存储了层次聚类的聚类特征。图3给出了一个例子。根据定义,树中的非叶节点有后代或“子女”。非叶节点存储了其子女的CF的总和,因而汇总了关于其子女的聚类信息。CF树有两个参数:分支因子B和阈值T。•分支因子定义了每个非叶节点子女的最大数目。•而阈值参数给出了存储在树的叶节点中的子簇的最大直径。•这两个参数影响结果数的大小。Page24CF树图3CF树结构CFtree的结构类似于一棵B-树,它有两个参数:内部节点平衡因子B,叶节点平衡因子L,簇半径阈值T。树中每个节点最多包含B个孩子节点,记为(CFi,CHILDi),1=i=B,CFi是这个节点中的第i个聚类特征,CHILDi指向节点的第i个孩子节点,对应于这个节点的第i个聚类特征。例如,一棵高度为3,B为6,L为5的一棵CF树的例子如图所示:Page25BIRCH算法BIRCH试图利用可用的资源生成最好的簇。给定有限的主存,一个重要的考虑是最小化I/O所需时间。BIRCH采用了一种多阶段聚类技术:数据集的单遍扫描产生一个基本的好聚类,一或多遍的额外扫描可以用来进一步(优化)改进聚类质量。它主要包括两个阶段:•阶段一:BIRCH扫描数据库,建立一棵存放于内存的初始CF树,它可以看作数据的多层压缩,试图保留数据的内在的聚类结构。•阶段二:BIRCH采用某个(选定的)聚类算法对CF树的叶节点进行聚类,把稀疏的簇当作离群点删除,而把稠密的簇合并为更大的簇。CF树构造算法一棵CF树是一个数据集的压缩表示,叶子节点的每一个输入都代表一个簇C,簇C中包含若干个数据点,并且原始数据集中越密集的区域,簇C中包含的数据点越多,越稀疏的区域,簇C中包含的数据点越少,簇C的半径小于等于T。随着数据点的加入,CF树被动态的构建,插入过程有点类似于B-树。加入算法表示如下:(1)从根节点开始,自上而下选择最近的孩子节点(2)到达叶子节点后,检查最近的元组CFi能否吸收此数据点是,更新CF值否,是否可以添加一个新的元组是,添加一个新的元组否则,分裂最远的一对元组,作为种子,按最近距离重新分配其它元组(3)更新每个非叶节点的CF信息,如果分裂节点,在父节点中插入新的元组,检查分裂,直到rootPage26Page27CF树的构造在阶段一中,随着对象被插入,CF树被动态地构造。这样,该方法支持增量聚类。一个对象被插入到最近的叶条目(子簇)。如果在插入后,存储在叶节点中的子簇的直径大于阈值,则该叶节点和可能的其他节点被分裂。新对象插入后,关于该对象的信息向树根节点传递。通过修改阈值,CF树的大小可以改变。如果存储CF树需要的内存大于主存的大小,可以定义较大的阈值,并重建CF树。Page28CF树的构造在CF树重建过程中,通过利用老树的叶节点来重新构建一棵新树,因而树的重建过程不需要访问所有点,即构建CF树只需访问数据一次就行。可以在阶段二使用任意聚类算法,例如典型的划分方法。Page29BIRCH算法的有效性该算法的计算复杂度是O(n),其中n是聚类的对象的数目。实验表明该算法关于对象数目是线性可伸缩的,并且具有较好的数据聚类质量。然而,既然CF树的每个节点由于大小限制只能包含有限数目的条目,一个CF树节点并不总是对应于用户所考虑的一个自然簇。此外,如果簇不是球形的,BIRCH不能很好地工作,因为它使用半径或直径的概
本文标题:聚类算法层次方法
链接地址:https://www.777doc.com/doc-2047108 .html