问题定义
聚类是一种无监督学习方法,旨在将相似的样本分组到同一个簇中,不同的样本分到不同的簇中。核心问题包括:如何度量样本间的相似度、如何确定簇的数量、如何处理不同形状和密度的簇、如何评估聚类效果。
核心算法
基于距离的聚类
K-Means 算法
通过迭代优化簇中心,最小化簇内样本到中心的距离平方和。适合球形簇,计算效率高,但需要预先指定簇数 K。
步骤:
1. 初始化 K 个簇中心
2. 分配每个样本到最近的簇中心
3. 更新簇中心为簇内样本均值
4. 重复步骤 2-3 直到收敛
K-Means++
K-Means 的改进版本,通过智能初始化簇中心,减少对初始值的敏感性,提高聚类质量。
层次聚类
凝聚式层次聚类
自底向上构建聚类树,初始每个样本为一个簇,逐步合并最相似的簇,直到形成一个簇。
分裂式层次聚类
自顶向下构建聚类树,初始所有样本为一个簇,逐步分裂最不相似的簇,直到每个样本为一个簇。
距离度量
单链接(最小距离)、全链接(最大距离)、平均链接(平均距离)、沃德链接(平方误差和)。
基于密度的聚类
DBSCAN 算法
基于密度的空间聚类,能够识别任意形状的簇,同时检测噪声点。核心参数包括 eps(邻域半径)和 min_samples(最小样本数)。
OPTICS 算法
DBSCAN 的扩展,通过排序点来反映数据的密度可达性,能够处理不同密度的簇。
基于模型的聚类
GMM(高斯混合模型)
假设数据由多个高斯分布混合生成,通过 EM 算法估计模型参数,支持软聚类。
谱聚类
基于图论的聚类方法,通过构建相似度图,对拉普拉斯矩阵进行特征分解,然后在低维空间中聚类。
开源实现
scikit-learn Clustering
提供 KMeans、HierarchicalClustering、DBSCAN、OPTICS、GaussianMixture、SpectralClustering 等实现。
HDBSCAN
基于密度的层次聚类算法,是 DBSCAN 的改进版本,能够自动确定簇数。
FAISS
Facebook 开发的高效相似性搜索库,支持大规模聚类和最近邻搜索。
UMAP
统一流形近似和投影,结合降维和聚类,适合高维数据可视化。
应用场景
- 客户细分:基于消费行为、人口统计学特征等将客户分组
- 图像分割:将图像像素按照颜色、纹理等特征聚类
- 文本聚类:自动分类文档、新闻、社交媒体内容
- 异常检测:识别离群点和异常模式
- 生物学:基因表达分析、蛋白质功能分类
- 推荐系统:基于用户行为聚类,提供个性化推荐
评估指标
内部评估指标
轮廓系数(Silhouette Coefficient)、Calinski-Harabasz 指数、Davies-Bouldin 指数,无需真实标签。
外部评估指标
互信息(MI)、调整兰德指数(ARI)、Fowlkes-Mallows 指数,需要真实标签。
参数调优
K-Means
通过肘部法则、轮廓系数、Gap 统计量等方法选择最优 K 值。
DBSCAN
通过 K-距离图选择 eps 值,根据领域知识设置 min_samples。
层次聚类
通过树状图(Dendrogram)确定最佳聚类数,选择合适的链接方法。
参考文献
- scikit-learn: Clustering
- k-means++: The Advantages of Careful Seeding. Arthur & Vassilvitskii, 2007
- A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise. Ester et al., 1996 (DBSCAN)
- Pattern Recognition and Machine Learning. Bishop, 2006
- The Elements of Statistical Learning. Hastie et al., 2009