1 CURE聚类概述

绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱。CURE采用了一种新颖的层次聚类算法.该算法选择基于质心基于代表对象方法之间的中间策略。它不同于单个质心或对象来代表一个类,而是选择数据空间中固定数目的具有代表性的点。一个类的代表点通过如下方式产生:首先选择类中分散的对象,然后根据一个特定的分数或收缩因子“收缩”或移动它们。在算法的每一步,有最近距离的代表点对(每个点来自于一个不同的类)的两个类被合并。
每个类有多于一个的代表点使得CURE可以适应非球形的几何形状。类的收缩或凝聚可以有助于控制孤立点的影响。因此,CURE对孤立点的处理更加健壮,而且能够识别非球形和大小变化比较大的类。针对大型数据库,CURE采用随机取样和划分两种方法组合:一个随机样本首先被划分,每个划分被部分聚类。

2 算法步骤

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

2 CURE 聚类特点

CURE,Clustering Using Representative 算法的特点如下:

(1)属于凝聚层次聚类

CURE 算法首先把每个数据点看成一个簇,然后将距离最近的簇 结合,一直到簇的个数达到要求的 K 个为止。

(2)适应非球形的几何形状

不同于一个质心或者单个点来代表一个类,CURE 算法中每个簇有多个代表点,这使得 CURE算法可以适应非球形的几何形状。

代表点的选取:
首先选择簇中距离质心最远的点做为第一个点,然后依次选择距离已选到的点最远的点,直到选到c 个点为止,这些点尽量得分散,捕获了簇的形状和大小。

(3)对孤立点的处理更加健壮

另外,CURE 算法还通过“收缩因子”减少离群点对聚类效果的影响。

代表点的收缩或凝聚:
将上面选取到的代表点根据固定的参数α(0≤α≤1 )向该簇的质心收缩,距离质心越远的点(例如离群点)的收缩程度越大,因此CURE对离群点是不太敏感的,这种方法可以有效的降低离群点带来的不利影响。

收缩系数α的取值不同,聚类结果也相应不同。

当 α 趋于 0 时,所有的“代表点”都汇聚到质心,算法退化为基于“质心”的聚类;
当 α 趋于 1 时,“代表点”完全没有收缩,算法退化为基于“全连接”的聚类,
因此 α 值需要根据数据特征灵活选取,才能得到更好的聚类结果

在得到收缩后的代表点后,两个簇之间的距离就可以定义为这两个簇中距离最近的两个代表点之间的距离

(4)识别异常值/离群点

CURE 算法分两个阶段消除异常值的影响。

第一个阶段、是在聚类算法执行到某一阶段(或称当前的簇总数减小到某个值)时,根据簇的增长速度和簇的大小对离群点进行一次识别。

第一阶段,将聚类过程中类成员增长非常缓慢的类作为异常值剔除;

CURE算法由于异常值同其他对象的距离更大,所以其所在类中对象数目的增大就会非常缓慢,甚至不增长。

需要注意的是:
如果这个阶段选择的较早(簇总数过大)的话,会将一部分本应被合并的簇识别为离群点;
如果这个阶段选择的较晚(簇总数过少)的话,离群点很可能在被识别之前就已经合并到某些簇中;
因此原文推荐当前簇的总数为数据集大小的1/3时,进行离群点的识别。

第一阶段有一个很明显的问题,就是当随机采样到的离群点分布的比较近时(即使可能性比较小),这些点会被合并为一个簇,而导致无法将他们识别出来,这时就需要第二阶段的来进行处理。

第二阶段,是指在聚类的最后阶段,将非常小的簇删除;

由于离群点占的比重很小,而在层次聚类的最后几步中,每个正常簇的粒度都是非常高的,因此很容易将他们识别出来,一般当簇的总数缩减到大约为 k 时,进行第二阶段的识别。

(5)适应大规模数据

为了适应大型数据,CURE算法采用了随机抽样和分割相结合的手段。

随机抽样将原始数据集中的部分点提取出来,然后试图在这些点上实施CURE层次聚类算法,采样形成的数据子集要适应内存的需要并且与原始数据集相比要足够小。因此,这种随机采样的方法会大大提升CURE的执行速度,并且由于采样过程会对离群点进行过滤因而可以提高聚类质量。

另外,CURE算法还引入了分割的手段,即样本分割成几个部门,然后针对各个部分中的对象进行局部聚类,形成子类,再针对子类进行聚类,新出新的类。

