聚类问题(K-means,系统聚类,SBSCAN算法)

embedded/2025/1/21 16:15:14/

K-means算法

大概的流程

优缺点

步骤

例题:根据消费习惯来对省份进行分类

下面是spss的实操

系统/层次聚类

原理

步骤(以凝聚式聚类为例)

聚类分析需要注意的问题

类型

下面是spss操作

补充:

​编辑

 优缺点

DBSCAN算法

1.原理

算法步骤


K-means算法

一种广泛应用的无监督学习算法,用于将数据集划分为 K 个不同的簇(cluster),使得同一簇内的数据点相似度较高,而不同簇间的数据点相似度较低。

大概的流程

一、指定需要划分的簇[cù]的个数K值)(类的个数)

二、随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点);

三、计算其余的各个数据对象到这K个初始聚类中心的距离,把数据对象划归到距离它最近的那个中心所处在的簇类中:

四、调整新类并且重新计算出新类的中心;

五、循环步骤三和四,看中心是否收敛(不变),如果收敛或达到迭代次数则停止循环:

六、结束

优缺点

优点

简单快速:算法原理简单,易于理解和实现,计算复杂度相对较低,在处理大规模数据集时表现良好。

聚类效果较好:对于球形分布的数据,通常能得到不错的聚类结果,在许多实际应用中能有效地发现数据中的自然分组结构。

缺点

需预先指定簇的数量K :然而,在实际应用中,合适的 K值往往难以确定。不同的  值可能导致不同的聚类结果,选择不当可能无法准确反映数据的内在结构。

对初始簇中心敏感:初始簇中心的选择会影响最终的聚类结果。不同的初始值可能导致算法收敛到不同的局部最优解,从而得到差异较大的聚类结果。

对噪声和离群点敏感:由于簇中心是通过数据点的均值计算得到的,噪声和离群点可能会对簇中心的位置产生较大影响,进而影响聚类效果。

步骤

可以使用K-means++算法对选择初始化聚类中心进行优化:初始化的聚类种的中心之间尽可能的相隔远一点

步骤一:随机选取一个样本作为第一个聚类中心;

步骤二:计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;

步骤三:重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法

类似迪杰斯特拉算法但是是每次大概率选择最远的路,更新最近的.

例题:根据消费习惯来对省份进行分类

省份

食品

衣着

家庭设备

医疗

交通

娱乐

居住

杂项

北京

2959.19

730.79

749.41

513.34

467.87

1141.82

478.42

457.64

天津

2459.77

495.47

697.33

302.87

284.19

735.97

570.84

305.08

河北

1495.63

515.9

362.37

285.32

272.95

540.58

364.91

188.63

山西

1406.33

477.77

290.15

208.57

201.5

414.72

281.84

212.1

内蒙古

1303.97

524.29

254.83

192.17

249.81

463.09

287.87

192.96

辽宁

1730.84

553.9

246.91

279.81

239.18

445.2

330.24

163.86

吉林

1561.86

492.42

200.49

218.36

220.69

459.62

360.48

147.76

黑龙江

1410.11

510.71

211.88

277.11

224.65

376.82

317.61

152.85

上海

3712.31

550.74

893.37

346.93

527

1034.98

720.33

462.03

江苏

2207.58

449.37

572.4

211.92

302.09

585.23

429.77

252.54

浙江

2629.16

557.32

689.73

435.69

514.66

795.87

575.76

323.36

安徽

1844.78

430.29

271.28

126.33

250.56

513.18

314

151.39

福建

2709.46

428.11

334.12

160.77

405.14

461.67

535.13

232.29

江西

1563.78

303.65

233.81

107.9

209.7

393.99

509.39

160.12

山东

1675.75

613.32

550.71

219.79

272.59

599.43

371.62

211.84

河南

1427.65

431.79

288.55

208.14

217

337.76

421.31

165.32

湖南

1942.23

512.27

401.39

206.06

321.29

697.22

492.6

226.45

湖北

1783.43

511.88

282.84

201.01

237.6

617.74

523.52

182.52

广东

3055.17

353.23

564.56

356.27

811.88

873.06

1082.82

420.81

广西

2033.87

300.82

338.65

157.78

329.06

621.74

587.02

218.27

海南

2057.86

186.44

202.72

171.79

329.65

477.17

312.93

279.19

重庆

2303.29

589.99

516.21

236.55

403.92

730.05

438.41

225.8

四川

1974.28

507.76

344.79

203.21

240.24

575.1

430.36

223.46

贵州

1673.82

