聚类是在事先并不知道任何样本类别标签的情况下,通过数据之间的内在关系把样本划分为若干类别,使得同类别样本之间的相似度高,不同类别之间的样本相似度低的过程。因为没有用到样本的类别标签,因此聚类技术经常被称为无监督学习。
k 均值聚类是最著名的划分聚类算法,因为其简洁和高效的特性,使得它成为所有聚类算法中最广泛使用的一种。
1 基本思想
K 均值聚类的基本思想是,通过迭代方式寻找 K K K 个簇(Cluster)的一种划分方案,使得聚类结果对应的代价函数最小。
算法的流程如下:
- 输入数据集合,并对数据进行预处理,如归一化、离群点处理等,令 M M M 是样本的总数
- 输入定义的类别数 K K K
- 随机选择 K K K 个数据作为初始的聚类中心,记为 μ 1 ( 0 ) , μ 2 ( 0 ) , ⋯ , μ K ( 0 ) \mu_1^{(0)},\mu_2^{(0)},\cdots,\mu_K^{(0)} μ1(0),μ2(0),⋯,μK(0)
- 定义代价函数: J ( c , μ ) = min μ min c ∑ i = 1 M ∥ x i − μ c i ∥ 2 J(c,\mu)=\min_{\mu} \min_{c} \sum_{i=1}^{M} \| x_i-\mu_{c_i} \| ^2 J(c,μ)=minμminc∑i=1M