聚类分析的基本概念和方法


文章目录

  • 聚类分析的基本概念和方法
  • 前言
  • 一、什么是聚类分析
    • 1、聚类分析基本流程与步骤
    • 2、 什么是好的聚类方法
    • 3、聚类的模型评估
    • 4、聚类分析的比较
    • 5、聚类分析的挑战
  • 二、基本聚类方法概述
  • 三、划分算法
    • 1、基本概念
    • 2、k-means 聚类方法
      • 1、k-means 方法的优缺点
      • 2、k-means 方法的变种
    • 3、k-中心聚类方法
      • 1.判定原则
      • 2、步骤
    • 层次聚类
    • 4、 密度聚类(重点DBSCAN)
      • 1、基于密度聚类的基本概念
      • 2、DBSCAN 算法逻辑
    • 心得

前言

  此文章主要讲解聚类分析的基本概念和方法,参考的内容是《数据挖掘概念与技术》Jiawei Han  Micheline Kamber  Jian Pei 著。


一、什么是聚类分析

  聚类分析: 是把一个数据对象划分成子集的过程,每个子集是一个簇,满足一下两点:

  • 簇中对象彼此相似。
  • 簇间对象彼此相异。

说到了聚类分析,就离不开无监督学习:没有预先定义的类
  聚类分析典型的应用:

  • 作为洞悉数据分布的独立工具。
  • 作为其他算法的预处理步骤。

1、聚类分析基本流程与步骤

  1、特征选择:

  • 选择跟任务相关的信息。
  • 最小化信息冗余。

  2、邻近性度量:两个特征向量的相似性。
  3、聚类准则:通过成本函数或一些规则表示。
  4、聚类算法:选择聚类算法。
  5、聚类评估:验证测试。
  6、结果解释:集成在应用中。

2、 什么是好的聚类方法

  一个好的聚类方法可以产生高质量的簇:

  • 高类内相似性,簇内的内聚性。
  • 低类间相似性,簇间区别。

  聚类方法的质量取决于:

  • 该方法采用的相似度量和它的实现。
  • 它能够发现一些或所有隐藏的模式。

说白了,就是把数据集分成几个子集,越容易区分越好。

3、聚类的模型评估

  相似性度量:

  • 相似性度量通常用距离表示:d(i, j).
  • 不同类型的数据(布尔值、分类、序数比、向量变量),距离函数存在很大的差异。
  • 根据应用和数据语义,权重应该与不同的变量相关联。

  聚类质量:

  • 通常有一个单独的 “质量” 函数来度量簇的 “质量”。
  • 很难定义 “足够相似” 和 “足够好”,答案通常都是非常主管的。

4、聚类分析的比较

  划分标准:单层分区与分层分区(通常多级分层分区更容易描述)。
  簇的分离性:排他性(一个客户只属于一个区域)与非排他性(一个文档可能属于多个类)。
  相似性度量:基于距离的(欧几里得,曼哈顿、切比雪夫),基于联通的(密度或连通性)。
  聚类空间:全空间(通常在低纬度)与子空间(通常在高纬度集群中)

5、聚类分析的挑战

  可伸缩性:对多有数据进行聚类,而不是对样本聚类。
  能够处理不同类型的属性:数值的、二元的、序数的。
  基于约束的聚类:用户可以输入约束条件,使用领域知识确定输入参数。
  用于决定输入参数的领域知识最小化。可解释性和可应用性强。
  其他:发现具有任意形状的簇,能够处理有噪声的数据,增量聚类和对输入顺序不敏感,高纬度数据。

二、基本聚类方法概述

  划分方法:构造不同的分区,然后根据一些标准对他们进行评估。典型的方法有:K-means,K-中心点,CLARANS.
  层次方法:使用一些标准对数据集分层。典型的方法:Diana,Agnes,BIRCH,CAMELEON.
  基于密度的方法:基于连通性和密度函数。典型方法:DBSCAN,OPTICS,DenClue.
  基于网络的方法:基于多粒度结构。典型的方法:STING,WaveCluster,CLIQUE

方法 一般特点
划分方法 ①发现球形互斥的簇 ②基于距离 ③可以使用均值或中心点等代表簇中心 ④对中小数据规模有效
层次方法 ①聚类是一个层次分解 ②不能纠正错误的合并或划分 ③可以集成其他技术,如微聚类或考虑对象链接
基于密度方法 ①可以发现任意形状的簇 ②簇是对象空间中被低密度区域分隔的稠密区域 ③簇密度:每个点的邻域内必须具有多少个点(阈值点)④可能过滤离群点
基于网络的方法 ①使用一种多分辨率网格数据结构 ②快速处理(典型地,独立于数据对象,但依赖于网格大小)

