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

news2025/7/19 9:04:00

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


文章目录

  • 聚类分析的基本概念和方法
  • 前言
  • 一、什么是聚类分析
    • 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 个簇。使距离平方和最小化( c i c_i ci 是簇 c i c_i ci 的中心或质心)
E = ∑ i = 1 k Σ p ∈ C i ( d ( p , c i ) ) 2 E=\sum_{i=1}^{k} \Sigma_{p \in C_{i}}\left(d\left(p, c_{i}\right)\right)^{2} E=i=1kΣpCi(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 = { o 1 , o 2 , . . . , o n } D=\{o_1,o_2, ... ,o_n\} D={o1,o2,...,on} 经过聚类将得到 k 个分类或者分组。
  2. 从数据集中随机选择 k 个对象作为簇质心,每个簇质心代表一个簇,得到的簇质心集合为 C e n t r o i d = { c 1 , c 2 , . . . , c k } Centroid=\{c_1,c_2, ... ,c_k\} Centroid={c1,c2,...,ck}
  3. 对 D 中每一个对象 o i o_i oi,计算 o i o_i oi c i c_i ci 的距离,得到一组距离值,选择最小距离值的簇质心 c s c_s cs .将对象 o i o_i oi 划分给 c s c_s cs 簇。
  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.判定原则

  为了判定一个非代表对象 O r a n d o m O_{random} Orandom 是否是当前一个代表对象 O j O_j Oj 的好的代替,对于每一个非代表对象 p,考虑以下四种情况:

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

在这里插入图片描述

2、步骤

  算法 k-中心:

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

在这里插入图片描述

层次聚类

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

在这里插入图片描述

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

4、 密度聚类(重点DBSCAN)

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

  两大参数:

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

   N E p s N_{Eps} NEps : { P 属 于 数 据 集 D   ∣   d i s t ( p , q ) ≤ E p s } \{P 属于数据集 D\space | \space dist(p,q)\leq Eps\} {PD  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 ( n l o g n ) O(nlogn) O(nlogn),其中 n 是数据集中数据对象的数量,否则,时间复杂度为 O ( n 2 ) O(n^2) O(n2).

  DBSCAN 伪代码:

在这里插入图片描述

心得

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CMake中configure_file的使用

CMake中的configure_file命令用于将一个文件拷贝到另一个位置并修改其内容&#xff0c;其格式如下&#xff1a; configure_file(<input> <output>[NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS |FILE_PERMISSIONS <permissions>...][COPYONLY] [ESCAPE_…

01 一条SQL 语句是如何执行的?

select * from teacher where id 10 1、一条简单的sql语句底层的执行过程是怎么样的&#xff1f; 答&#xff1a;一条sql执行会经过连接器、查询缓存、分析器、优化器和执行器等步骤。 2、连接器的作用是什么&#xff1f; 答&#xff1a;sql查询&#xff0c;首先连接到这个数…

【机器学习项目实战10例】(四):利用XGBoost实现短期电力负荷预测

💥 项目专栏:【机器学习项目实战10例】 文章目录 一、利用XGBoost实现短期电力负荷预测二、数据集介绍三、将数据进行标准化四、形成训练数据五、划分训练集、测试集六、定义模型七、模型训练八、训练集、测试集验证九、网络搜索十、绘制结果一、利用XGBoost实现短期电力负荷…

分布式事务

一、事务 1.1、什么是事务&#xff1f; 事务&#xff08;transaction&#xff09;是访问并操作数据库中数据的一个程序执行单元&#xff0c;由开始事务和提交事务之间的所有的语句组成。事务的结束有两种&#xff0c;一个是事务中间的所有操作执行成功&#xff0c;提交事务。一…

UE5笔记【九】蓝图BluePrint;

新建一个第三视角游戏。然后打开关卡蓝图。 长得跟材料编辑器一样。 这里是我们创建Node和新功能的地方。 首先我们新建一个游戏开始的地方。右键&#xff1a;Begin搜索。 我们需要打印一行字&#xff1a;欢迎来到游戏世界。我们需要添加一个打印文本的结点&#xff1a;PrintT…

APS自动排产 — 排产结果拉动物料需求计划

一、APS系统生产计划前应该注意哪些 建立好基础资料 标准产能&#xff1a;所有产品的标准产能&#xff0c;来自于工程技术部。如果工程技术部无法提供标准产能&#xff0c;则请生产部门根据实际提供相对准确的标准产能。技术资料&#xff1a;产品的物料清单(BOM)、图纸、工程…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java线上学习系统8e88w

做毕业设计一定要选好题目。毕设想简单&#xff0c;其实很简单。这里给几点建议&#xff1a; 1&#xff1a;首先&#xff0c;学会收集整理&#xff0c;年年专业都一样&#xff0c;岁岁毕业人不同。很多人在做毕业设计的时候&#xff0c;都犯了一个错误&#xff0c;那就是不借鉴…

ArcGIS中ArcMap图层属性表的中文字段乱码的解决方法

本文介绍ArcMap软件打开图层的属性表后&#xff0c;出现字段中汉字乱码情况的解决方法。 有时在使用ArcMap软件时&#xff0c;会发现一些图层的属性表中&#xff0c;原本应该是中文的字段却出现乱码的情况&#xff1b;如下图所示&#xff0c;其中NAME99一栏应该是图层中各个要素…

50-51 - C++对象模型分析

---- 整理自狄泰软件唐佐林老师课程 1. 回归本质 1.1 class是一种特殊的struct 在内存中class依旧可以看作 变量的集合class与struct遵循相同的 内存对齐 规则class中的成员函数与成员变量是 分开存放 的 每个对象有独立的成员变量所有对象共享类中的成员函数 1.2 值得思考…

OpenGL ES 学习(四) -- 正交投影

这里的内容基本参考于 https://www.jianshu.com/p/51a405bc52ed &#xff0c;因为写得很好&#xff0c;也没啥补充的&#xff0c;就当做记录一下。 这里先简单解决变形的问题&#xff0c;关于 OpenGL 更多图形矩阵变换&#xff0c;等后面再详细讲。 一. 归一化设备坐标 在Ope…

forplo | 冲冲冲!这个画森林图的包好flexible哦~

1写在前面 我想大家肯定都用过森林图&#xff0c;应用比较多的场景可能是展示meta分析&#xff0c;回归分析结果的时候。&#x1f973; 画森林图的包还是挺多的&#xff0c;今天介绍一下forplo包的用法。&#x1f618; 2用到的包 rm(list ls())library(tidyverse)library(forp…

(第九十三篇)C规范编辑笔记(五)

往期文章&#xff1a; C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) 正文&#xff1a; 继第四篇C规范编辑笔记之后&#xff0c;我们今天来分享第五篇C规范编辑笔记&#xff0c;讲解部分类型初始化时候的建议&#xff0c;话不多说&#xff0c;我…

wodP2P ActiveX 最新版 Crack

wodP2P ActiveX 组件 网络P2P ActiveX 客户端 OCX/DLL&#xff0c;V-P-N 组件&#xff0c;P2P 组件&#xff0c;P2P 库 wodP2P 是 P2P 点对点 ActiveX 组件&#xff0c;用于在两个对等点之间建立虚拟专用网络。所有 P2P 通信都经过加密和保护。对等点能够转发本地和远程端口、发…

Ubuntu 20.04系统中Sage(sagemath)安装及使用详细过程

文章目录一、安装方式一&#xff1a;预编译二进制版本二、安装方式二&#xff1a;源码编译最近在做实验遇到要安装Sage&#xff0c;也是花了将近三天时间才弄好&#xff0c;一波三折整理了一下&#xff0c;以便后续还要安装时能少走弯路。首先&#xff0c;了解一下sage是什么。…

fiddler抓包

首先安装fiddler官网地址 安装完毕之后&#xff0c;这时fiddler软件是抓取不了https的请求数据包的 fiddler 抓取https请求数据包 打开fiddler 一次点击 工具 -> 选项 -> HTTPS 勾选上面选中 的选项 依次进行以下步骤即可 解压fiddler包&#xff0c; 安装fidder 打开…

Servlet到底是什么(非常透彻)

Servlet到底是什么&#xff1f;1. Servlet的概念2. Servlet是一种规范3. Servlet的接口4. JSP是什么学习顺序1. Servlet的概念 Servlet 是 Server Applet 的缩写&#xff0c;译为“服务器端小程序”&#xff0c;是一种使用 Java 语言来开发动态网站的技术。 Servlet 虽然被称…

deepvariant 基因变异识别算法docker版使用

参考&#xff1a;https://github.com/google/deepvariant docker版安装 参考&#xff1a;https://github.com/google/deepvariant/blob/r1.4/docs/deepvariant-quick-start.md 本文是windows上安装的deepvariant 1.4.0版本 docker pull google/deepvariant:1.4.0docker版使用…

用SPDK实现存储加速

个人理解nvme能提高存储性能&#xff0c;就像4G比3G快一样&#xff0c;电磁波还是光速&#xff0c;但协议变了&#xff0c;所以快了。rdma应用跑在用户态能减小存储时延&#xff0c;spdk在用户态实现nvme驱动&#xff0c;天然能和rdma结合&#xff0c;而且两者的队列能一一映射…

python内存泄漏浅析

一、概述 以前没有对内存泄漏有过相关的排查手段&#xff0c;一般个人使用python写的程序&#xff0c;不是那种长时间运行的程序&#xff0c;很少会去注意内存是否出现泄漏&#xff0c;但是如果程序是作为服务器的服务&#xff0c;需要长时间运行的&#xff0c;即使是很小的内…

毕业设计-基于机器视觉的口罩佩戴检测识别

目录 前言 课题背景和意义 实现技术思路 数据来源 COCO数据集预训练模型 图片检测 视频检测 训练&评估结果 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近…