【机器学习】无监督学习 —— K-Means 聚类、DBSCAN 聚类

作者:一杯水果茶!日期:2025/10/9

  • K-Means 聚类
    • 标准 K-Means 算法
    • K-Means 评估:肘部法则(Elbow Method)与轮廓系数(Silhouette Score)
      • 1. 肘部法则(Elbow Method)
        • 2. 轮廓系数(Silhouette Score)
  • DBSCAN 聚类(Density-Based Spatial Clustering of Applications with Noise)
    • DBSCAN 的关键参数
    • DBSCAN 算法

K-Means 聚类

K‑Means 聚类 是一种 无监督机器学习算法,通过 数据点的内在相似性 将其 分组为簇目标 是 将数据集划分为 k kk 个簇,使得每个簇内的数据点彼此之间的相似度高于与其他簇中的数据点的相似度。

不同于使用带标签数据进行模型训练的监督学习,K‑Means 适用于没有标签的数据,目标是发现隐藏的模式或结构。

例如,在线商店可以使用 K‑Means 将客户根据购买历史划分为“💰预算购物者”“🛒常买者”和“💎大额消费者”等群体。

Wiki:k‑means 聚类是一种向量量化方法,最初来自信号处理,旨在将 n nn 个观测值划分为 k kk 个簇,使每个观测值属于与其最近均值(簇中心)最近的簇。k‑means 聚类 最小化簇内方差平方欧氏距离),而不是普通欧氏距离。

标准 K-Means 算法

在这里插入图片描述

  1. 在数据域内 随机生成 k 个初始 “means”(此处 k = 3 k=3k=3)
  2. 通过 将每个观测值与最近的均值关联创建 k kk 个簇
  3. 每个 k kk 簇的质心 成为 新的均值
  4. 重复 步骤 2 和步骤 3,直至 收敛

在这里插入图片描述

该算法并 不能保证收敛到全局最优解,结果可能取决于初始聚类。由于该算法通常很快,常会 在不同的初始条件下多次运行它

常用的 初始化方法 有 Forgy 和 Random Partition,Forgy 方法倾向于 将初始均值分散开来,而 Random Partition 方法则 把初始均值全部放在数据集中心附近

  • Forgy 方法数据集中随机选择 k kk 条观测,并将这些观测 作为初始均值
  • Random Partition 方法 首先 随机为每条观测分配一个簇,然后进入更新步骤,从而 将初始均值计算为该簇随机分配点的质心

K-Means 评估:肘部法则(Elbow Method)与轮廓系数(Silhouette Score)

K-means 聚类简单,但 对初始条件和离群点敏感。重要的是 优化中心点的初始化 以及 簇的数目 k kk,以获得最有意义的簇。实践中常结合如 “肘部法则(Elbow Method)” 或 “轮廓系数(Silhouette Score)” 等指标来评估最佳簇数,可先用 肘部法则 做快速筛选(确定一个可能的范围,例如 k ∈ [ 2 , 10 ] k \in [2,10]k∈[2,10]),再用 轮廓系数 在该范围内做更精细的评估。

1. 肘部法则(Elbow Method)

核心思想:肘部法则通过观察不同簇数 k kk 下的 簇内误差平方和(Within-Cluster Sum of Squares, 简称 WCSS 或 inertia) 随 k kk 的变化来选择合适的 k kk。

当 k kk 增加时,inertia 会下降(簇更细,点到质心距离减小);在某个点以后,inertia 的 下降幅度会显著变小,图形看起来像 肘部拐点 —— 那个“拐点”对应的 k kk 就是推荐的簇数。

常用指标是 KMeans 的 inertia_
inertia = ∑ j = 1 k ∑ x i ∈ C j ∣ x i − μ j ∣ 2 \text{inertia} = \sum_{j=1}^{k}\sum_{x_i \in C_j} |x_i - \mu_j|^2 inertia=j=1∑k​xi​∈Cj​∑​∣xi​−μj​∣2
其中 μ j \mu_jμj​ 是簇 C j C_jCj​ 的均值(质心)。

2. 轮廓系数(Silhouette Score)

核心思想:轮廓系数衡量 单个样本 在其 所属簇内的紧密程度与最近邻簇的分离程度,取值范围 [ − 1 , 1 ] [-1, 1][−1,1]。对整个聚类,用平均轮廓系数衡量聚类质量。

对样本 i ii:

  • a ( i ) a(i)a(i) = 平均簇内距离(样本 i ii 与同簇其它点的平均距离)
  • b ( i ) b(i)b(i) = 与最近的其他簇的平均距离(即 其它簇中到 i ii 的平均距离,取最小者)
  • 轮廓系数:
    s ( i ) = b ( i ) − a ( i ) max ⁡ a ( i ) , b ( i ) s(i) = \frac{b(i) - a(i)}{\max{a(i), b(i)}} s(i)=maxa(i),b(i)b(i)−a(i)​

s ( i ) ≈ 1 s(i) \approx 1s(i)≈1:样本在自己簇内很好(紧密且远离其他簇); s ( i ) ≈ 0 s(i) \approx 0s(i)≈0:样本在两个簇的边界上; s ( i ) ≈ − 1 s(i) \approx -1s(i)≈−1:样本更像被错分到了当前簇。