三、划分算法

1、基本概念

  划分方法:将一个包含 n 个对象的数据集 D 划分成 k 个簇。使距离平方和最小化(cic_ici​ 是簇cic_ici​ 的中心或质心)
E=∑i=1kΣp∈Ci(d(p,ci))2E=\sum_{i=1}^{k} \Sigma_{p \in C_{i}}\left(d\left(p, c_{i}\right)\right)^{2}E=i=1∑k​Σp∈Ci​​(d(p,ci​))2
  给定 k,根据选定的划分标准找出最优的 k 个簇。

  • 全局最优(Global optimal): 枚举所有的划分。
  • 启发式方法(Heuristic methods):K-means,K-medoids算法。
  • K-means:每个簇用簇中心表示。
  • K-medoids:每个簇用接近聚类中心的对象表示。

2、k-means 聚类方法

  k-means 算法分成四个步骤:

  1. 首先输入 k 的值,即具有 n 个对象的数据集 D={o1,o2,...,on}D=\{o_1,o_2, ... ,o_n\}D={o1​,o2​,...,on​} 经过聚类将得到 k 个分类或者分组。
  2. 从数据集中随机选择 k 个对象作为簇质心,每个簇质心代表一个簇,得到的簇质心集合为 Centroid={c1,c2,...,ck}Centroid=\{c_1,c_2, ... ,c_k\}Centroid={c1​,c2​,...,ck​}。
  3. 对 D 中每一个对象 oio_ioi​,计算 oio_ioi​ 与 cic_ici​ 的距离,得到一组距离值,选择最小距离值的簇质心 csc_scs​ .将对象 oio_ioi​ 划分给 csc_scs​ 簇。
  4. 根据每个簇所包含的对象集合,重新计算簇中所有对象的平均值得到一个新的质心,重复步骤 3 和 4.直到簇的质心不在变化。

1、k-means 方法的优缺点

  优点:

  • 擅长处理球状分布的数据,当结果聚类是密集的,而且类和类直接的区别比较明显时,k-means 算法的效果较好。
  • 对于处理大数据集,是相对可伸缩和高效的,复杂度是 O(nkt), n 是对象个数,k 是簇的数目,t 是迭代的次数。
  • 相比较其他的算法简单,容易掌握。

  缺点:

  • 需要预先指定集群的数量 k (有自动确定 k 最佳的方法)
  • 对噪声和离群点敏感。
  • 不适合发现非凸形状的簇。

2、k-means 方法的变种

  大多数 k-means 方法的变种在于以下几个方面;

  • 初始 k 平均值的选择。
  • 相异度的计算。(距离公式)
  • 计算聚类平均值的策略。(中心点)

处理分类数据 k-众数:

  • 用众数代替聚类的平均值。
  • 使用新的相异性度量方法来处理分类对象。
  • 用基于频率的方法来更新聚类的众数。
  • k-prototype:一种混合处理分类数据和数值数据的方法。

注意:k-means 算法对孤立点很敏感:均值由于极大值的对象可能会严重的扭曲数据的分布。

3、k-中心聚类方法

  k-medoids(k-中心) :不采用簇中对象的平均值作为参照点,而是选用簇中位置最中心的对象最为参照点,也就是簇中心肯定是一个对象。
  k-中心 基本思想:

  1. 首先为每个簇随意选择一个代表对象;剩余的对象根据其与代表对象的距离分配给最近的一个簇。
  2. 反复地使用非代表对象来替代代表对象,以改进聚类的质量。
  3. 聚类结果的质量用一个代价函数来估算,该函数评估了对象与其参照对象之间的平均相异度。

PMA (Partitioning Around Medoids,1987)就是利用上述方法,它对于较小的数据集非常有效,但不能很好的扩展到大型数据集。

1.判定原则

  为了判定一个非代表对象 OrandomO_{random}Orandom​ 是否是当前一个代表对象 OjO_jOj​ 的好的代替,对于每一个非代表对象 p,考虑以下四种情况:

  • 第一种情况:p 当隶属于代表对象 OjO_jOj​.如果 OjO_jOj​ 被 OrandomO_{random}Orandom​ 所代替,且 p 离 OiO_iOi​ 最近,i ≠ j,那么 p 被重新分给 OiO_iOi​。老大跑远了,投靠最近的强势势力。这里就等于叛变了。
  • 第二种情况:p 当隶属于代表对象 OjO_jOj​.如果 OjO_jOj​ 被 OrandomO_{random}Orandom​ 所代替,且 p 离 OjO_jOj​ 最近,那么 p 被重新分给 OrandomO_{random}Orandom​。部落换了一个首领,变成老大的儿子,对象离家近,任然属于这个部落,只不过老大换了人。
  • 第三种情况:p 当隶属于代表对象 OiO_iOi​.如果 OjO_jOj​ 被 OrandomO_{random}Orandom​ 所代替,且 p 任然离 OiO_iOi​ 最近,i ≠ j,那么 p 隶属关系不改变。
  • 第四种情况:p 当隶属于代表对象 OiO_iOi​.如果 OjO_jOj​ 被 OrandomO_{random}Orandom​ 所代替,且 p 任然离 OjO_jOj​ 最近,i ≠ j,那么 p 被重新分配给OrandomO_{random}Orandom​。

