http://hi.baidu.com/catfool/blog/item/c06bec3931a0efcad4622524.html

聚类算法学习指南(二)
2009-05-06 20:49
下图
图 3-1 聚类方法的分类示意图
3.1 传统聚类算法
3.1.1 层次方法
层次法对给定的数据对象集合进行层次似的分解。按层次分解的形成方式,层次法可分为凝聚和分裂两大类。凝聚的方法,也称为自底向上的方法,一开始将每个对象作为单独的一个类,然后相继地合并相近的类,直到所有的类合并为一个(层次的最上层),或者达到一个终止条件为止。分裂的方法,也称为自顶向下的方法,一开始将所有的对象置于一个类中。在迭代的每一步中,类被分裂为更小的类,直到每个类只包含一个对象,或者达到一个终止条件为止。在凝聚或者分裂层次聚类方法中,通常以用户定义的希望得到的类的数目作为结束条件。在类的合并或分裂过程中,需要考察类间的距离。类间距离的度量广泛采用如下四种方法:
最小距离:dmin(Ci,Cj)=minp∈Ci,p'∈Cj|p- p' |
最大距离:dmax(Ci,Cj)=maxp∈Ci,p'∈Cj|p- p' |
平均值距离:dmcan(Ci,Cj)=|mi- mj|
平均距离:
层次方法(Hierarchical Method)中代表算法有BIRCH、CURE、ROCK、CHAMELEON算法等。
3.1.2 划分方法
给定一个包含n个数据对象的数据集,划分法构建数据的k个划分,每个划分表示一个类,并且k≤n。同时满足如下的要求:①每个组至少包含一个对象;②每个对象属于且仅属于一个组。给定要构建的划分的数目k,创建一个初始划分。然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。判定一个好的划分的一般准则是:在同一个类中的对象之间尽可能“接近”或相关,在不同类中的对象之间尽可能“远离”或不同,即使下列准则函数最小:
式中的E是数据集中所有对象的平方误差的总和;mi是类Ci的平均值(或中心点),p是数据空间中的数据对象(p和mi都是多维的)。为了达到全局最优,基于划分的聚类要求穷举所有可能的划分。基于划分的方法(Partitioning Method),其代表算法有K-MEANS、K-MEDOIDS、大型数据库划分方法(CLARANS)等。
3.1.3 基于密度的方法
绝大多数划分方法基于对象之间的距离进行聚类,这样的方法只能发现球状的类,而在发现任意形状的类上有困难。因此,出现了基于密度的聚类方法,其主要思想是:只要邻近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类。也就是说,对给定类中的每个数据点,在一个给定范围的区域内必须至少包含某个数目的点。这样的方法可以过滤“噪声”数据,发现任意形状的类。但算法计算复杂度高,一般为O(n2),对于密度分布不均的数据集,往往得不到满意的聚类结果。其代表算法有DBSCAN、OPTICS和DENCLUE等。
3.1.4 基于网格的方法
基于网格的方法把对象空间量化为有限数目的单元,形成一个网格结构。所有的聚类操作都在这个网格结构(即量化空间)上进行。这种方法的主要优点是它的处理速度很快,其处理速度独立于数据对象的数目,只与量化空间中每一维的单元数目有关。但这种算法效率的提高是以聚类结果的精确性为代价的。它的代表算法有STING、CLIQUE、WAVE- CLUSTER等。
3.1.5 基于模型的方法
基于模型的聚类算法为每簇假定了一个模型,寻找数据对给定模型的最佳拟合。一个基于模型的算法可能通过构建反应数据点空间分布的密度函数来定位聚类。它也基于标准的统计数字自动决定聚类的数目,老吕噪声数据或孤立点,从而产生健壮的聚类方法。基于模型的聚类试图优化给定的数据和某些数据模型之间的适应性。这样的方法经常是基于这样的假设:数据是根据潜在的概率分布生成的。基于模型的方法主要有两类:统计学方法和网络神经方法。其中,统计学方法有COBWEB算法,网络神经方法有SOM算法。
3.1.6 基于约束的方法
真实世界中的聚类问题往往是具备多种约束条件的,然而由于在处理过程中不能准确表达相应的约束条件、不能很好地利用约束知识进行推理以及不能有效利用动态的约束条件,使得这一方法无法得到广泛的推广和应用。这里的约束可以是对个体对象的约束,也可以是对聚类参数的约束,它们均来自相关领域的经验知识。该方法的一个重要应用在于对存在障碍数据的二维空间数据进行聚类。COD (Clustering with Ob2structed Distance)就是处理这类问题的典型算法,其主要思想是用两点之间的障碍距离取代了一般的欧氏距离来计算其间的最小距离。

