DM作业.docx
- 文档编号:4164270
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:479.86KB
DM作业.docx
《DM作业.docx》由会员分享,可在线阅读,更多相关《DM作业.docx(20页珍藏版)》请在冰豆网上搜索。
DM作业
基于层次的聚类算法及其改进算法分析
目录
引言2
第一章常用层次聚类算法介绍3
1.1AGNES、DIANA两种基本层次聚类方法3
1.2BIRCH:
利用层次方法的平衡迭代归约和聚类5
1.3ROCK:
分类属性的层次聚类算法7
1.4Chameleon:
一个利用动态模型的层次聚类算法8
1.5CURE:
利用代表点聚类9
第二章一些改进方法的介绍11
2.1M-Chameleon算法11
2.1.1加权图G的构建11
2.1.2模块度12
2.1.3算法流程13
2.2I-Chameleon算法14
2.2.1构建加权图14
2.2.2相似性度量14
2.2.3模块度16
2.2.4I-Chameleon算法具体步骤如下:
16
2.3M-BIRCH算法17
2.3.1算法描述如下:
17
2.3.2算法18
第三章方法比较19
M-Chameleon算法与Chameleon算法的比较19
I-Chameleon算法与Chameleon算法的比较19
M-BIRCH算法性能及分析20
总结22
引言
层次聚类方法(HierarchicalClusteringMethod)是一种发展比较早、应用广泛的聚类方法,层次聚类算法将数据对象组成一棵聚类树。
按采用“自顶向下(Top-Down)”和“自底向上(Bottom-Up)”两种方式,进一步被分为分解型层次聚类法(DivisiveHierarchicalClustering)和聚结型层次聚类法(AgglomerativeHierarchicalClustering)。
层次聚类方法采用一种迭代控制策略,使聚类逐步优化。
它是按照一定的相似性判断标准,合并最相似的部分或者分割最不相似的部分。
分解型层次聚类法,首先将所有对象置于一个类中(即将所有的对象看成一个类),然后逐渐细分,使其变为越来越小但个数越来越多的类,直到每个对象独自构成一类,或满足了一定的终止条件,例如达到了某个希望的聚类数目,或者两个最近的类之间的距离超过了阈值。
聚结型层次聚类法,首先将每个对象(自身)作一个类,然后合并这些原子类为越来越大的类,直到所有的对象都在一个类中,或者满足某个终止条件为止。
大多数层次聚类方法都属于这类方法,只是它们在类间距离定义描述方面有所不同。
我们已经看到分区数据集的方法有n个对象在一个固定数层次聚类方法是通过将数据组织为若干组并形成一个组的树来进行聚类的。
层次聚类方法又可以分为自顶而下和自下而上层次聚类两种。
一个完全层次聚类的质量由于无法对已经做的合并或分解进行调整而受到影响。
目前的研究都强调将自下而上层次聚类与循环再定位方法相结合。
第一章常用层次聚类算法介绍
层次聚类方法是通过将数据组织为若干组并形成一个组的树来进行聚类的。
层次聚类方法又可以分为自顶而下和自下而上层次聚类两种。
一个完全层次聚类的质量由于无法对已经做的合并或分解进行调整而受到影响。
目前的研究都强调将自下而上层次聚类与循环再定位方法相结合。
1.1AGNES、DIANA两种基本层次聚类方法
一般有两种基本层次聚类方法,它们分别是:
自下而上聚合层次聚类方法。
这种自下而上策略就是最初将每个对象(自身)作为一个聚类;然后将这些原子聚类进行聚合以构造越来越大的聚类,直到所有对象均聚合为一个聚类,或满足一定终止条件为止。
大多数层次聚类方法都属于这类方法,但它们在聚类内部对象间距离定义描述方面有所不同。
自顶而下分解层次聚类方法。
这种自顶而下策略的作法与自下而上策略做法相反。
它首先将所有对象看成一个聚类的内容;将其不断分解以使其变成越来越小但个数越来越多的小聚类,直到所有对象均独自构成一个聚类,或满足一定终止条件(如:
一个聚类数阈值,或两个最近聚类的最短距离阈值)为止。
示例:
如下图所示,就分别是一个自下而上聚合层次聚类方法AGNES(AGglomerativeNESting)和一个自顶而下分解层次聚类方法DIANA(DIvsiaANAlysia)的应用示例。
其中数据集为{a,b,c,d,e},共有5个对象。
开始AGNES方法将每个对象构成一个单独聚类;然后根据一定标准不断进行聚合。
如:
对于对于聚类C1和C2来讲,若C1中对象与C2中对象间欧式距离为不同聚类中任两个对象间的最小距离,则聚类C1和C2就可以进行聚合。
两个聚类之间相似程度是利用相应两个聚类中每个对象间的最小距离来加以描述的。
AGNES方法不断进行聚合操作,直到所有聚类最终聚合为一个聚类为止。
而在DIANA方法中,首先所有的对象在一起构成了一个聚类。
然后根据一定原则,如:
聚类中最近对象间的最大欧式距离,对其进行不断分解,直到每个聚类均只包含一个对象为止。
图:
聚合和分解层次聚类方法示意描述
自下而上聚合层次聚类方法和自顶而下分解层次聚类方法中,用户均需要指定所期望的聚类个数作为聚类过程的终止条件。
四个常用的计算聚类间距离的公式说明如下:
其中mi为聚类Ci的均值;n1为Ci中的对象数;
为两个数据对象或点p和
之间的距离。
层次聚类方法尽管简单,但经常会遇到如何选择合并或分解点的问题。
这种决策非常关键,因为在对一组对象进行合并或分解之后,聚类进程将在此基础上继续进行合并或分解,这样就既无法回到先前的(聚类)状态;也不能进行聚类间的对象交换。
因此如果所做出的合并或分解决策(在某一点上)不合适,就会导致聚类结果质量较差。
此外由于在作出合并或分解决策前需要对许多对象或聚类进行分析评估,因此使得该类方法的可扩展性也较差。
改进层次方法聚类质量的可行方法就是将层次方法与其它聚类技术相结合进行多阶段的聚类。
在以下各小节中将要介绍一些有关的具体结合(所得)方法第一个是BIRCH方法,它首先利用树的结构对对象集进行划分;然后再利用其它聚类方法对这些聚类进行优化。
第二个是CURE方法,它利用固定数目代表对象来表示相应聚类;然后对各聚类按照指定量(向聚类中心)进行收缩。
第三个是ROCK方法,它利用聚类间的连接进行聚类合并。
最后一个CHAMELEON,它则是在层次聚类时构造动态模型。
1.2BIRCH:
利用层次方法的平衡迭代归约和聚类
BIRCH方法通过集成层次聚类和其他聚类算法来对大量数据进行聚类,其中层次聚类用于出事的微聚类阶段,二其他方法如迭代划分(在后来的宏类阶段)。
它克服了凝聚聚类方法所面临的两个困难:
(1)可伸缩性;
(2)不能撤销前一步的工作。
BIRCH引入两个概念:
聚类特征和聚类特征树(CF树),他们勇于概括簇描述。
这些结构帮助聚类方法在大型数据库中取得好的速度和伸缩性,使得BIRCH方法对对象的增量和动态聚类也非常有效。
通过引入聚类特征树和聚类特征概念,Zhang等提出BIRCH算法。
聚类特征是一个包含光宇簇的二元组,给出对象子聚类的信息汇总描述。
如果某个子聚类中有N个d维的点会对象,则该子聚类的定义为CF=(V,LS,SS),其中,N是子类中的个数;LS是N个点的线性和;SS是点的平方和。
聚类特征树中所存储的是关于一个活多个子聚类,每个子聚类中包含一个活多个对象。
一个聚类特征树有两个参数:
分支因子B和阈值T,分支因子B定义了每个非叶节点后代的最大数目;阈值参数T给出了存贮在树的叶节点中的子聚类的最大直径。
BIRCH算法主要包括扫描数据库和聚类两个阶段。
BIRCH算法。
(1)扫描数据库,建立一个初始存放于内存的聚类特征树,可以看做数据的多层压缩,试图保留数据内在的聚类特征。
一个对象被插入到距其最近的叶节点(子聚类)中时,如果在插入对象后,存储在叶节点中的子聚类的直径大于阈值,那么该叶节点被分裂,也可能有其他节点被分裂。
新对象被插入后,关于该的信息向根节点传递。
通过修改阈值,聚类特征树的大小可以。
如果存储聚类特征树需要的内存大于贮存的大小,可以定义一个较大的阈值,并重建聚类特征树。
重建过程从旧树的叶节点建造一个新树。
这样,重建后的过程不需要重读所有的对象。
因此为了建树,只需读一次数据。
采用一些启发式规则和方法。
通过额外的数据扫描来处理孤立点和改进CF树的质量。
聚类特征树建好后,可以再阶段(2)被用于任何聚类算法。
(2)BIRCH采用某个聚类算法对聚类特征树的叶节点进行聚类,BIRCH算法具有可伸缩性,算法的时间复杂度为O(n)(不重建聚类特征树时),通过对数据集的首次扫描产生一个基本聚类,二次扫描进一步改进聚类质量并处理异常点。
BIRCH算法的处理速度较快,但对非球形簇处理效果不好。
图:
CF树示例描述
在第一阶段,CF树是根据不断插入的对象而动态建立的。
因此BIRCH方法是增量式聚类。
一个对象被插入到与它最接近的叶节点中。
若一个叶结点的子聚类直径在插入一个新对象后大于阈值T,那该叶结点和其它结点就要进行分解;而在插入一个新对象之后,有关(它)的信息将上传到根结点。
通过修改阈值T可以改变CF树的大小。
如果存放CF树所需要的内存大于现有内存,那就要指定较小的阈值T并重建CF树;重建工作将从原来CF树的叶结点开始。
所以CF树重建工作将无须重新读入所有的数据。
这一点与构造B+树时的插入与分解过程类似。
因此构造CF树时,数据只需要读一遍;而利用一些启发式方法则可以通过重复读入数据来帮助处理异常数据以改善CF树质量。
在构造完CF树后,(第二阶段)可利用任何聚类算法,主要是划分聚类方法,对所获得的CF树进行聚类分析。
BIRCH方法努力在现有资源条件下产生最好的聚类。
面对有限的内存,一个重要考虑就是如何使得I/O时间最小。
BIRCH方法利用多阶段处理方式:
现扫描一遍数据获得一个基本理想的聚类;再次扫描一遍数据以帮助改善(所获)聚类的质量。
BIRCH的计算复杂度为O(n),其中n为带聚类的对象数。
有关的实验结果表明:
基于对象数目和聚类的质量,BIRCH算法表现出线性可扩展性;然而由于大小的限制,CF树中的每个结点仅能容纳有限的入口,因此一个CF树结点并不总能对应用户所认为的一个自然聚类;此外如果聚类不是圆状的,则会由于BIRCH算法是利用半径来控制一个聚类半径的,从而导致算法的性能变差。
1.3ROCK:
分类属性的层次聚类算法
ROCK(RobustClusterignusinglinKs,使用连接的鲁棒聚类)是一种层次聚类算法,针对具有分类属性的数据使用了连接(指两个对象共同的近邻数目)这一概念。
对于聚类包含布尔或分类属性的数据,传统聚类算法使用距离函数。
然而,试验表明对分类数据聚类时,这些距离度量不能产生高质量的簇。
此外,大多数聚类算法在进行聚类时只顾及点与点之间的相似度;也就是说,在每一步中那些最相似的带你合并到一个簇中。
这种“局部”方法很容易导致错误。
例如,两个完全不同的簇可能有少数几个点或者利群点的距离比较近,仅仅依据点与点之间的相似度来做出聚类决定就会导致这两个簇合并。
ROCK采用一种比较全局的观点,通过考虑成对点的邻域情况进行聚类。
如果两个相似的点同时具有形似的邻域,那么这两个点可能属于同一个簇而合并。
Guha等于1999年提出了一个面向分类属性数据的聚类算法ROCK。
突出的贡献是采用公共邻居(链接)数的全局信息作为评价数据点间相关的度量标准,而不是传统的基于两点距离的局部度量函数。
在以往的算法中,两个对象之间的距离或相似性置于这两个对象本身有关,而与其他对象无关。
ROCK算法将这一局部运算扩展成一种全局运算,在计算两个对象之间的距离或相似性时,不仅仅考虑两个对象本身,还考虑周围邻居的影响,增强了算法的抗噪声能力。
为了能处理大规模的数据,ROCK也采用抽样的方法。
1.4Chameleon:
一个利用动态模型的层次聚类算法
Chameleon算法的基本思想
chameleon是一个在层次聚类中采用动态模型的聚类算法。
在它的聚类过程中,如果两个簇间的互连性和近似度与簇内部对象间的互连性和近似度高度相关,则合并这两个簇,它既考虑了互连性,又考虑了近似度,特别是簇内部的特征,因而能够自动地适应被合并簇的内部特征,因此具有较强的发现任意形状和任意大小簇的能力。
基于动态模型的合并过程有利于自然的和相似的聚类的发现,而且只要定义了相似度函数就可应用于所有类型的数据。
Chameleon算法首先由数据集构造成一个K-最近邻图Gk,再通过一个图的划分算法将图Gk划分成大量的子图,每个子图代表一个初始子簇,最后用一个凝聚的层次聚类算法反复地合并子簇来找到真正的结果簇。
Chameleon算法有三个关键步骤组成:
稀疏化、图划分、和层次聚类。
下面描述了子这些步骤。
Chameleon算法
1:
构造K-最近邻图。
2:
使用多层图划分算法划分图。
3:
repeat
4:
合并关于互联性和相对接近性而言,最好地保持簇的相似性的簇。
5:
until不再有可以合并的簇。
图:
Chameleon进行聚类的整个过程
稀疏化:
Chameleon算法的第一步是产生K-最近邻图。
概念上讲,这样的图有临近度图导出,并且仅包含和它的K个最近邻(即最近的点)之间的边。
已经提到过,使用稀疏化的临近度图二不是完全的临近度图可以显著地降低噪声和离群点的影响,提高计算的有效性。
图划分:
一旦得到稀疏化的图,就可以使用诸如METIS等有效的多层图划分算法开划分数据集。
Chameleon从一个全包含的图(簇)开始。
然后,二分当前最大的子图(簇),直到没有一个多余MIN_SIZE个点,其中MIN_SIZE是用户制定的参数。
这一过程导致大量大致相等的、良连接的顶点(高度相似的数据点)的集合。
目标是确保每逢划分包含的对象都大部分来自一个真正的簇。
凝聚层次聚类:
正如当前所讨论的,Chameleon基于自相似概念合并粗。
可以用参数指定,让Chameleon一步合并多个簇对,并且在所有的对象都合并到单个簇之前停止。
1.5CURE:
利用代表点聚类
绝大多数聚类算法或者擅长处理球形和相似大小的聚类,或者在存在孤立点时变得比较脆弱。
CURE(clusteringusingrepresentative)采用了一种新颖的层次聚类算法,该算法选择基于质心和基于代表对象方法之间的中间策略。
它不同于单个质心或对象来代表一个类,而是选择数据空间中固定数目的具有代表性的点。
一个类的代表点通过如下方式产生:
首先选择类中分散的对象,然后根据一个特定的分数或收缩因子“收缩”或移动它们。
在算法的每一步,有最近距离的代表点对(每个点来自于一个不同的类)的两个类被合并。
每个类有多于一个的代表点使得CURE可以适应非球形的几何形状。
类的收缩或凝聚可以有助于控制孤立点的影响。
因此,CURE对孤立点的处理更加健壮,而且能够识别非球形和大小变化比较大的类。
针对大型数据库,CURE采用随机取样和划分两种方法组合:
一个随机样本首先被划分,每个划分被部分聚类。
CURE算法的思想主要体现在如下几个方面:
(1)CURE算法采用的是聚结层次聚类。
在最开始的时候,每一个对象就是一个独立的类,然后从最相似的对象开始进行合并。
(2)为了处理大数据集,采用了随机抽样和分割(Partitioning)手段。
采用抽样的方法可以降低数据量,提高算法的效率。
在样本大小选择合适的情况下,一般能够得到比较好的聚类结果。
另外,CURE算法还引入了分割手段,即将样本分割为几个部分,然后针对各个部分中的对象分别进行局部聚类,形成子类。
再针对子类进行聚类,形成新的类。
(3)传统的算法常常采用一个对象来代表一个类,而CURE算法由分散的若干对象,在按收缩因子移向其所在类的中心之后来代表该类。
由于CURE算法采用多个对象来代表一个类,并通过收缩因子来调节类的形状,因此能够处理非球形的对象分布。
(4)分两个阶段消除异常值的影响。
CURE算法采用的是聚结层次聚类。
在最开始的时候,每一个对象就是一个独立的类,然后从最相似的对象开始进行合并。
由于异常值同其它对象的距离更大,所以其所在的类中对象数目的增大就会非常缓慢,甚至不增长。
第一个阶段的工作是将聚类过程中增长非常缓慢的类作为异常值除去。
第二个阶段的工作(聚类基本结束的时候)是将数目明显少的类作为异常值除去。
(5)由于CURE算法采用多个对象来代表一个类,因此可以采用更合理的非样本对象分配策略。
在完成对样本的聚类之后,各个类中只包含有样本对象,还需要将非样本对象按一定策略分配到相应的类中。
CURE算法的步骤:
(1)从源数据对象中抽取一个随机样本S,包含s个对象。
(2)将样本S分割为p个划分,每个划分大小为s/p。
(3)将每个划分局部聚类成s/pq聚类,其中q>1。
(4)通过随机取样异常数据,若一个簇增长太慢,就删除该簇。
(5)对局部的簇进行再聚类,落在每个新形成的类中的代表点,则根据用户定义的收缩因子收缩或向簇中心移动。
这些点将用于代表并描绘出聚类的边界。
(6)用相应的类标签来标记数据。
以下就是一个描述CURE算法主要处理步骤的具体示例。
图:
CURE算法主要处理步骤示意描述
第二章一些改进方法的介绍
2.1M-Chameleon算法
2.1.1加权图G的构建
以数据对象为顶点,对象间的距离为基础将数据对象集转化为一个加权图,与Chameleon算法相异的是,此时不使用K-最邻近的概念,而是用权代表2个对象间的相似程度,避免了对K值的人工估计。
定义1(度量空间)一个度量空间是指一个数据对象集X和此数据对象集合上的距离函数H构成的二元组(X,H),其中,距离函数H满足以下条件:
(1)非负性,有0 (2)对称性,H(x,y)=H(y,x),对于任意,xy属于X都成立; (3)三角不等式,H(x,y)≤H(x,z)+H(z,y),对于任意x,y,z属于X都成立; 本文中距离函数H定义为欧氏距离,其计算公式为 其中 ; ; ; ; 。 定义2(加权图)加权图G=(V,E,W)是由有穷非空节点V、边集E和边权值函数W构成的三元组。 无序偶对(Vi,Vj)表示节点Vi∈V与Vj∈V之间的联系,Wij为边(Vi,Vj)的权值。 设(Χ,Η)是一个度量空间,设常数 ,连接2个节点的边的权值函数为 。 2.1.2模块度 Chameleon算法的实质是寻找内部连接紧密而外部连接稀疏的簇,并对其进行合理分割。 但由于在该算法中包含最小二分概念,因此其实际操作困难。 为解决此问题,本文引入模块度概念。 定义3(带权度)节点i的带权度Ki定义为与该节点连接的其他节点的边的权重值之和,设A(n×n)为图G的邻接矩阵,则 。 定义4(模块度)设某聚类结果将图G=(V,E)划分为k个簇,即 .设 为节点i所在的簇标号 。 定义一个k×k维的对称矩阵 。 矩阵E的迹 ,每行(列)中各个元素之和为 。 用下式定义模块度的衡量标准: 其中, 表示矩阵所有元素之和。 上式的物理意义如下: 图 中连接2个同类型的节点的边(即簇内部的边)的比例,减去 在同样的图下任意连接这2个节点的边的比例的期望值。 如 果簇内部边的比例不大于任意连接时的期望值,则Q=0。 Q的上限为Q=1,Q越接近该值,聚类结果越符合簇内连接紧密簇外连接稀疏的标准,即聚类结果越好。 定义4中的模块度是针对非加权网的,但Newman证明,一个加权网可以视为数个非加权网的叠加。 因此,假定聚类结果为 ,加权图G=(V,E,W)的模块度可以定义为 其中, ,即节点i的带权度; 是图中边的权值之和; 为节点i所在簇标号; 。 2.1.3算法流程 将本算法命名为M-Chameleon,M代表模块度。 在Chameleon算法中,相似度函数的作用是从拓扑结构的角度来度量2个簇之间的类似程度,但由于其需要人工指定阈值,造成使用上的困难,而不指定阈值,又将导致无法找到算法终结点。 本算法由于应用了模块度概念,因此可以避免上述问题。 本文采用结构等价相似度定义2个簇之间的类似程度。 定义5(结构等价相似度)如果2个节点间具有完全相同的相邻节点,则称这2个节点为结构等价。 因此,结构等价相似度计算式为 其中, 是边 的权值。 对于结构等价的节点对,结构等价相似度为0。 对于没有任何共同相邻节点的节点对,结构等价相似度取最大值。 定义6簇r和簇h间的结构等价相似度定义为 其中, 为簇r中节点个数; 为簇h中的节点个数。 具体计算步骤如下: 假设初始加权图分为n个独立的簇,每次选取结构等价相似度小的2个簇进行合并,并进行模块度的评估,直到模块度开始递减,从而得到上述聚类过程的一个树状图。 最下面的聚集结构就是初始的n个节点,树状图的每个分支处的划分对应一种聚类结果,最终划分结果由模块度最大值决定。 具体过程如下: (1)采用定义2的结构,构建加权图G,初始化簇的个数为n,即每个节点就是一个簇; (2)计算 或 ,按结构等价相似度由小到大的顺序,合并簇; (3)计算模块度Q; (4)重复进行 (2)和(3),不断合并簇,直到模块度Q下降,终止,输出结果。 2.2I-Chameleon算法 2.2.1构建加权图 I-Chameleon算法本质上是一种图聚类算法,图中的顶点为所有参加聚类的数据对象。 定义1(加权图)加权图G=(V,E,W)是由非空有穷节点集V边集E和权值矩阵W构成的三元组无序偶对(vi,vj)表示连接节点vi∈V与节点vj∈V的边如果(vi,vj)∈E则Wij=s(i,j),否则Wij=0。 2.2.2相似性度量 定义2(对象之间的相似度)两个数据对象之间的相似度为s(i,j),本算法工作在数据集的相似度矩阵上,因此适用于任何数据类型的聚类,只要能够获得数据集的相似度矩阵即可。 定义3(对象间平均相似度) (2) 式 (2)中n为参加聚类的对象数目。 定义4(绝对簇间连接度)簇Ci与簇Cj之间的绝对连接度为 (3) 其中 为簇Ci和簇Cj之间最相似的N对对象的相似度之和, , ,P为数据集的维数。 定义5(簇内连接度)若簇Ci是由簇Ca与簇Cb合并而成则Ci的簇内连接度为 (4) 若簇Ci是初始子簇则簇内连接度为Ci内所有边的权值之和。 定义6(相对簇间连接度)簇Ci与簇Cj之间的相对连接度为 (5) 定义7(绝对簇间近似度)簇Ci与簇Cj之间的绝对近似度为 (6) 定义8(簇内近似度)若簇Ci是由簇Ca与簇Cb合并而成则Ci的簇内近似度为 (7) 若簇Ci是初始子簇则簇内近似度为Ci内所有边的权值的平均值。 定义9(相对簇间近似度)簇Ci与簇Cj之间的相对近似度为 (8) 2.2.3模块度 为了确定I-Chameleon算法第二阶段的凝聚操作应在何时终止,本文引入模块度的概念。 定义10(带权度)节点i的带权度ki定义为以该节点为顶点的所有边的权重之和 (9) 定义11(模块度)设某聚类结果将图G=(V,E)划分为k个簇,即G=(G'1,G'2,,G'k),G'i=(V'i,E'i)。 定义一个一维向量V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DM 作业