2、步骤

  算法 k-中心:

  1. 随机选择 k 个对象作为初始的代表对象。
  2. repeat:
    1. 指派每个剩余的对象给离它最近的代表对象所代表的簇。
    2. 随意的选择一个非代表对象 OrandomO_{random}Orandom​.
    3. 计算用 OrandomO_{random}Orandom​ 代替 OjO_{j}Oj​ 的总代价 S.
    4. 如果 S 小于 0,则使用 OrandomO_{random}Orandom​ 替换 OjO_{j}Oj​,形成新的代表对象的集合。
  3. Utill:不发生变化。

层次聚类

  使用距离矩阵作为聚类准则。这个方法不需要簇 k 的数量作为输入,但是需要一个终止条件。

上图就是 AGNES 算法和 DIANA 算法简略图,这个不作为重点学习,需要了解的请查阅别处资料。

4、 密度聚类(重点DBSCAN)

1、基于密度聚类的基本概念

  两大参数:

  • Eps: 邻域的最大面积。
  • MinPts: 该点一个最大半径邻域内的最少点数。

  NEpsN_{Eps}NEps​ : {P属于数据集D∣dist(p,q)≤Eps}\{P 属于数据集 D\space | \space dist(p,q)\leq Eps\}{P属于数据集D ∣ dist(p,q)≤Eps} ,给定对象半径为 Eps 内的区域称为该对象的 E 邻域。
  核心对象:如果给定对象 E 邻域内的样本点数大于或者等于 MinPts, 该对象为核心对象。
  直接密度可达:对于样本集合 D,如果样本点 p 在 q 的 E 邻域内,并且 q 为核心对象,那么对象 p 从对象 q 直接密度可达。

  密度可达:对于样本集合D, 给定一串样本点 p1, p2, … ,pn, p = p1, q = pn, 假如 pi 从 pi-1 直接密度可达,那么对象 q 到对象 p 密度可达。传递性。

  密度相连:对于样本集合 D 种一点 o,如果对象 o 到对象 p 和对象 q 都是密度可达的,那么 p 和 q 密度相连。也就是在密度可达中间加了一个对象,传递得更远而已。我们通过这种传递性,可以更好的聚类。

  DBSCAN 应用:依赖于基于密度的簇概念,簇被定义为密度连接点的最大集合。在有噪声的空间中发现任意形状的簇。

2、DBSCAN 算法逻辑

  1. 任意选择一个样本点 p。
  2. 基于半径和最小点数检索所有密度可及的点。
  3. 如果 p 是一个核心点,则形成一个簇。
  4. 如果 p 是一个边界点,那么 p 上没有一个密度可达的点,DBSCAN 访问下一个点。
  5. 继续这个过程,直到处理完所有的点。
  6. 如果使用空间索引,DBSCAN 的计算复杂度为 O(nlogn)O(nlogn)O(nlogn),其中 n 是数据集中数据对象的数量,否则,时间复杂度为 O(n2)O(n^2)O(n2).

  DBSCAN 伪代码:

心得

  介绍了聚类里面基础的知识和几个三个经典的聚类算法。这只是一种认识,希望可以带来入门级的理解,需要熟练掌握的话要多用。对于机器学习的友友们,算法的基本流程可能不能满足你们,实现出来或者要看清怎么实现的具体细节还需要自己去哔站搜索。算法是美丽的,过程简单,实现简单,关键要我们怎么开拓思维。好的数学功底,编程能力,语言组织(怎么转换成数学语言,怎么讲清刚认识的算法)都是干我们这行所具备的。模仿吧,模仿多了直到那些人的作品不好,再往后面知道怎么改造形成自己喜欢的风格,最后就是你自己的了。

