第三章:聚类算法

目录

什么是聚类?

[第一部分:K-MEANS 算法 ------ 简单粗暴的经典](#第一部分:K-MEANS 算法 —— 简单粗暴的经典)

[1. 核心原理](#1. 核心原理)

[2. 工作流程](#2. 工作流程)

[3. 优缺点分析](#3. 优缺点分析)

[第二部分:DBSCAN 算法 ------ 基于密度的探索者](#第二部分:DBSCAN 算法 —— 基于密度的探索者)

[1. 核心概念](#1. 核心概念)

[2. 算法工作流程](#2. 算法工作流程)

[3. 参数选择技巧](#3. 参数选择技巧)

[4. 优缺点分析](#4. 优缺点分析)

总结


在机器学习的世界里,并非所有任务都有现成的"标准答案"(标签)。当我们面对一堆杂乱无章的数据,想要挖掘其内在规律时,聚类(Clustering)就是我们手中的瑞士军刀。

什么是聚类?

简单来说,聚类属于无监督学习(Unsupervised Learning),意味着我们手里没有标签 。我们的目标是将相似的东西分到一组 ,让组内的差异尽可能小,组间的差异尽可能大。

聚类的难点通常在于:我们如何评估聚类的好坏?以及如何调整参数以获得最佳结果。


第一部分:K-MEANS 算法 ------ 简单粗暴的经典

K-MEANS 是最著名的聚类算法之一,它的核心思想非常直观:通过迭代寻找数据的"中心"。

1. 核心原理

  • K值的设定:K-MEANS 最大的特点(也是限制)是你必须先告诉算法要把数据分成几个簇(即指定 K 值)。

  • 质心(Centroid):每个簇的中心点就是该簇内所有点的均值(向量各维取平均)。

  • 距离度量 :算法通过计算距离来判断相似度,最常用的是欧几里得距离,有时也用余弦相似度(需先标准化)。

优化目标:

K-MEANS 试图让所有点到其所属簇质心的距离平方和最小。公式如下 :

2. 工作流程

K-MEANS 的逻辑通常是:

  1. 随机初始化 K 个质心。

  2. 将每个样本点分配到最近的质心。

  3. 重新计算每个簇的质心(取平均值)。

  4. 重复步骤 2 和 3,直到质心不再变化或达到收敛条件。

3. 优缺点分析

优势

  • 算法简单,运行速度快 。

  • 非常适合处理常规的、球状分布的数据集 。

劣势

  • K值难确定:很多时候我们并不知道数据该分几类 。

  • 对形状敏感:很难发现任意形状的簇(比如环形、月牙形),它倾向于发现球状簇 。

  • 复杂度与样本量呈线性关系,处理超大规模数据时可能有压力。


第二部分:DBSCAN 算法 ------ 基于密度的探索者

为了解决 K-MEANS 无法处理复杂形状的问题,DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 应运而生。它的理念不再是"距离中心最近",而是"因为即使我们离得近,如果你周围很冷清,那你可能只是个噪声"。

1. 核心概念

DBSCAN 通过密度来定义簇。理解它需要掌握以下几个概念:

  • 核心对象 (Core Object) :如果一个点周围(邻域内)的"邻居"数量达到了设定的阈值(),那么这个点就是核心点 。

  • -邻域 ():就是我们设定的扫描半径。

  • 直接密度可达 :如果你在我的半径 内,且我是核心点,那你就可以被我"直接密度可达" 。

  • 密度可达:这是直接可达的"传播"版。比如 A 到 B 可达,B 到 C 可达,那么 A 到 C 就是密度可达的。

  • 密度相连:若从某核心点出发,点 p 和点 q 都是密度可达的,则称它们密度相连。

基于这些定义,DBSCAN 将点分为三类:

  1. 核心点:稠密区域内部的点。

  2. 边界点:属于某个簇,但不在核心区域(周围不够稠密),不能继续发展下线。

  3. 噪声点(离群点):不属于任何簇,从任何核心点出发都无法到达它。

2. 算法工作流程

DBSCAN 的运行逻辑像是一种"病毒式扩散" :

  1. 标记所有对象为未访问 (unvisited)。

  2. 随机选择一个未访问对象

  3. 如果 p 的邻域内至少有个对象:

    • 创建一个新簇,把 放进去。

    • 邻域内的所有点都拉进这个簇。

    • 对于这些新加入的点,如果它们也是核心点,就继续去拉它们的邻居(密度可达的传播)。

  4. 如果 的邻域内点太少,将其标记为噪声(虽然后续可能会被其他核心点"甚至"回来)。

  5. 重复直到所有点都被访问过。

3. 参数选择技巧

DBSCAN 有两个关键参数,选对了效果拔群,选错了效果很差:

  • 半径 :可以利用 K-距离 (K-distance) 图来辅助选择。计算每个点到第 k 个最近邻居的距离并排序,寻找图中的突变点(拐点)作为半径值。

  • MinPts:即 K-距离中的 k 值,一般取得比较小,需要多次尝试。

4. 优缺点分析

优势

  • 不需要指定簇个数:它自己会算出来有多少个簇 。

  • 形状自适应:可以发现任意形状的簇(比如两个嵌套的圆环)。

  • 抗噪能力:擅长找到并剔除离群点(噪声)。

劣势

  • 高维数据困难:在高维空间中,距离变得不再敏感(维数灾难),建议先做降维。

  • 参数敏感对结果影响非常大,且难以选择。

  • 效率问题:在 Sklearn 的实现中效率可能较慢,需要数据削减策略。


总结

  • 如果你需要快速处理常规数据,且大概知道分几类,K-MEANS 是首选。

  • 如果你的数据形状复杂(如地理位置、图像分割),或者你需要检测异常值,DBSCAN 是更好的选择。

相关推荐
Ll13045252981 分钟前
Leetcode二叉树part4
算法·leetcode·职场和发展
颜酱10 分钟前
二叉树遍历思维实战
javascript·后端·算法
宝贝儿好12 分钟前
第二章: 图像处理基本操作
算法
小陈phd14 分钟前
多模态大模型学习笔记(一)——机器学习入门:监督/无监督学习核心任务全解析
笔记·学习·机器学习
holeer15 分钟前
【V2.0】王万良《人工智能导论》笔记|《人工智能及其应用》课程教材笔记
神经网络·机器学习·ai·cnn·nlp·知识图谱·智能计算
小陈phd23 分钟前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
@––––––24 分钟前
力扣hot100—系列4-贪心算法
算法·leetcode·贪心算法
CoovallyAIHub31 分钟前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
CoderCodingNo35 分钟前
【GESP】C++ 二级真题解析,[2025年12月]第一题环保能量球
开发语言·c++·算法
yumgpkpm36 分钟前
预测:2026年大数据软件+AI大模型的发展趋势
大数据·人工智能·算法·zookeeper·kafka·开源·cloudera