当前位置:   article > 正文

CURE算法和Matlab实现_cure向中心收缩

cure向中心收缩

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/347731
推荐阅读
相关标签
  

闽ICP备14008679号