当前位置: 首页 > news >正文

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

  • 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 聚类 是一种 无监督机器学习算法,通过 数据点的内在相似性 将其 分组为簇目标将数据集划分为 kkk 个簇,使得每个簇内的数据点彼此之间的相似度高于与其他簇中的数据点的相似度

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

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

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

标准 K-Means 算法

在这里插入图片描述

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

在这里插入图片描述

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

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

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

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

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

1. 肘部法则(Elbow Method)

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

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

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

2. 轮廓系数(Silhouette Score)

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

对样本 iii

  • a(i)a(i)a(i) = 平均簇内距离(样本 iii 与同簇其它点的平均距离
  • b(i)b(i)b(i) = 与最近的其他簇的平均距离(即 其它簇中到 iii 的平均距离,取最小者
  • 轮廓系数:
    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)≈1s(i) \approx 1s(i)1:样本在自己簇内很好(紧密且远离其他簇);s(i)≈0s(i) \approx 0s(i)0:样本在两个簇的边界上;s(i)≈−1s(i) \approx -1s(i)1:样本更像被错分到了当前簇。

对整个数据集常取 平均轮廓分数 sˉ\bar ssˉ。阈值参考:sˉ>0.5\bar s > 0.5sˉ>0.5,聚类明显、良好;0.25<sˉ≤0.50.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 在结构清晰、球状簇的数据上表现良好,但它存在一些局限:

  • 必须 预先指定簇数 kkk

  • 离群点和非凸形簇 表现不佳

  • 聚类边界由 欧氏距离 决定,不适用于密度不均的数据

为了解决这些问题,出现了另一种 基于“密度” 的聚类算法—— 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 半径内,并且链中至少有一个点是核心点,则点 aaa 与点 bbb 是密度连通的。此链式过程确保簇中的所有点都通过一系列密集区域相连。
  4. 标记噪声点:在处理完所有点后,任何不属于簇的点都被标记为噪声。

DBSCAN Clustering in ML - Density based clustering

在这里插入图片描述

http://www.dtcms.com/a/456749.html

相关文章:

  • 【深入浅出PyTorch】--3.2.PyTorch组成模块2
  • [C++] --- 常用设计模式
  • vite 怎么阻止某一页面的热更新
  • 邯郸网站设计做网站的一般尺寸
  • 【Linux系列】并发世界的基石:透彻理解 Linux 进程 — 进程优先级切换调度
  • 上海做网站技术做海报找素材网站
  • 全志 H3 armbian 备份
  • 【AI论文】DeepSearch:借助蒙特卡洛树搜索,以可验证奖励突破强化学习的瓶颈
  • 汽车信息安全新国标落地指南:GB 44496-2024测试验收实践
  • php网站怎么注入做网站都有备案吗
  • 大兴网站建设多少钱怎么建个网站
  • Java 大视界 -- Java 大数据机器学习模型在电商供应链库存协同管理与成本控制中的应用(421)
  • 【调研】加密货币/BTC/区块链的发展历史(2025)
  • 个人用云计算学习笔记 --20 (Nginx 服务器)
  • 【密码学实战】openHiTLS passwd命令行:专业密码哈希生成工具
  • form-data与x-www-form-urlencoded
  • 黑龙江省建设网官方网站中卫市平面设计培训学校
  • 《投资-105》价值投资者的认知升级与交易规则重构 - 如何从投资的角度看一下创业公司是否能够加入?你不是在找一份工作,你是在选择下一个5年的人生资产。
  • 前端梳理体系从常问问题去完善-框架篇(react生态)
  • 基于单片机的双档输出数字直流电压源设计
  • FastDDS
  • leetcode LCR.衣橱整理
  • 基于单片机的自动存包柜设计
  • 竞价关键词排名软件保山网站建设优化
  • 电力市场学习笔记(1):什么是电力现货交易
  • 单例模式:原理、实现与演进
  • 用AI帮忙,开发刷题小程序:微信小程序中实现Markdown图片解析与渲染功能详解
  • 天津魔方网站建设WordPress模板转换typecho
  • 小工具大体验:rlwrap加持下的Oracle/MySQL/SQL Server命令行交互
  • AI智能体的未来:从语言泛化到交互革命