本文主要简单介绍聚类的本质思想、用途及分类。
在最后给出各算法详细内容的链接。
一、概要
聚类算法是无监督学习中的典型算法。
通过训练不带标签的原数据,根据样本的相似度或距离将其归类,总结每一类的基本特征,从而了解实质。聚类本质是统计描述方法,建立建设,而非验证假设。
用一句古语来说,就是“物以类聚,人以群分”。
聚类的核心概念是相似度或距离,因为相似度或距离将直接影响聚类的结果,所以其选择会是聚类的根本问题,具体的选择取决于应用场景的特性。
常用的相似度或距离:
- 闵可夫斯基距离(简称闵氏距离,可以衍生为欧氏距离、曼哈顿距离、切比雪夫距离等);
- 马氏距离(考虑了各变量之间的相关系,且不受量纲的影响)
- 相关系数
- 夹角余弦(文本分析用的多)
二、用途
常见的使用场景有:
- 预分析过程(划分个体的过程;为下一步建模提供指导意见);
- 细分市场、个体消费行为划分(先聚类,再利用判别分析进一步研究各个群体之间的差异);
- 异常检测;
- 数据离散化(比如对一个或多个连续特征聚类,实现连续特征离散化的目的);
- 设计抽样方案(分层抽样的依据)。
三、分类
按聚类结果分:
- 硬聚类:聚类结果中每个样本只能属于一个类,常见的 K-Means、层次聚类等;
- 软聚类:聚类结果中每个样本属于哪个类别以概率的形式呈现,即每个样本可能属于多个样本,如高斯混合模型。
按算法特性分:
四、聚类算法的选择
如果数据量为中小规模,例如在 100w 条之内,K-Means 是不错的选择(也可以视情况用 Mini Batch KMeans),100w 以上需要考虑用 Mini Batch KMeans;
如果数据中有离群点,使用基于密度的 DBSCAN 可以有效应对;
如果数据集是高维的,使用基于图论的谱聚类,其他的聚类算法在应对高维数据集时很难获得令人满意的效果。
五、聚类算法详述
参考:
[1] 李航. 《统计学习方法》.
[2] 宋天龙. 《Python 数据分析与数据化运营》