437.75

461.61

153.32

254.66

445.59

346.11

191.48

云南

2194.25

537.01

369.07

249.54

290.84

561.91

407.7

330.95

西藏

2646.61

839.7

204.44

209.11

379.3

371.04

269.59

389.33

陕西

1472.95

390.89

447.95

259.51

230.61

490.9

469.1

191.34

甘肃

1525.57

472.98

328.9

219.86

206.65

449.69

249.66

228.19

青海

1654.69

437.77

258.78

303

244.93

479.53

288.56

236.51

宁夏

1375.46

480.89

273.84

317.32

251.08

424.75

228.73

195.93

新疆

1608.82

536.05

432.46

235.82

250.28

541.3

344.85

214.4

下面是spss的实操

分析->分类->k均值聚类

下面表示分为两类(这里的k要设置的方便解释)

迭代可以调整最大迭代次数

保存可以保存得出的一些额外的数据

选项

系统/层次聚类

聚类分析中的一种重要方法,它能够构建出一棵具有层次结构的聚类树,展示数据点之间的亲疏关系。

原理

基本思想:系统聚类基于数据点之间的相似性度量,通过不断合并或分裂数据点,形成具有层次结构的聚类结果。它假设数据点之间存在一种自然的层次关系,这种关系可以通过聚类树直观地展现出来。

相似性度量:常用的相似性度量方法包括欧氏距离、曼哈顿距离等用于衡量数值型数据点之间的距离,以此反映它们的相似程度。距离越小,数据点之间的相似性越高。

步骤(以凝聚式聚类为例)

1.初始化:将每个数据点看作一个单独的类,此时类的数量等于数据点的数量。

2.计算类间距离:使用选定的距离度量方法(如欧氏距离),计算每两个类之间的距离。常用的样品之间的距离计算方法有:(xik表示第i个样品的第k个指标)

1)绝对值距离:

2)欧式距离法:

(下面的都不常用)

3)minkowshi距离:

4)chebyshev距离:

5)马氏距离:

比如将高三,8班的30个人,根据他们的6科考试成绩来分类

指标和指标之间的距离:

1)相关系数:

2)夹角余弦:

比如根据高三8班的30个人的成绩,将6门课分为2类

类和类之间的距离:

我们记

1)最短距离法:

取两个类中各取一个点得到的最短距离为类间距离

2)重心法:

两个类之间的距离等于两个类的重心的距离

3.合并类:找到距离最近的两个类,将它们合并为一个新类。

4.更新距离矩阵:由于类的合并,需要重新计算新类与其他类之间的距离,更新距离矩阵。

5.判断终止条件:重复步骤 2 - 4,直到所有数据点都合并到一个类中,或者满足某个终止条件(如达到预设的类的数量)

流程图:

最后会变成如下的图:

(类似霍夫曼树)

聚类分析需要注意的问题

1.对于一个实际问题要根据分类的目的来选取指标,指标选取的不同分类结果一般也不同。

2.样品间距离定义方式的不同,聚类结果一般也不同。

3.聚类方法的不同,聚类结果一般也不同(尤其是样品特别多的时候)。最好能通过各种方法找出其中的共性。

4.要注意指标的量纲,量纲差别太大会导致聚类结果不合理。

5.聚类分析的结果可能不令人满意,因为我们所做的是一个数学的处理,对于结果我们要找到一个合理的解释。

类型

凝聚式聚类从每个数据点作为一个单独的类开始,然后逐步合并相似的类。具体来说,每次迭代时,算法会计算所有类之间的距离,将距离最近的两个类合并为一个新类,这个过程不断重复,直到所有数据点都合并到一个类中,最终形成一棵聚类树。

分裂式聚类与凝聚式聚类相反,它从所有数据点都属于一个大类开始,然后逐步将大类分裂成更小的类。每次迭代时,算法会选择一个类进行分裂,使得分裂后的两个子类之间的差异尽可能大,直到每个数据点都成为一个单独的类,同样形成一棵聚类树。

(这里讲解的是凝聚式)

下面是spss操作

分析->分类->系统聚类:

如下的选择:

统计可以不用管,图可以如下的选择,帮助我们更加直观的反应一些数据

方法里面可以选择之前的距离计算的方法:

如果量纲有差异就可以进行标准化,这里都是元,可以不进行标准化

保存可以选择K的数量和解的范围

得出的谱系图

那么我们就可以根据这个图来选择这个K的值(可以自己根据图区估计)

也可以根据下面的肘部法则来确定最优的k