聚类分析的基本概念和方法相关推荐

  1. 【数据挖掘笔记十】聚类分析:基本概念和方法

    1) 10.聚类分析:基本概念和方法 聚类是一个把数据对象集划分成多个组或簇的过程,使得簇内的对象具有很高的相似性,但与其他簇中的对象很不相似.相异性和相似性根据描述对象的属性值评估,涉及到距离度量. ...

  2. 【读书笔记-数据挖掘概念与技术】聚类分析:基本概念和方法

    下图摘自:http://blog.163.com/qianshch@126/blog/static/48972522201092254141315/ 主要的聚类方法可以划分为以下几类: 划分方法 层次 ...

  3. 《数据挖掘导论》学习 | 第八章 聚类分析:基本概念和算法

    目录 第八章 聚类分析:基本概念和算法 概述 不同的聚类类型 不同的簇类型 K均值 基本K均值算法 K均值:附加的问题 二分K均值 K均值和不同的簇类型 优点与缺点 K均值作为优化问题 凝聚层次聚类 ...

  4. 【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法

    6.挖掘频繁模式.关联和相关性:基本概念和方法 频繁模式(frequent pattern)是频繁地出现在数据集中的模式. 6.1 基本概念 频繁模式挖掘搜索给定数据集中反复出现的联系,旨在发现大型事 ...

  5. 《Python数据挖掘:概念、方法与实践》——1.5节小结

    本节书摘来自华章社区<Python数据挖掘:概念.方法与实践>一书中的第1章,第1.5节小结,作者[美] 梅甘·斯夸尔(Megan Squire),更多章节内容可以访问云栖社区" ...

  6. 《Python数据挖掘:概念、方法与实践》一2.4 小结

    本节书摘来自华章出版社<Python数据挖掘:概念.方法与实践>一书中的第2章,第2.4节,作者[美] 梅甘·斯夸尔(Megan Squire),更多章节内容可以访问云栖社区"华 ...

  7. bootstrap的概念使用方法

    bootstrap的概念&使用方法 使用CDN引入boostrap: <!-- Bootstrap 核心 CSS 文件 --> <link rel="stylesh ...

  8. 计算机模拟的概念,数值模拟的概念与方法.ppt

    <数值模拟的概念与方法.ppt>由会员分享,可在线阅读,更多相关<数值模拟的概念与方法.ppt(20页珍藏版)>请在人人文库网上搜索. 1.土木工程数值模拟技术与应用,讲授内容 ...

  9. 几种生态廊道构建概念、方法和工具的本质比较

    这篇文章主要来介绍几种构建生态廊道的概念.方法和工具的本质上的异同点,包括MCR,LCP,MSPA, Guidos,Graphab,Linakge mapepr, 图论,电路理论,circuitsca ...

  10. 概要设计、详细设计:概念、方法、实践步骤

    完整软件开发流程: 需求分析.概要设计.详细设计 一 1.  概念.方法.实践步骤 设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程.根据设计粒度和目的的不同可以将设计分为概要设计. ...

最新文章

  1. 王吉伟:厉害了王坚的《在线》 未来世界还有什么不能被计算?
  2. 一篇文章对Python匿名函数配合容器函数的使用理解
  3. HATEOAS的RESTful服务。 超媒体:REST的秘密要素
  4. 《Python程序设计》——1.2 程序开发周期
  5. Oracle基础知识-SQL简单命令
  6. 配置监控中心-及管理平台
  7. MATLAB中特殊图形的绘制
  8. TypeScript:函数进阶
  9. Android软键盘的删除键和activity返回冲突
  10. 基于两输出一输入BP神经网络的传感器检测数据融合(附带MATLAB代码)
  11. 跨考计算机要选择408吗,408难度比较大,对于跨考更是如此,应从以下三个方面做准备...
  12. 高项 案例分析重点知识 进度成本质量
  13. 用实际例子详细探究OpenCV的轮廓检测函数findContours(),彻底搞清每个参数、每种模式的真正作用与含义
  14. Transformer(“变形金刚”)
  15. 普通话测试软件测试成绩很差,普通话测试成绩的差异性分析
  16. Elasticsearch的节点与分片
  17. i5 12600k参数 i512600k评测
  18. 在微信小程序中使用自定义字体【font-family】、同时在canvas
  19. Egret Wing3编译时“输出”显示乱码而且编译终止
  20. Laravel Redis的使用

热门文章

  1. 计算机启动硬盘自检,启动时硬盘自检?这样处理就没事了
  2. 使用Certbot申请ssl证书
  3. IBM应用SOA 开创网上“虚拟故宫”
  4. mysql脏读和幻读区别_数据库的脏读、不可重复读和幻读区别
  5. 运营简史:一文读懂互联网运营的20年发展与演变
  6. 2021年度训练联盟热身训练赛第八场 自我总结
  7. 通过微软服务中心取回MSN帐号的过程
  8. 2011年下半年11月份系统架构设计师上午试题答案之二
  9. Android developer 阅读笔记--应用资源概览
  10. 青蛙跳台阶问题(超详解)