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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CURE算法是一种用于聚类的算法,它能够解决一些传统聚类算法对于特定情况的限制。CURE算法选择了一种中间策略,即选择空间中固定数目的具有代表性的点来代表一个簇,而不是单个中心或对象。为了应对大型数据库,CURE算法采用了随机取样和划分两种方法的组合。首先对一个随机样本进行划分,然后对每个划分进行部分聚类。CURE算法的思想体现在以下几个方面:凝聚层次聚类、随机抽样和分割、多个对象代表一个类、通过收缩因子调节类的形状、两个阶段消除异常值的影响、采用更合理的非样本对象分配策略。 在使用MATLAB实现CURE算法时,可以按照以下步骤进行操作: 1. 从源数据对象中抽取一个随机样本S。 2. 将样本S分割成一组划分。 3. 对每个划分进行局部聚类。 4. 如果一个类增长缓慢,可以将其去除。 5. 对局部的类进行聚类,落在每个新形成的类中的代表点根据用户定义的一个收缩因子进行收缩或向类中心移动。 6. 最后,用相应的类标签来标记数据。 通过使用CURE算法,可以处理非球形的对象分布,而且对于异常值的处理更加健壮,能够识别非球形和大小变化比较大的类。在MATLAB中,可以使用相应的函数和工具箱来实现CURE算法的聚类操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [CURE算法和Matlab实现](https://blog.csdn.net/qiu1440528444/article/details/80761686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值