各个类畸变程度之和:各个类的畸变程度等于该类重心与其内部成员位置距离的平方和;假设一共将n个样本划分到K个类中(K≤n-1,即至少有一类中有两个元素)

在部分多元统计教材中,J又被称为聚合系数。聚合系数折线图:横坐标为聚类的类别数K,纵坐标为聚合系数J

根据下面的表格来画出肘部图

复制到excel中,插入图表

根据k=5的时候,下降的趋势缓和,K<5畸变程度较大(k==3也可以解释)

下面我们就按照K=3去分类

生成如下的结果:

北京

1

天津

1

河北

2

山西

2

内蒙古

2

辽宁

2

吉林

2

黑龙江

2

上海

3

江苏

2

浙江

1

安徽

2

福建

1

江西

2

山东

2

河南

2

湖南

2

湖北

2

广东

3

广西

2

海南

2

重庆

2

四川

2

贵州

2

云南

2

西藏

1

陕西

2

甘肃

2

青海

2

宁夏

2

新疆

2

补充:

图表的绘制:

图表->图表构建器->加入x和y,根据分出来的类分色,将省份作为标签

 优缺点

优点:

不需要预先指定聚类数量:与 K - means 聚类不同,系统聚类不需要事先确定要划分的类的数量,聚类结果的层次结构可以展示不同粒度下的数据分组情况,用户可以根据实际需求和聚类树的结构来选择合适的聚类数量。

聚类结果展示直观:聚类树能够直观地展示数据点之间的亲疏关系和聚类的层次结构,有助于用户理解数据的内在结构和分布特征。

缺点:

计算复杂度高:每次迭代都需要计算所有类之间的距离,随着数据点数量和类数量的增加,计算量会迅速增大,时间复杂度较高,不适合处理大规模数据集。

一旦合并或分裂不可撤销:在凝聚式聚类中,一旦两个类被合并,后续步骤无法撤销这个操作。如果在某个阶段选择了不恰当的合并,可能会导致最终聚类结果不理想。同样,分裂式聚类中一旦类被分裂,也无法恢复。

DBSCAN算法

基于密度的空间聚类算法,它是一种无监督学习算法,主要用于在具有噪声的数据集中发现任意形状的簇,并识别出数据集中的噪声点。

1.原理

核心概念:

邻域:对于数据集中的一个点p,给定半径r,以点p为中心,r为半径的区域内的所有点构成点p的r-邻域,记为 N r(p)。

核心点:如果点p的r-邻域内包含的点数大于或等于某个阈值 MinPts,则点p被称为核心点。核心点意味着在其周围一定范围内有足够多的数据点,表明该区域具有较高的数据密度。

边界点:如果点q在某个核心点p的-邻域内,但点q的r-邻域内的点数小于 MinPts,则点q是边界点。边界点依赖于核心点来确定其所属的簇。

噪声点:既不是核心点也不是边界点的点被认为是噪声点,这些点通常是孤立的,在其周围没有足够的数据点形成有意义的簇。

密度可达:如果存在一条从核心点p到点q的点链,其中链上的每个点都在其前一个点的r-邻域内,且链上的第一个点是核心点,那么称点q从核心点p密度可达。

密度相连:如果存在一个核心点o,使得点p和点q都从点o密度可达,那么称点p和点q密度相连。

聚类原理:DBSCAN 通过检查数据集中每个点的-邻域来确定该点是核心点、边界点还是噪声点。然后基于核心点的密度可达关系将数据点划分为不同的簇,密度相连的数据点构成一个簇。

算法步骤

1,初始化,确定r和MinPts,两个参数的选择对聚类结果有重要影响,通常需要根据数据的特点和经验进行调整。

2,遍历数据集:

对于数据集中的每个点 p:计算点 p的 r - 邻域 Nr(p),

1)如果领域中的点的数量大于MinPts,那么p就是核心点,创建一个新的簇C,并且将p及其密度可达的所有点加入C中。

2)如果领域中的点的数量小于MinPts,则 p不是核心点。如果 p尚未被分配到任何簇中,则将p标记为噪声点。

3,重复聚类:重复步骤2,知道数据点都被处理完毕。

 优缺点

优点:

能够发现任意形状的簇:不像 K - means 等算法倾向于发现球形的簇,DBSCAN 可以根据数据点的密度分布发现任意形状的簇,适用于各种复杂的数据分布情况。

对噪声点不敏感:可以直接识别并标记出数据集中的噪声点,而 不会将噪声点错误地划分到某个簇中,使得聚类结果更加准确和可靠。

