awentang的个人空间 https://bbs.21ic.com/?466870 [收藏] [复制] [RSS]

日志

数据挖掘——聚类算法(2)

已有 3290 次阅读2009-5-4 12:46 |系统分类:DSP

其他算法


1.       CLARACluster Larger Application是基于k-中心点类型的算法能处理更大的数据集合。CLARA先抽取数据集合的多个样本,然后用PAM方法在抽样的样本中寻找最佳的k中心点,返回最好的聚类结果作为输出。但不然k-中心点准确,CLARA准确度取决于抽样算法。


2.       CLArANS(Cluster Larger Application baed upon RANdomized search,随机搜索聚类算法)另一种k-中心点的算法CLARA类似采用抽样方法,但也有不同:CLArANS在搜索的每一步都带一定随机性地选取一个样本。


层次聚类方法


层次聚类分为两种:


(1)       凝聚的层次聚类:自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为更大的簇,直到所有的对象都在同一个簇中,或者满足终止条件。


(2)       分类的层次聚类:自顶向下的策略。


AGNES算法


       AGNES(Agglomerative Nesting) 是凝聚的层次聚类算法,如果簇C1中的一个对象和簇C2中的一个对象之间的距离是所有属于不同簇的对象间欧式距离中最小的,C1C2可能被合并。这是一种单连接方法,其每个簇可以被簇中的所有对象代表,两个簇之间的相似度由这两个簇中距离最近的数据点对的相似度来确定。


 


       算法描述:


              输入:包含n个对象的数据库,终止条件簇的数目k


              输出:k个簇


(1)       将每个对象当成一个初始簇


(2)       Repeat


(3)                根据两个簇中最近的数据点找到最近的两个簇


(4)                合并两个簇,生成新的簇的集合


(5)       Until达到定义的簇的数目


       算法性能:


(1)       简单,但遇到合并点选择困难的情况。


(2)       一旦一组对象被合并,不能撤销


(3)       算法的复杂度为O(n的平方),不适合大数据集计算DIANA算法


       DIANADivisive Analysis)算法属于分裂的层次聚类,首先将所有的对象初始化到一个簇中,然后根据一些原则(比如最邻近的最大欧式距离),将该簇分类。直到到达用户指定的簇数目或者两个簇之间的距离超过了某个阈值。


       DIANA用到如下两个定义:


(1)       簇的直径:在一个簇中的任意两个数据点都有一个欧氏距离,这些距离中的最大值是簇的直径


(2)       平均相异度(平均距离):


                    


       算法描述:


              输入:包含n个对象的数据库,终止条件簇的数目k


              输出:k个簇,达到终止条件规定簇数目


(1)       将所有对象整个当成一个初始簇


(2)       For ( i=1;i!=k;i++) Do Begin


(3)         在所有簇中挑选出具有最大直径的簇;


(4)           找出所挑出簇里与其他点平均相异度最大的一个点放入splinter group,剩余的放入old party中。


(5)           Repeat


(6)             old party里找出到splinter group中点的最近距离不大于old party中点的最近距离的点,并将该点加入splinter group


(7)           Until 没有新的old party的点被分配给splinter group


(8)       Splinter group old party为被选中的簇分裂成的两个簇,与其他簇一起组成新的簇集合


(9)       END


       算法性能:


              缺点是已做的分裂操作不能撤销,类之间不能交换对象。如果在某步没有选择好分裂点,可能会导致低质量的聚类结果。大数据集不太适用。


 


其他算法


       层次聚类方法比较简单,但是经常遇到的一个问题,就是在合并或分裂点选择困难的问题。一个有希望的改进方向是将层级聚类和其他聚类技术进行集成,形成多阶段聚类。


(1)       BIRCH算法


       BIRCH(利用层次方法的平衡迭代规约和聚类)是一个总和的层次聚类方法,


(2)       CURE算法


 


密度聚类方法


 基本思想:只要一个区域的点的密度大于某个阈值,就把它加到预置最近的聚类中区。密度聚类可以发现任意形状的聚类,且对噪声数据不敏感。但是计算复杂度大,且对数据维数的伸缩性较差。需要扫描整个数据库,每个数据对象都可能引起一次查询,因此当数据量大时会造成频繁的I/O操作。


 


DBSCAN算法


       DBSCANDensity-Based Spatial Clustering of Applications with Noise)算法将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域户分成簇,并且可以在有“噪声”的空间数据库中发现任意形状的聚类。


       基本定义:


(1)       对象的 -临域:给定对象的半径 内的区域。


(2)       核心对象:如果一个对象的 -临域至关于 少包含最小数目MinPts个对象,则成该对象为核心对象。


(3)       直接密度可达:给定一个对象集合D,如果p是在q -临域内,而且q是一个核心对象,我们就说对象p从对象q出发是直接密度可达的。


(4)       密度可达:如果存在一个对象链p1, p2,…,pn, p1=q pn=p,对于任意的pi属于Dpi+1是从pi关于 MinPts直接密度可达的,则对象p是从对象q关于 MinPts密度可达的。


(5)       密度相连的:如果对象集合D中存在一个对象o,使得对象pq是从o关于 MinPits密度可达的,那么对象pq是关于 MinPts可达的。


(6)       噪声:一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合。不包含在任何簇中的对象被认为是“噪声”。


算法描述:


       输入:包含n个对象的数据库,半径 ,最少数目MinPts


       输出:所有生成的簇,到达密度要求


(1)    repeat


(2)        从数据库中抽取出一个未处理过的点


(3)            If 抽出的点是核心点 then 找出所有从改密度可达的对象,形成一个簇


(4)         Else 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一个点


(5)    Until 所有点都被处理


 


算法性能:


       可以发现任意形状的簇,但是该算法对用户定义的参数是敏感的,为了解决这个问题,OPTICS(ordering points to identify the clustering structure)被提出,通过引入核心距离和可达距离,使得聚类算法对输入的参数不敏感。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)