简单的K均值聚类k-means clustering algorithm
基本思想
K-Means算法就是对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
用数学表达式就是:
假设簇划分为 ( C 1 , C 2 , . . . C k ) (C_1,C_2,...C_k) (C1,C2,...Ck)则我们的误差E就是: E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E = \sum\limits_{i=1}^k\sum\limits_{x \in C_i} ||x-\mu_i||_2^2 E=i=1∑kx∈Ci∑∣∣x−μi∣∣22
其中 μ i μ_i μi是簇Ci的均值向量.
如图,我们任意选取两个初值点为中心,计算各点到中心的距离,将他们划分到距离最近的簇。第二次循环,用各族的平均向量做为中心,继续上面操作。直到质心几乎不变。
可以证明,当中心为族的样本均值,代价函数最小,这也说明算法的合理性。
算法及改进算法
传统算法
- 选取K
- 从数据集D中随机选择k个样本作为初始的k个质心向量: { μ 1 , μ 2 , . . . , μ k } \{\mu_1,\mu_2,...,\mu_k\} { μ1,μ2,...,μk