深度学习篇---聚类
可以把聚类想象成:你有一大堆混在一起的乐高积木,现在要只根据积木本身的形状和颜色,把它们自动分成几堆,事先并不知道哪一堆应该是什么样子。这就是聚类的核心——无监督学习,在没有任何标签的情况下,把相似的数据点归为一组,让组内相似度高、组间差异大。
一、聚类问题的本质
要理解各种方法,先抓住两个关键:
-
用什么尺子量“相似性”?
最常用的是欧氏距离(两点间的直线距离),但也有曼哈顿距离(城市街区距离)、余弦相似度(看方向不看长度)等。-
二维平面上的欧氏距离:

-
余弦相似度(常用于文本):比较两个向量夹角的余弦值,值越接近1,方向越近,内容越相似。
-
-
怎么定义“一簇”?
不同算法对簇的定义截然不同,这是它们思路差异的根源:-
基于中心:到一个中心点近的是一簇(如K-Means)。
-
基于密度:高密度区域连成一片的是一簇(如DBSCAN)。
-
基于分布:属于同一个概率分布模型的是一簇(如高斯混合模型)。
-
基于层次:像树一样,可以一层层剥开或合并的是一簇(如层次聚类)。
-
二、主流聚类方法详解
下面像剥洋葱一样,一层层地介绍5种核心方法。
1. K-Means 聚类:最经典的“分堆”方法
核心思想:要分几堆,你就先随便选几个中心点。然后所有人“认领”离自己最近的中心点,形成临时的堆。接着,每堆重新计算出真正的中心,大家再根据新中心重新“认领”。如此往复,直到中心点不再变化。
可以用一个城管规划菜市场的比喻:先随便找几个点作为摊位,摊贩自动向最近摊位靠拢,形成临时市场;然后每个市场在摊贩最密集处重新设摊,摊贩再次归队,最终形成稳定市场。
-
优点:简单、高效,是处理大数据集的首选。
-
缺点:
-
“K”难定:必须事先指定簇数。
-
对“种子”敏感:初始中心选得不好,结果可能很糟,所以常用K-Means++优化初始点选择。
-
只能发现球形簇:对长条、月牙形等复杂形状无能为力。
-
受异常值影响大:一个离群点就可能把中心“拉偏”。
-
2. DBSCAN:能识别“任意形状”的密度方法
核心思想:不求中心,而是从任意点出发,像病毒传播一样,如果周围指定半径内的邻居数足够多,就都算作一簇,并继续“传染”邻居的邻居。找不到足够邻居的点,就被暂时当作噪声。
它用两个关键参数定义密度:
-
eps (半径):判断邻居的范围圈有多大。
-
MinPts (最小点数):圈里至少有几个点,才算作核心点。
根据邻居数量,数据点被分为三类:
-
核心点:邻居数 ≥ MinPts。
-
边界点:邻居数 < MinPts,但它在某个核心点的圈内。
-
噪声点:既不是核心点,也不在任何核心点的圈内。
-
优点:
-
能发现任意形状的簇。
-
自动识别并过滤噪声。
-
不需要指定簇数K。
-
-
缺点:
-
参数调参难:eps和MinPts的设置非常敏感。
-
对密度不均的数据效果差:如果数据块有疏有密,一组参数难以兼顾。
-
3. 层次聚类:构造“族谱”式结构
核心思想:构建一个树状的聚类关系图,主要分两种策略:
-
自底向上:初始每个点自己是一簇,然后不断合并最相似的两簇,直到全合成一簇。
-
自顶向下:从一个全数据的大簇开始,不断分裂,直到每个点各成一簇。
其中,衡量簇间相似度的方式有三种:
-
单链接:取两簇中最近的两个点的距离。
-
完全链接:取两簇中最远的两个点的距离。
-
平均链接:取两簇间所有点对距离的平均值。
-
优点:
-
不用指定簇数K(事后从树状图上切割即可)。
-
生成的树状图能清晰地展示数据嵌套结构,非常适合可视化。
-
-
缺点:
-
计算和存储复杂度高,不适合大数据集。
-
合并或分裂后无法回溯,一步走错,全局皆错。
-
4. 高斯混合模型:概率视角的“软”聚类
核心思想:它认为数据是由多个不同的高斯分布混合生成的。它的目标就是找到每个分布的参数(均值、协方差),并判断每个点有多大概率来自哪个分布。与K-Means给出“非黑即白”的硬性归属标签(硬聚类)不同,GMM给出的是属于每个簇的概率(软聚类)。
-
优点:
-
软聚类,量化了归属不确定性。
-
可以拟合椭圆形状的簇,比K-Means更灵活。
-
-
缺点:
-
计算复杂,容易陷入局部最优。
-
需要指定分量数K,对初始值敏感。
-
5. 基于图的聚类:复杂的“关系网”切割
核心思想:把数据点看作图的节点,相似度作为边和权重,然后通过“图切割”来找簇,要求切掉边后,子图内部权重高,子图之间权重低。谱聚类是典型代表,它不直接在原始数据上切割,而是在数据的图拉普拉斯矩阵的特征向量空间里进行K-Means聚类。
-
优点:能捕捉非常复杂的数据结构,通常效果出色。
-
缺点:计算特征分解的开销很大,对参数(如近邻图尺度)敏感,不太适合海量数据。
三、如何选择?一张决策指南
面对问题时,可以按这个思路来选:
-
数据量大、追求效率 → 首选 K-Means。
-
数据形状诡异、噪声多、不知道分几类 → 试试 DBSCAN。
-
需要数据嵌套的层级关系或可视化 → 选 层次聚类。
-
需要知道每个点归属的不确定性(硬vs软聚类) → 用 高斯混合模型 (GMM)。
-
数据量适中、对复杂结构要求极高 → 可以用 谱聚类 来挑战上限。
最后,这里是一张Mermaid总结框图,希望能帮你理清整体脉络:
更多推荐



所有评论(0)