CURE算法和Matlab实现

CURE算法和Matlab实现

——基于*质心*和基于*代表对象*方法之间的中间策略

算法提出:

很多聚类算法只擅长处理球形或者相似大小的聚类。另外有些聚类算法对孤立点比较敏感
CURE算法解决了上述两个问题,选择基于质心和基于代表对象之间的中间策略,即选择空间中固定数目的具有代表性的点,而不是单个中心或对象来代表一个簇。

簇的代表点产生方式:首先选择簇中分散的对象,然后根据一个特定的分数或收缩因子向簇中心收缩或移动它们。在算法的每一步,有最近距离的代表点对的两个簇被合并。(每个点来自于一个不同的簇)

该算法首先把每个数据点看成一个簇,然后再以一个特定的收缩因子向簇中心“收缩”它们,即合并两个距离最近的代表点的簇。
每个簇都有多个代表点使CURE可以适应非球形的几何形状。簇的收缩可以有助于控制孤立点的影响。因此CURE对孤立点的处理更加健壮,而且能够识别非球形和大小变化比较大的类。

针对大型数据库,CURE采用随机取样划分两种方法组合:一个随机样本首先被划分,每个划分被部分聚类。

CURE算法的思想体现在以下几方面:

  1. CURE算法是凝聚层次聚类,最开始,每个对象是一个独立的类簇,并从最相似的对象进行合并。
  2. 为了处理大数据集,采用随机抽样和分割手段。分割是把样本分割成几个部分,然后针对每个部分中的对象分别进行聚类,形成子类,再针对子类进行聚类,形成新的类。
  3. 传统的算法采用一个对象来代表一个类簇,而CURE算法由分散的若干对象,在按收缩因子移动向其所在类的中心之后来代表该类。由于CURE采用多个对象代表一个类,并通过收缩因子来调节类的形状,因此能够处理非球形的对象分布。
  4. 分两个阶段消除异常值得影响。CURE算法由于异常值同其他对象的距离更大,所以其所在类中对象数目的增大就会非常缓慢,甚至不增长。第一阶段,将聚类过程中增长非常缓慢的类作为异常值删除。第二阶段,在聚类结束的时候将数目明显少的类作为异常值除去。
  5. 由于CURE算法采用多个对象代表一个类,因此采用更合理的非样本对象分配策略。在完成对样本聚类后,各个类中只包含有样本对象,还需要将非样本对象按一定策略分配到相应的类中。

CURE算法步骤:

  1. 从源数据对象中抽取一个随机样本S;
  2. 将样本S分割成一组划分;
  3. 对每个划分局部的聚类;
  4. 通过随机样本剔除孤立点。如果一个类增长缓慢就去除它;
  5. 对局部的类进行聚类,落在每个新形成的类中的代表点根据用户定义的一个收缩因子收缩或向类中心移动。这些点代表和捕捉到了类的形状。
  6. 用相应的类标签来标记数据。

CURE算法实例参考:

https://wenku.baidu.com/view/32b7390cbe1e650e53ea9904.html

CURE算法优点:

  1. 可以适应非球形的几何形状
    将一个簇用多个代表点来表示,使得类的外延可以向非球形的形状扩展,从而可调整类的形状以表达非球形的类。

  2. 对孤立点的处理更加健壮
    收缩因子降低了噪声对聚类的影响,从而使CURE对孤立点的处理更加健壮。

  3. 能识别非球形和大小变化较大的簇。

  4. 对大型数据库有良好的伸缩性。
  5. 复杂性O(n),n是对象数目,所以适合大型数据聚类。

Matlab实现的下载地址:

https://download.csdn.net/download/qiu1440528444/10490928

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值