(还没详细看基础理论,放的是 gpt 的总结整理)
# K-Means
原理:
- 目标是将数据划分为 K 个簇,使簇内的样本尽可能相似,簇间尽可能不同。
- 核心思想:最小化样本点到其所在簇质心(centroid)的距离平方和。
算法步骤:
- 随机选择 KKK 个初始质心。
- 将每个样本分配到最近的质心所代表的簇。
- 重新计算每个簇的质心。
- 重复步骤 2 和 3,直到质心不再变化或达到最大迭代次数。
优点: 简单、高效
缺点: 只能发现凸形簇,对初始质心敏感,不适用于不同方差或非球形分布的数据
# GMM
原理:
- 假设数据是由多个高斯分布组成的混合体,每个高斯分布代表一个簇。
- 通过 期望最大化(EM)算法学习每个高斯分布的参数(均值、协方差、混合权重)。
核心思想:每个点属于每个簇的概率不再是硬性划分,而是软分配(soft clustering)。
算法步骤(EM):
- 初始化各个高斯分布的参数(可使用 KMeans)。
- E 步(期望):计算每个点属于每个簇的概率(后验)。
- M 步(最大化):根据概率重新估计每个高斯分布的参数。
- 重复直到收敛。
优点: 适用于不同方差、非球形数据。
缺点: 容易陷入局部最优,计算量较大,需指定簇数。
# DBSCAN
原理:
- 基于密度的聚类:同簇内点应密集相邻,簇之间应有低密度区域隔开。
- 不需要指定簇数,能发现任意形状的簇。
核心概念:
- ε(eps)半径邻域内有足够多的点(≥ MinPts),则该点是核心点。
- 从核心点出发扩展簇,密度可达的点属于同一个簇。
- 不能归类的点为噪声点。
优点: 能发现任意形状的簇,鲁棒性强。
缺点: 对参数(eps, MinPts)敏感,不适用于高维稀疏数据。
# 层次聚类
原理:
- 创建一个聚类树(dendrogram),逐步合并或拆分簇。
两种方式:
- 自底向上(凝聚型 Agglomerative):每个点先是一个簇,逐步合并。
- 自顶向下(分裂型 Divisive):所有点一个簇,逐步划分。
合并标准:
- 最短距离(single linkage)
- 最长距离(complete linkage)
- 平均距离(average linkage)
优点: 不需要指定簇数,可观察聚类结构。
缺点: 时间复杂度高,不能回溯合并 / 分裂。
# 谱聚类
原理:
- 基于图论,构造相似度矩阵并进行特征分解,把聚类问题转化为图的划分问题。
流程:
- 构造邻接图(基于点之间相似度)。
- 计算图的拉普拉斯矩阵。
- 对其进行特征分解,选取前 K 个特征向量作为新表示。
- 对新表示使用 KMeans 聚类。
优点: 适合非凸簇、复杂结构。
缺点: 计算复杂、内存消耗大。
# 总结对比
算法 | 是否需指定 K | 是否适应非球形 | 是否可处理噪声 | 聚类方式 |
---|---|---|---|---|
K-Means | 是 | 否 | 否 | 硬聚类 |
GMM | 是 | 是 | 否 | 软聚类 |
DBSCAN | 否 | 是 | 是 | 硬聚类 |
层次聚类 | 否 | 一定程度上 | 否 | 硬聚类 |
谱聚类 | 是 | 是 | 否 | 硬聚类(+KMeans) |