聚类算法学习指南(二)相关推荐

  1. 给实践者的算法学习指南

    几乎是所有最顶尖的互联网和软件公司都会用算法和数据结构来考察软件工程师,然而我并不打算在这里再讨论算法的重要性和对实际工作是否有用(我认为这对一个优秀的程序员是不可或缺的基本技能),也不讨论「Goog ...

  2. 这是一份全面详细的数据结构、算法学习指南

    前言 背景:算法与数据结构作为技术开发者最基本的技术修养,在日常开发出现的频率非常高 本文目的:花尽可能短的时间,快速学习常见的数据结构知识及算法 适用阅读人群:所有技术开发者 本文主要内容: 常见. ...

  3. 算法学习(二)快速排序(下)

    快速排序采取的是分治法,所以怎么把一个无序的数组以某个点为中界来将其拆分成有序的两部分,这是其快 排的核心方法. 在上一章中,是一开始提出来的"快速排序",但是这个世界上在某些地方 ...

  4. 算法学习(二)快速排序(上)

    快速排序采用的思想是分而治之. 1)将一整个大的无序序数组,根据数组中的某一个值,将数组分成两部分,一部分比这个值小,一部分比这个值大. 2)然后再对这两部分各自进行同样的操作,而当每一部分都有序之后 ...

  5. 无监督学习--K-means聚类算法学习

    无监督学习–K-means聚类算法学习 介绍:k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度比较低. 其处理过程如下: 1.随机选择k个点作为初始的聚类中心 ...

  6. 数据结构和算法学习指南

    点击上方蓝字设为星标 下面开始今天的学习- 这篇文章会涵盖之前的所有内容,并且会举很多代码的实例,谈谈如何使用框架思维,并且给对于算法无从下手的朋友给一点具体可执行的刷题建议. 首先,这里讲的都是普通 ...

  7. 典型的聚类算法--学习笔记

    目录 一. 前言 二. 典型的聚类算法 1. 聚类算法的选择 2. K-Means(K均值) (1)原理 (2)示意图 (3)算法优缺点 (4)注意事项 (5)示例代码 (6)算法拓展--Mini B ...

  8. 06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较

    03 聚类算法 - K-means聚类 04 聚类算法 - 代码案例一 - K-means聚类 05 聚类算法 - 二分K-Means.K-Means++.K-Means||.Canopy.Mini ...

  9. K-均值聚类算法学习心得

    一.分类与聚类 分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量数据的时候,如果通过预处理使得数 ...

最新文章

  1. GitHub的十大JavaScript项目
  2. 页面中嵌入了Flash时滚动条问题
  3. 欧拉降幂(Euler_Power_Formula)
  4. linux 下qt 终端隐藏在后台_20 个 Linux 终端下的生产力工具 | Linux 中国
  5. 搭建MVC及WebAPI项目框架时碰到的问题集合
  6. .form文件_含文件上传的form表单AJAX提交小结
  7. uvalive3983Robtruck
  8. 猎证计算机等级考试二级试题讲解,猎证计算机等级考试系统
  9. 大学本科计算机专业的课程
  10. LDC1314 学习资料
  11. 百度网盘下载提速小技巧
  12. 熔断器 java_SpringCloud之熔断器Hystrix的实现
  13. Excel中插入图表后在设计选项卡无法选择样式解决办法
  14. 计算机组装的硬件配置及报价,2021组装电脑配置清单及价格表说明
  15. Proteus8.9 VSM Studio WINAVR编译器仿真ATmega16系列a19_DS18B20_LCD1602
  16. 华硕x580nv拆机_看懂一篇拆机贴 拆遍天下机 华硕A45VM拆机清灰换硅脂 怒降25度!...
  17. 关于linux中socket阻塞与非阻塞
  18. insert into bak select * from test会锁表吗
  19. camera知识储备2
  20. html网站上播放视屏代码

热门文章

  1. OpenCV3 识别图中表格-JAVA 实现
  2. 算法-低位优先的字符串排序
  3. Android在全球的市场份额跃居全球第一
  4. 【求助】AIX5.3主机下 memcached的内存使用异常
  5. axure如何页面滑动时广告位上移_新手APP运营如何做广告位投放
  6. PHP-Redis扩展安装 error: ext/standard/php_smart_str.h: No such file or directory
  7. express利用nodemailer发送邮件(163邮箱)
  8. 打印图片的属性和实现另存图片功能以及使用numpy
  9. 自学python(一)
  10. Zynq7000开发系列-5(OpenCV开发环境搭建:Ubuntu、Zynq)