3 优缺点

优点:

1)可以发现复杂空间的簇

2)受噪点影响小

缺点:

1)参数较多,包括采样的大小、聚类的个数、收缩的比例等;

2) 抽样有误差;

3)难以发现形状非常复杂的空间簇(如中空形状),对空间数据密度差异敏感

4)虽然 CURE 聚类是针对大规模数据库设计的算法,但是当数据量剧增时,效率仍然不能满足需求

参考文献1
论文:层次聚类方法的CURE算法研究

层次聚类(Hierarchical Clustering)——CURE算法详解及举例相关推荐

  1. 层次聚类(Hierarchical Clustering)——BIRCH算法详解及举例

    1 BIRCH概述 BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)的主要动机是两个方面,一是处理大数据集,二是对 ...

  2. 机器学习算法(十二):聚类(2)层次聚类 Hierarchical Clustering

    目录 1 层次聚类 1.1 层次聚类的原理 1.2 两个组合数据点间的距离: 2 自底向上的合并算法 2.1 AGNES算法 (AGglomerative NESting) 2.1.1 原理 2.1. ...

  3. 聚类(2)——层次聚类 Hierarchical Clustering

    聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...

  4. 层次聚类-Hierarchical Clustering

    一.概述 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树,距离越小,相似度越高.在聚类树中,不同类别的原始数据 ...

  5. 机器学习笔记(九)聚类算法Birch和层次聚类Hierarchical clustering

    本篇文章我们继续介绍另一种聚类算法--Birch模型,相对于K-means和DBSCAN,Birch的应用并没有那么广泛,不过它也有一些独特的优势,Birch算法比较适合于数据量大,类别数K也比较多的 ...

  6. 机器学习(6): 层次聚类 hierarchical clustering

    假设有N个待聚类的样本,对于层次聚类来说,步骤: 1.(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度: 2.寻找各个类之间最近的两个类,把他们归为一类(这样类的总数 ...

  7. 【PCL】—超体聚类点云分割算法详解

    参考:https://www.cnblogs.com/ironstark/p/5013968.html 1. 超体聚类--一种来自图像的分割方法 超体(super voxel)是一种集合,集合的元素是 ...

  8. 图解机器学习算法(13) | 聚类算法详解(机器学习通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/34 本文地址:https://www.showmeai.tech/article-d ...

  9. 聚类 python_python中实现k-means聚类算法详解

    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近 ...

最新文章

  1. python随机生成四位验证码的代码_Python random随机生成6位验证码示例代码
  2. Android怎样保证一个线程最多仅仅能有一个Looper?
  3. HDU 6143 Killer Names(排列+容斥,dp)
  4. ios-新浪微博-下拉刷新获取最新的消息(解决消息重复的问题)(五)
  5. Android之Gradle Plugin Samples 之Gradle Library Projects
  6. 写JQuery 插件 什么?你还不会写JQuery 插件
  7. react 访问后端_react前端用nginx怎么配置跨域访问后端restful api?
  8. Ubuntu18.04在线安装JDK1.8
  9. button 样式_Tkinter (3)---Button
  10. 【干货】400+页的《面向机器学习的数学》pdf
  11. 实例讲解统计学基础知识(1):统计学基础概念
  12. Java多线程 | 用多个线程模拟实现银行叫号系统
  13. MyEclipse10安装破解教程
  14. 深圳vpay钱包系统技术开发分享
  15. canvas双层复合饼图及点击效果的实现
  16. 索尼Xperia S_4.0一键ROOT工具┇_┇免解锁┇_┇一分钟ROOT┇_┇
  17. 【软件测试项目】三角形路径测试
  18. 常见iOS系统错误代码含义 英文版
  19. 使用developerWorks进行创作
  20. ※Java初级 常见面试题①

热门文章

  1. SAP 过账显示不在允许过账期间 消息号M7053
  2. 动态范围压缩如何改变音频?
  3. (ZT)多么牛B的校长
  4. 问题 : 色盲的民主
  5. Web2.1技术演示
  6. div的flex布局,简单介绍
  7. 唐都温泉花园阁楼漏水_如何正确维护家中的阁楼
  8. 5.Python的Dict容器
  9. Spring入门第一课:Spring基础与配置Bean
  10. MySQL出现[Err] 1050 - Table 't_active' already exists异常