对整个数据集常取 平均轮廓分数 s ˉ \bar ssˉ。阈值参考: s ˉ > 0.5 \bar s > 0.5sˉ>0.5,聚类明显、良好; 0.25 < s ˉ ≤ 0.5 0.25 < \bar s \le 0.50.25<sˉ≤0.5,聚类尚可; s ˉ ≤ 0.25 \bar s \le 0.25sˉ≤0.25,聚类效果差,可能不显著。

📚 IBM:聚类评估指标
▶️ Youtube:K-means clustering

尽管 K-Means 在结构清晰、球状簇的数据上表现良好,但它存在一些局限:

  • 必须 预先指定簇数 k kk
  • 离群点和非凸形簇 表现不佳
  • 聚类边界由 欧氏距离 决定,不适用于密度不均的数据

为了解决这些问题,出现了另一种 基于“密度” 的聚类算法—— DBSCAN。

DBSCAN 聚类(Density-Based Spatial Clustering of Applications with Noise)

DBSCAN 是一种 基于密度 的聚类算法,它 将紧密聚集在一起的数据点归为一类,并根据特征空间中的密度 将离群点标记为噪声。它将 识别为数据空间中 密度较高的区域,这些高密度区域被密度较低的区域所分隔。

不同于假设簇是紧凑且呈球形的 K-Means 或层次聚类,DBSCAN 在处理现实数据的 不规则性方面表现良好,例如:

在这里插入图片描述

  • 任意形状的簇:簇可以呈现任何形状,而不仅限于圆形或凸形。
  • 噪声和离群点:它能够有效识别和处理噪声点,而不将其分配到任何簇。

DBSCAN 的关键参数

  • eps:这定义了 数据点周围邻域的半径。如果两个点之间的距离小于等于 eps,则它们被视为邻居。确定 eps 的常用方法是分析 k-distance 图。选择合适的 eps 很重要:如果 eps 设得太小,大多数点会被归类为噪声;如果 eps 设得太大,簇可能会合并,算法可能无法区分它们。
  • MinPts:这是 eps 半径内形成致密区域所需的最少点数。一个常用经验法则是将 MinPts 设置为 ≥ D+1,其中 D 是数据集的维度数。在大多数情况下,建议将 MinPts 的最小值设为 3。

DBSCAN 算法

DBSCAN 通过 将数据点划分为三种类型 来工作:

在这里插入图片描述

  • 核心点 是指在指定半径(epsilon)内拥有 足够数量邻居 的点;
  • 边界点 靠近核心点,但自身缺乏足够的邻居,无法成为核心点;
  • 噪声点 不属于任何簇。

通过 从核心点迭代扩展簇并连接密度可达点,DBSCAN 在不依赖于其形状或大小的严格假设的情况下形成簇。

DBSCAN 算法步骤
在这里插入图片描述

  1. 标识核心点:对数据集中每个点,统计其 eps 邻域内的点的数量。如果该计数达到或超过 MinPts,则将该点标记为核心点。
  2. 形成簇:对每个 尚未分配到任何簇的核心点,创建一个 新簇。递归地寻找所有密度相连的点,即位于该核心点 eps 半径内的点,并将其加入簇中。
  3. 密度连通性:如果 存在一个点链,使得链中的每个点都位于下一个点的 eps 半径内,并且链中至少有一个点是核心点,则点 a aa 与点 b bb 是密度连通的。此链式过程确保簇中的所有点都通过一系列密集区域相连。
  4. 标记噪声点:在处理完所有点后,任何不属于簇的点都被标记为噪声。

DBSCAN Clustering in ML - Density based clustering

在这里插入图片描述


【机器学习】无监督学习 —— K-Means 聚类、DBSCAN 聚类》 是转载文章,点击查看原文


相关推荐


一文读懂 Vue 组件间通信机制(含 Vue2 / Vue3 区别)
excel2025/10/8

一、组件间通信的概念 在 Vue 中,组件(Component) 是最核心的概念之一。每个 .vue 文件都可以视为一个独立的组件。 而 通信(Communication) 是指一个组件如何将信息传递给另一个组件。 通俗地说: 组件间通信,就是不同组件之间如何共享数据、触发行为、进行信息交互的过程。 例如:当我们使用 UI 框架中的 table 组件时,需要向它传入 data 数据,这个“传值”的过程本质上就是一种组件通信。 二、组件间通信解决了什么问题? 在实际开发中,每个组件都有自己的


【Node】Node.js 多进程与多线程:Cluster 与 Worker Threads 入门
你的人类朋友2025/10/6

前言 在 Node.js 开发中,处理 CPU 密集型任务和提升应用性能是常见需求。 今天我们来深入理解 Node.js 提供的两种并发处理方案:Cluster 模块和 Worker Threads 模块。 ☺️ 这边要求阅读本文的新手小伙伴要有一个印象:【Cluster】 与【进程】相关,【Worker Threads】 与【线程】相关 小贴士 📚: ✨Cluster 的中文意思是集群 ✨Worker Threads 的中文意思是工作线程 官方定义解析 Node.js 官方文档指出:


