什么是聚类
聚类(Clustering)是一类无监督学习方法:没有标签,只根据样本之间的相似性,把"长得像"的样本分到一组。它和分类不同——分类的类别是事先定义好、并带标注的;聚类的"组"要靠算法自己发现,每一组到底意味着什么、有没有价值,往往还需要人来解读。
它要解决什么问题
现实中有大量没有标注的数据:用户行为日志、商品、图像、文档。聚类能在没有标准答案的情况下帮我们发现数据内部的结构——哪些用户像一类、哪些文档在讲同一个主题、哪些设备状态接近。因此它常用于探索性分析、分组、去重、压缩和数据可视化,也常作为其他任务的预处理步骤。
如何衡量"相似"
聚类的前提是定义样本之间的距离(或相似度)。数值特征常用欧氏距离;文本、图像等通常先转成向量(嵌入),再用余弦相似度。距离度量选得对不对,直接决定聚类结果是否有意义,这也是"特征比算法更重要"的典型场景。
主要算法
1. K-means(K 均值):预先指定簇的数量 K,反复做两步——把每个点分给最近的簇中心,再重新计算每个簇的中心。它简单、快,但要先猜 K,且对初始中心和异常值敏感,只擅长"球状、大小相近"的簇。
2. 层次聚类(Hierarchical Clustering):自底向上不断合并最近的两个簇(或自顶向下拆分),得到一棵"聚类树",用树状图呈现。好处是不必事先定 K,可以观察不同粒度下的分组。
3. 基于密度的方法:如 DBSCAN,把"密度高"的连通区域当成一个簇,能发现任意形状的簇,还能把稀疏区域的点标为噪声。它无需指定簇数,但要调"邻域半径"和"最少点数"两个参数。
4. 高斯混合模型(GMM):假设数据由若干个高斯分布混合生成,用概率方式给出每个点"属于各簇的概率",可以看作 K-means 的软聚类版本。
怎么评价聚类效果
没有标签时很难评价,只能用轮廓系数(Silhouette)、CH 指数等内部指标,看"簇内是否够紧、簇间是否够远"。若恰好有一部分标签,则可用调整兰德指数(ARI)等外部指标。要注意任何指标都只是参考,聚类结果最终要回到业务上判断"分得有道理吗"。
常见坑
不同特征的量纲差异会主导距离,通常要先做标准化;K-means 对 K 的取值很敏感,常用"肘部法"或轮廓系数辅助选择;高维数据中距离会趋于均匀("维度灾难"),往往先降维再聚类效果更好。
典型应用
用户分群与精细化运营、文档主题聚类、图像分割与压缩、异常检测的预处理、推荐系统的冷启动、生物信息中的基因表达分组等,都是聚类的常见战场。
一句话总结
聚类让机器在没有标准答案的数据里自己找结构。它通常没有唯一正确的答案,如何解释并利用这些分组,才是价值的真正来源。
【参考来源】综合整理自公开发表的教材与行业资料,包括 scikit-learn 关于聚类算法的官方文档,以及 K-means、DBSCAN、层次聚类等经典方法的相关公开论文。