转载自:http://www.douban.com/note/275659919/

1 BIRCH算法
  BIRCH算法即平衡迭代削减聚类法,其核心是用一个聚类特征3元组表示一个簇的有关信息,从而使一簇点的表示可用对应的聚类特征,而不必用具体的一组点来表示。它通过构造满足分支因子和簇直径限制的聚类特征树来求聚类。BIRCH算法通过聚类特征可以方便地进行中心、半径、直径及类内、类间距离的运算。算法的聚类特征树是一个具有两个参数分枝因子B和类直径T的高度平衡树。分枝因子规定了树的每个节点子女的最多个数,而类直径体现了对一类点的直径大小的限制即这些点在多大范围内可以聚为一类,非叶子结点为它的子女的最大关键字,可以根据这些关键字进行插人索引,它总结了其子女的信息。  聚类特征树可以动态构造,因此不要求所有数据读人内存,而可以在外存上逐个读人。新的数据项总是插人到树中与该数据距离最近的叶子中。如果插人后使得该叶子的直径大于类直径T,则把该叶子节点分裂。其它叶子结点也需要检查是否超过分枝因子来判断其分裂与否,直至该数据插入到叶子中,并且满足不超过类直径,而每个非叶子节点的子女个数不大于分枝因子。算法还可以通过改变类直径修改特征树大小,控制其占内存容量。  BIRCH算法通过一次扫描就可以进行较好的聚类,由此可见,该算法适合于大数据量。对于给定的M兆内存空间,其空间复杂度为O(M),时间间复杂度为O(dNBlnB(M/P)).其中d为维数,N为节点数,P为内存页的大小,B为由P决定的分枝因子。I/O花费与数据量成线性关系。BIRCH算法只适用于类的分布呈凸形及球形的情况,并且由于BIRCH算法需提供正确的聚类个数和簇直径限制,对不可视的高维数据不可行。
  
2 CURE算法
  CURE算法即使用代表点的聚类方法。该算法先把每个数据点看成一类,然后合并距离最近的类直至类个数为所要求的个数为止。CURE算法将传统对类的表示方法进行了改进,回避了用所有点或用中心和半径来表示一个类,而是从每一个类中抽取固定数量、分布较好的点作为描述此类的代表点,并将这些点乘以一个适当的收缩因子,使它们更靠近类的中心点。将一个类用代表点表示,使得类的外延可以向非球形的形状扩展,从而可调整类的形状以表达那些非球形的类。另外,收缩因子的使用减小了嗓音对聚类的影响。CURE算法采用随机抽样与分割相结合的办法来提高算法的空间和时间效率,并且在算法中用了堆和K-d树结构来提高算法效率。
  
3 DBSCAN算法
  DBSCAN算法即基于密度的聚类算法。该算法利用类的密度连通性可以快速发现任意形状的类。其基本思想是:对于一个类中的每个对象,在其给定半径的领域中包含的对象不能少于某一给定的最小数目。在DBSCAN算法中,发现一个类的过程是基于这样的事实:一个类能够被其中的任意一个核心对象所确定。为了发现一个类,DBSCAN先从对象集D中找到任意一对象P,并查找D中关于关径Eps和最小对象数Minpts的从P密度可达的所有对象。如果P是核心对象,即半径为Eps的P的邻域中包含的对象不少于Minpts,则根据算法,可以找到一个关于参数Eps和Minpts的类。如果P是一个边界点,则半径为Eps的P邻域包含的对象少于Minpts,P被暂时标注为噪声点。然后,DBSCAN处理D中的下一个对象。  密度可达对象的获取是通过不断执行区域查询来实现的。一个区域查询返回指定区域中的所有对象。为了有效地执行区域查询,DBSCAN算法使用了空间查询R-树结构。在进行聚类前,必须建立针对所有数据的R*-树。另外,DBSCAN要求用户指定一个全局参数Eps(为了减少计算量,预先确定参数Minpts)。为了确定取值,DBSCAN计算任意对象与它的第k个最临近的对象之间的距离。然后,根据求得的距离由小到大排序,并绘出排序后的图,称做k-dist图。k-dist图中的横坐标表示数据对象与它的第k个最近的对象间的距离;纵坐标为对应于某一k-dist距离值的数据对象的个数。R*-树的建立和k-dist图的绘制非常消耗时间。此外,为了得到较好的聚类结果,用户必须根据k-dist图,通过试探选定一个比较合适的Eps值。DBSCAN算法不进行任何的预处理而直接对整个数据集进行聚类操作。当数据量非常大时,就必须有大内存量支持,I/O消耗也非常大。其时间复杂度为O(nlogn)(n为数据量),聚类过程的大部分时间用在区域查询操作上。DBSCAN算法对参数Eps及Minpts非常敏感,且这两个参数很难确定。
4 K-pototypes算法
  K-pototypes算法结合了K-means方法和根据K-means方法改进的能够处理符号属性的K-modes方法,同K-means方法相比,K-pototypes 算法能够处理符号属性。
  
5 CLARANS算法
  CLARANS算法即随机搜索聚类算法,是一种分割聚类方法。它首先随机选择一个点作为当前点,然后随机检查它周围不超过参数Maxneighbor个的一些邻接点,假如找到一个比它更好的邻接点,则把它移人该邻接点,否则把该点作为局部最小量。然后再随机选择一个点来寻找另一个局部最小量,直至所找到的局部最小量数目达到用户要求为止。该算法要求聚类的对象必须都预先调人内存,并且需多次扫描数据集,这对大数据量而言,无论时间复杂度还是空间复杂度都相当大。虽通过引人R-树结构对其性能进行改善,使之能够处理基于磁盘的大型数据库,但R*-树的构造和维护代价太大。该算法对脏数据和异常数据不敏感,但对数据物人顺序异常敏感,且只能处理凸形或球形边界聚类。
  