【Linux系统】快速入门一些常用的基础指令
落羽的落羽2025/10/5

各位大佬好,我是落羽!一个坚持不断学习进步的学生。 如果您觉得我的文章还不错,欢迎多多互三分享交流,一起学习进步! 也欢迎关注我的blog主页: 落羽的落羽 文章目录 pwd、whoami、clearmkdir、touch、treecdlsrmdir、rmmanechocat、tac、more、less、head、tailcp、mvfind、which、whereisaliasgrepzip、unzip、taruname 开始学习使用Linux,我们首先要掌握一些Linux


快速搭建redis环境并使用redis客户端进行连接测试
你的人类朋友2025/10/4

前言 最近工作要用到 redis,所以这边简要记录一下自己搭建 redis 环境的过程,后面忘记了回头看比较方便。 正文 一、环境安装 这边推荐个跨 windows 和 mac 的 redis 客户端,another Redis Desktop Manager windows 一般安装Another-Redis-Desktop-Manager-win-1.7.1-x64.exe mac 一般安装Another-Redis-Desktop-Manager-mac-1.7.1-arm64.dmg 具


Java 设计模式在 Spring 框架中的实践:工厂模式与单例模式
武昌库里写JAVA2025/10/2

# Java 设计模式在 Spring 框架中的实践:工厂模式与单例模式 概述 在软件开发中,设计模式是为了解决特定问题的最佳实践经验的总结。而工厂模式和单例模式是其中两个最为常用和重要的设计模式,在 Java 开发中得到了广泛应用。在 Spring 框架中,工厂模式和单例模式也有着非常重要的应用。本文将从实际的案例出发,介绍工厂模式和单例模式在 Spring 框架中的实践。 工厂模式在 Spring 框架中的实践 工厂模式简介 工厂模式是一种创


如何用 CSS 中写出超级美丽的阴影效果
非优秀程序员2025/10/2

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。 在我看来,最好的网站和Web应用程序对它们具有切实的"真实"质量。实现这种质量涉及很多因素,但阴影是一个关键因素。 然而,当我环顾网络时,很明显,大多数阴影并不像它们所希望的那样丰富。网络上覆盖着模糊的灰色盒子,看起来并不像影子。 在本教程中,我们将学习如何将典型的箱形阴影转换为美丽、逼真的阴影: 为什么还要使用阴影? 我保证,我们很快就会谈到有趣的CSS技巧。但首先,我想退后一步,谈谈为什么阴影存在于CSS中,以


Xrdp 远程桌面配置【笔记】
AnsonNie2025/10/2

Xrdp 远程桌面配置 Xrdp 是一个开源的 远程桌面协议(RDP)服务器。 核心功能:它允许您使用来自其他计算机的图形化桌面连接到运行它的 Linux 服务器。工作原理:它在 Linux 系统上创建一个 RDP 服务端。您可以从任何兼容 RDP 的客户端(如 Windows 自带的“远程桌面连接”、macOS 的 Microsoft Remote Desktop、Linux 的 Remmina 等)进行连接。底层技术:通常,Xrdp 本身并不直接提供桌面环境,而是与现有的 X Windo


starrocks查询伪代码
syty202010/1/2025

尽可能下推到存储层,在扫描时利用索引 (前缀索引、Bloom Filter、位图索引、ZoneMap) 提前过滤掉大量无关数据块,减少 I/O 和 CPU 处理量。​,实现了极致的查询性能。它将数据处理任务分解成高效的、针对现代硬件优化的批处理操作流,最大限度地榨干了 CPU 和 I/O 的性能。​ 在列数据上执行紧凑的循环,最大化 CPU 缓存利用率。​ 只读查询需要的列,利用列存格式的压缩和编码优势。​ (数据流驱动,最小化等待) 两大核心技术,结合​。​ (所有算子处理 Batch) 和 ​。


Midscene.js为什么能通过大语言模型成功定位页面元素
测试者家园9/30/2025

Midscene.js 能通过大语言模型成功定位页面元素并生成 XPath 这类路径,核心在于其多模态模型对网页视觉和语义信息的深度理解,从而实现了所见即所操作的能力。它改变了传统自动化测试严重依赖脆弱定位器的状况,用更高层的意图描述替代了底层的实现细节,在提升脚本稳定性和降低使用门槛方面是一次重要的创新。


零基础学JavaScript:手把手带你搭建环境,写出第一个程序!
良山有风来2025/10/11

开头:你是不是也遇到过这些问题? 刚学JavaScript的时候,你是不是一脸懵? 打开教程,满屏的“Node.js”、“npm”、“VS Code”,完全不知道从哪下手? 照着网上的教程配置环境,结果各种报错,心态爆炸? 写了半天代码,连个“Hello World”都显示不出来? 别担心!这篇文章就是为你准备的。 我会用最直白的方式,带你一步步搭建JavaScript开发环境,并写出你的第一个程序。 看完这篇文章,你不仅能顺利运行第一个JavaScript程序,还能理解背后的原理,为后续学习打

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0