CURE算法

转载http://www.pluscn.net/?p=1226

CURE算法是一种层次聚类算法。

层次聚类方法(Hierarchical Clustering Method) 是一种发展比较早、应用广泛的聚类方法,按采用“自顶向下(Top—Down)”和“自底向上(Bottom—Up)”两种方式,分别被称为分解型层次聚类法(Divisive Hierarehieal Clustering)和聚结型层次聚类法 (Agglomerative Hierarchical Clustering)。

绝大多数聚类算法或者擅长处理球形和相似大 小的聚类,或者在存在孤立点时变得比较脆弱。 CURE采用了一种新颖的层次聚类算法,该算法选择基于质心和基于代表对象方法之间的中间策略。它不同于单个质心或对象来代表一个类,而是选择数据空间中固定数目的具有代表性的点。一个类的代表点通过如下方式产生:首先选择类中分散的对象,然后根据一个特定的分数或收缩因子“收缩”或移动它们。 在算法的每一步,有最近距离的代表点对(每个点来自于一个不同的类)的两个类被合并。

每个类有多于一个的代表点使得CURE可以适 应非球形的几何形状。类的收缩或凝聚可以有助于控制孤立点的影响。因此,CURE对孤立点的处理更加健壮,而且能够识别非球形和大小变化比较大的类。 针对大型数据库,CURE采用随机取样和划分两种方 法组合:一个随机样本首先被划分,每个划分被部分聚类。

CURE算法的步骤:

(1)从源数据对象中抽取一个随机样本S。

(2)将样本S分割为一组划分。

(3)对每个划分局部的聚类。

(4)通过随机取样剔除孤立点。如果一个类增长 太慢,就去掉它。

(5)对局部的类进行聚类。落在每个新形成的类 中的代表点根据用户定义的一个收缩因子收缩或向 类中心移动。这些点代表和捕捉到了类的形状。

(6)用相应的类标签来标记数据。

具体思想如下:

(1)CURE算法采用的是聚结层次聚类。在最开始的时候,每一个对象就是一个独立的类,然后从最相似的对象开始进行合并。

(2)为了处理大数据集,采用了随机抽样和分割 (Partitioning)手段。采用抽样的方法可以降低数据 量,提高算法的效率。在样本大小选择合适的情况下, 一 般能够得到比较好的聚类结果。另外,CURE算法 还引入了分割手段,即将样本分割为几个部分,然后针对各个部分中的对象分别进行局部聚类,形成子类。再针对子类进行聚类,形成新的类。

(3)传统的算法常常采用一个对象来代表一个 类,而CURE算法由分散的若干对象,在按收缩因子 移向其所在类的中心之后来代表该类。由于CURE算法采用多个对象来代表一个类,并通过收缩因子来调节类的形状,因此能够处理非球形的对象分布。

(4)分两个阶段消除异常值的影响。CURE算法采用的是聚结层次聚类。在最开始的时候,每一个对 象就是一个独立的类,然后从最相似的对象开始进行 合并。 由于异常值同其它对象的距离更大,所以其所在 的类中对象数目的增大就会非常缓慢,甚至不增长。 第一个阶段的工作,是将聚类过程中增长非常缓慢的 类作为异常值除去。第二个阶段的工作(聚类基本结 束的时候)是将数目明显少的类作为异常值除去。

(5)由于CURE算法采用多个对象来代表一个 类,因此可以采用更合理的非样本对象分配策略。在完成对样本的聚类之后,各个类中只包含有样本对 象,还需要将非样本对象按一定策略分配到相应的类中。

(6)根据CURE算法提出者的研究成果,在该算法中 收缩因子 的取值在0.2-0.7之间能取得较好的聚类效果,而代表点数c一般选择大于10的数时,都能找到正确的聚类。]

具体的CURE实现步骤,可参见 http://vdisk.weibo.com/s/iZ__J。

你可能感兴趣的:(Artificial,Intelligence)