一文搞懂层次聚类与密度聚类方法详解
层次聚类通过构建树状图揭示数据多层次结构,无需预设簇数,但计算复杂度高;密度聚类如DBSCAN和OPTICS基于密度可达划分任意形状簇,能识别噪声,DBSCAN对参数敏感,OPTICS可处理密度不均数据。
聚类(Clustering)作为无监督学习的核心方法,无需依赖标签信息,通过衡量数据样本之间的相似性将其划分为若干簇,使得同一簇内样本高度相似,不同簇间差异显著。常见算法包括基于划分的K-Means、基于层次的层次聚类以及基于密度的DBSCAN、OPTICS等。聚类广泛应用于用户分群、市场细分、文本主题发现、图像分割等场景,是数据挖掘与探索性分析的重要工具。
什么是层次聚类
在聚类分析中,层次聚类(Hierarchical Clustering)是一种直观且应用广泛的方法,常用于文本主题发现、基因表达模式识别、社会网络群体挖掘、图像处理及市场细分等任务。与K-Means等划分式方法不同,层次聚类通过构建样本间的层次关系,生成一棵聚类树(dendrogram),从而揭示数据的多层次结构。
层次聚类的核心思想是:
- 自底向上(凝聚型,Agglomerative):初始将每个样本视为独立簇,逐步合并最相似的簇,直至形成单一簇或达到预设簇数。
- 自顶向下(分裂型,Divisive):初始将所有样本视为一个整体,逐步分裂为更小的簇,直至达到指定簇数。
实际应用中,凝聚型层次聚类更为常用,因其计算效率高且结果直观。
层次聚类的效果高度依赖于簇间距离度量方式,不同度量方法会带来不同的聚类结果:
- 单链法(Single Linkage):取簇间最短距离,易产生链式效应。
- 全链法(Complete Linkage):取簇间最长距离,倾向于形成紧凑簇。
- 平均链法(Average Linkage):取簇间平均距离,平衡单链与全链特性。
- Ward 方法:基于平方误差最小化,倾向于生成方差小且大小均匀的簇。
以凝聚型层次聚类为例,算法的工作步骤如下:
- 将每个样本视为独立簇。
- 计算所有簇间距离。
- 合并最近的两个簇。
- 更新簇间距离矩阵。
- 重复步骤2-4,直到所有样本合并为一个簇或达到预设簇数。
这个过程与二分法或归并排序有相似之处。
最终结果可以用树状图(dendrogram)直观展示,每个分支的高度代表簇之间的距离。
下面用一段代码形象地理解一下:
from sklearn.datasets import load_iris
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# 1. 加载数据
iris = load_iris()
X = iris.data
# 2. 层次聚类 (AgglomerativeClustering)
model = AgglomerativeClustering(n_clusters=3, linkage='ward')
labels = model.fit_predict(X)
print("聚类结果:", labels[:20])
# 3. 绘制树状图
Z = linkage(X, method='ward')
plt.figure(figsize=(8, 5))
dendrogram(Z, truncate_mode='level', p=3)
plt.title("Hierarchical Clustering Dendrogram")
plt.xlabel("Sample Index")
plt.ylabel("Distance")
plt.show()
输出结果如下:
从结果可以看出,首次聚类时第7个样本与第8个样本距离最近,它们首先合并为一个簇,随后簇间不断合并,直至达到预设的目标类别数。
层次聚类的优势在于无需预先指定簇数,能够揭示数据的多层次结构,且可视化结果直观。但其计算复杂度较高,难以扩展到超大规模数据集,同时对噪声和异常值敏感。尽管如此,在小规模数据分析、模式探索及数据可视化场景中,层次聚类依然是一种非常有价值的方法。
密度聚类方法
密度聚类方法通过寻找数据空间中高密度区域来划分簇,能够自然地处理噪声和非凸形簇结构,这是传统划分式方法难以解决的问题。例如,在地图中搜索美食热点区域或人口事件聚集区,均可通过密度聚类实现。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)和OPTICS(Ordering Points To Identify the Clustering Structure)是两种典型的密度聚类方法。
1. DBSCAN
DBSCAN的核心思想是:簇是由密度可达的点组成的区域,低密度区域视为噪声。
- 核心概念:
- ε-邻域:样本点周围半径为ε的区域。
- 核心点:其ε-邻域内点数 ≥ minPts。
- 边界点:位于核心点ε-邻域内,但本身点数 < minPts。
- 噪声点:不属于任何簇的点。
- 聚类规则:
- 从任意未访问点开始,若其为核心点,则以该点为中心扩展簇,将密度可达的点加入簇。
- 对簇中新增的核心点重复扩展过程,直到簇无法再扩展。
- 重复以上步骤,直到所有点都被访问过。
DBSCAN能够发现任意形状的簇,自动识别噪声点,且无需预设簇数。但其对参数ε和minPts较为敏感,在高维数据中效果会下降,因为高维空间中的密度概念会失效。
2. OPTICS
OPTICS是DBSCAN的改进,主要解决DBSCAN在参数选择(尤其是ε)上的限制。
- 核心思想:不直接生成簇,而是生成可达距离序列(reachability distance),记录点之间的密度结构。
- 聚类规则:
- 对每个点计算核心距离(core distance)和可达距离(reachability distance);
- 按可达距离顺序访问所有点,形成一个有序列表;
- 通过可达距离的突变检测不同密度区域,从而识别簇。
OPTICS能发现不同密度的簇,无需严格指定ε值,适合数据密度不均匀的场景。但其计算复杂度高于DBSCAN,结果需要进一步分析才能确定簇边界。
下面用代码展示一下这两种方法的效果对比:
from sklearn.datasets import make_moons
from sklearn.cluster import DBSCAN
from sklearn.cluster import OPTICS
import matplotlib.pyplot as plt
# 生成非凸形数据
X, y = make_moons(n_samples=300, noise=0.05, random_state=42)
# DBSCAN 聚类
dbscan = DBSCAN(eps=0.2, min_samples=5)
labels_dbscan = dbscan.fit_predict(X)
# OPTICS 聚类
optics = OPTICS(min_samples=5, xi=0.05, min_cluster_size=0.1)
labels_optics = optics.fit_predict(X)
# 可视化 DBSCAN
plt.figure(figsize=(12,5))
plt.subplot(1,2,1)
plt.scatter(X[:,0], X[:,1], c=labels_dbscan, cmap='viridis', s=30)
plt.title("DBSCAN Clustering")
# 可视化 OPTICS
plt.subplot(1,2,2)
plt.scatter(X[:,0], X[:,1], c=labels_optics, cmap='viridis', s=30)
plt.title("OPTICS Clustering")
plt.show()
运行结果如下,可以看到DBSCAN和OPTICS都能识别非凸簇,OPTICS对不同密度簇表现更稳健。
总结时刻到,DBSCAN和OPTICS是密度聚类的代表方法:
- DBSCAN简单高效,适合簇密度均匀、噪声点明确的数据;
- OPTICS解决了DBSCAN对参数敏感的问题,能处理不同密度的簇,但计算复杂度更高。
总体而言,密度聚类方法在非球形簇、异常点检测和探索性数据分析中具有明显优势,是传统划分聚类方法的重要补充。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
天学会AI应用开发上下文与RAG阶段性总结
系统梳理了AI应用开发中的上下文与RAG核心概念。搭建Python3 10开发环境后,通过提示词工程管理历史对话,利用截断、摘要提取及离线大模型压缩上下文。RAG采用加载文档、分块、向量化、存入FAISS或Chroma库、检索五个步骤,中文场景推荐BGE-small嵌入模型,实战证明离线检索有效。
Yank Note系列14:如何与AI协作写文章
YankNote3 92 1发布,新增“审阅批注”和“编辑装订线”扩展,聚焦AI写作的人机协作循环。审阅批注将反馈绑定到选中文本,编辑装订线高亮显示修改行,帮助人看清AI改动。同时升级Markdown-it至14 3 0,优化中日韩文本渲染。
一文读懂MCP:让AI大模型万能插拔协议
MCP(模型上下文协议)由Anthropic提出,为AI大模型提供通用接口标准,解决工具调用碎片化问题。采用Host Client Server架构,支持动态发现工具,通过stdio或HTTP通信,实现工具即插即用、跨语言调用和统一对接规范。
BeeWeave开源:为AI Agent打造越用越懂你的知识创作台
BeeWeave是一个Agent原生的知识创作台,通过workbench和vault双层结构实现素材获取、内容创作、知识沉淀与上下文复用的持续闭环。它支持多Agent共用同一套知识库,内置41个Skills,采用MIT开源协议,旨在解决跨会话知识丢失问题。
AI闭环工程师自动推进工程任务
LoopEngineer是一种将AI嵌入可执行、可验证、可持续迭代的工作循环中的工程协作方式。通过触发器、上下文、工具和验证机制,AI在循环中自动分析、执行、验证并调整,直至任务完成或需人工介入,实现复杂任务的可观察、可审计、可批准的分段自动化。
- 热门数据榜
相关攻略
2026-07-12 15:04
2026-07-12 15:04
2026-07-12 15:04
2026-07-12 15:03
2026-07-12 15:03
2026-07-12 15:03
2026-07-12 15:03
2026-07-12 15:03
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