无需预先知道要形成的簇类的数量:与 K - means 等需要预先指定聚类数量的算法不同,DBSCAN 根据数据的密度自动确定簇的数量,减少了用户对聚类数量先验知识的依赖。

缺点:

参数选择困难:r和MinPts 的选择对聚类结果影响很大,但没有通用的方法来确定最优值。不合适的参数可能导致聚类结果不理想,例如将过多的点标记为噪声点,或者将不同的簇合并为一个簇。

计算复杂度较高:在最坏情况下,DBSCAN 的时间复杂度为O(N^2),其中N是数据点的数量。对于大规模数据集,计算量较大,可能需要较长的运行时间。

不适合高维数据:随着数据维度的增加,数据点之间的距离度量变得不太可靠,密度的概念也变得模糊,导致聚类效果下降。这是因为在高维空间中,数据点趋于稀疏,传统的基于距离的密度定义不再有效,即所谓的 “维度灾难” 问题。


http://www.ppmy.cn/embedded/155813.html

相关文章

npm配置electron专属的淘宝镜像进行安装

nodejs的版本是22.13 npm配置electron专用的淘宝镜像&#xff0c;不配置会下载很慢 npm config edit在打开的文本编辑框里&#xff0c;在最下面空白的地方填写下面的信息 registryhttps://registry.npmmirror.com electron_mirrorhttps://cdn.npmmirror.com/binaries/electr…

ubuntu22.04编译多个版本OpenCV

按照本文方法可以实现ubuntu22.04上面同时存在OpenCV4.5.5和OpenCV4.9.0。方法其实是按照正常的流程就可以&#xff0c;参照这个&#xff1a;ubuntu18.04openc4.5.5contrib 4.5.5编译_ubuntu18 anzhuang opencv4.5.5-CSDN博客 需要修改的地方是在第6步“保存path&#xff0c;方…

java微服务中消息队列处理中间件基础语法学习,零基础学习

在 Java 微服务中&#xff0c;消息队列处理中间件可以帮助实现服务之间的异步通信、解耦和负载均衡。常用的 Java 消息队列工具包括 RabbitMQ、Apache Kafka 和 ActiveMQ。下面我将详细介绍这些消息队列工具在 Java 中的基础语法和使用方法。 1. RabbitMQ RabbitMQ 是一个广泛…

TryHackMe - Linux - Mountaineer

Mountaineer 6w$的事情出现了反转&#xff0c;目前还没有最新消息&#xff0c;后面差不多了再出后续&#xff0c;不管怎样我们都是罐菌&#xff0c;恭喜张云彬拿下2024 QQ飞车年度总决赛冠军&#x1f3c6; 最近换了MacBook Pro&#xff0c;玩几台靶机找找手感&#xff0c;mac…

【k8s面试题2025】2、练气初期

在练气初期&#xff0c;灵气还比较稀薄&#xff0c;只能勉强在体内运转几个周天。 文章目录 简述k8s静态pod为 Kubernetes 集群移除新节点&#xff1a;为 K8s 集群添加新节点Kubernetes 中 Pod 的调度流程 简述k8s静态pod 定义 静态Pod是一种特殊类型的Pod&#xff0c;它是由ku…

一文大白话讲清楚webpack基本使用——4——vue-loader的配置和使用

一文大白话讲清楚webpack基本使用——4——vue-loader的配置和使用 1. 建议按文章顺序从头看是看 第一篇&#xff1a;一文大白话讲清楚啥是个webpack第二篇&#xff1a;一文大白话讲清楚webpack基本使用——1——完成webpack的初步构建第三篇一文大白话讲清楚webpack基本使用…

小型分布式发电项目优化设计方案

一、项目背景与目标 在能源转型的大趋势下&#xff0c;小型分布式发电项目凭借其高效、灵活等优势&#xff0c;成为满足特定区域用电需求的重要方式。本项目选址于[具体地点]&#xff0c;此地年均日照时长可观&#xff0c;具备良好的太阳能资源开发潜力。项目旨在构建一个稳定…

Python并发编程 07 事件驱动模型、进程切换、进程阻塞、文件描述符、缓存I/O、selectors模块

文章目录 一、事件驱动模型二、进程切换三、进程阻塞四、文件描述符五、缓存I/O1、缓存I/O概述2、IO模型&#xff08;1&#xff09;阻塞(blocking) IO&#xff08;2&#xff09;非阻塞(nonblocking) IO&#xff08;3&#xff09;IO多路复用&#xff08;I/O multiplexing&#x…