6 CLIQUE算法
  CLIQUE 算法即自动子空间聚类算法。该算法利用自顶向上方法求出各个子空间的聚类单元。CUQUE算法主要用于找出在高维数据空间中存在的低维聚类。为了求出d维空间聚类,必须组合给出所有d-1维子空间的聚类,导致其算法的空间和时间效率都较低,而且要求用户输入两个参数:数据取值空间等间隔距离和密度阔值。这2个参数与样木数据紧密相关,用户一般难以确定。CLIQUE算法对数据输人顺序不敏感。

数据挖掘常用聚类算法性能比较相关推荐

  1. 数据挖掘中聚类算法概述

    1 聚类方法概述 聚类方法是将物理或抽象对象的集合组成为由类似的对象组成的多个类的过程被成为聚类.由聚类所组成的簇是一组数据对象的集合,这些对象与同一簇中的对象彼此类似,与其他簇中的对象相异.在许多应 ...

  2. 【机器学习】常用聚类算法 整理

    sparkML 常用聚类算法 http://spark.apache.org/docs/latest/mllib-clustering.html 如下为 机器学习聚类算法的理论知识: 在机器学习中,无 ...

  3. 道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类、蚁群算法等)

    道路匹配MapMatching:GPS轨迹点常用聚类算法介绍(K-Means聚类.蚁群算法等) 前言 一.聚类算法是什么? 二.道路匹配中常见聚类算法介绍 1.K-Means算法 2.基于时间和距离的 ...

  4. 【学习机器学习】实验——聚类算法性能度量

    聚类算法性能度量 前言 一.实验目的 二.实验内容 1.变量a,b,c,d 2.Jaccard系数 3.闵可夫斯基距离 4.avg,diam,dmin,dcen,DB指数 4.1 avg(C) 4.2 ...

  5. 大数据聚类算法性能比较及实验报告

    在大数据领域这个聚类算法真是起到了十分重要的作用,只有通过有效地聚类才能得到非常直观的结果. 有一个实验要求对比两种大数据聚类算法的性能,具体的代码也不是由我实现的,我只是改了一部分,主要还是博客大佬 ...

  6. 【数据挖掘】聚类算法 简介 ( 基于划分的聚类方法 | 基于层次的聚类方法 | 基于密度的聚类方法 | 基于方格的聚类方法 | 基于模型的聚类方法 )

    文章目录 I . 聚类主要算法 II . 基于划分的聚类方法 III . 基于层次的聚类方法 IV . 聚合层次聚类 图示 V . 划分层次聚类 图示 VI . 基于层次的聚类方法 切割点选取 VII ...

  7. [数据挖掘笔记] 聚类算法KMeans

    文章目录 1.概述 1.1 无监督学习与聚类算法 1.2 sklearn中的聚类算法 2.KMeans 2.1 KMeans是如何工作的 2.2 簇内误差平方和的定义和解惑 2.3 KMeans算法的 ...

  8. 聚类算法的缺点_常用聚类算法

    一.K-Means 算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点.中心点是与每个数据点向量长度相同的位置.这需要我们提前预知类的数量(即中心点的数量). (2) 计算每个数 ...

  9. dbscan算法中 参数的意义_常用聚类算法

    一.K-Means 算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点.中心点是与每个数据点向量长度相同的位置.这需要我们提前预知类的数量(即中心点的数量). (2) 计算每个数 ...

最新文章

  1. VS2012编译调试WDM驱动(KdPrint无调试信息 debugview win7无调试信息)
  2. HDU2683——欧拉完全数
  3. C/C++中位运算操作符的使用
  4. python爬虫 点击下一页_python爬虫实现获取下一页代码
  5. 物联网架构-Nginx负载均衡
  6. centos linux 通过yum安装nginx
  7. linux定位异常前后日志信息
  8. Tracepro中up vector和normal vector的定义2
  9. 【全网世界区划最全整理输出之第一部分】全世界所有国家的行政区划整理,省市信息,已按照国家,省,市排好序,可直接复制使用,第一部分4006条,总条数:21088
  10. Poi-tl通过word模板生成文件页眉页脚冲突问题
  11. “一个字等于多少个字节?”是一个不严谨的问法
  12. 英语3500词(七)dating主题(2022.1.19)
  13. USYD悉尼大学DATA 2002 【R语言学习2】在 Tidyverse 中与数据通信 (Communicating with Data in the Tidyverse)
  14. Tomcat+Nginx动静分离
  15. 项管行知04--项目章程
  16. 水星UD6S网卡Linux驱动,水星ud6s驱动下载-水星UD6S无线网卡驱动下载 v1.0官方版--pc6下载站...
  17. python因子分析 ic值 函数_Python——因子分析(KMO检验和Bartlett's球形检验)
  18. 2004手机游戏年终点评
  19. 中国移动云能力中心校招面试总结(一面)
  20. Java版我的世界有什么特性_Java版提及特性 _ 《我的世界》中文Minecraft Wiki:最详细的官方我的世界百科...

热门文章

  1. php如何实现文件操作,php实现操作文件的各种方式总结(附代码)
  2. WSL2:docker中ubuntu18.04编译webRTC
  3. x265将yuv转h265(七)
  4. 高通android7.0模块编译.ko
  5. 深度学习自学(十九):caffe添加深度可分离卷积
  6. 决策树中的过拟合问题
  7. React配置代理proxy解决跨域问题
  8. Oracle rac误删归档,rac 归档的存放路径下的不同的恢复方法
  9. springboot传入json和文件_SpringBoot中文参考指南(2.1.6)29.1.13、CORS 支持
  10. c调用python函数_python - Linux C调用Python 函数