概述
K-Means是一种聚类算法,算法过程是以迭代的方式进行的。
详解
1. Input
- K(从数据中聚类出的簇的个数)
- Training set (drop x_0 = 1)
2. Process
Randomly initialize K cluster centroids μ1,μ2,.....,μk %随机初始化聚类中心
Repeat{
%簇分配:离哪一个聚类中心近,将其分配到其对应簇。(保持聚类中心不变的情况下,最小化 J)
for i = 1 to m
c^(i) := index (from 1 to K) of cluster centroid closest to x^(i) %c^(i)表示x(i)对应的簇
%移动聚类中心:计算不同簇的均值,作为新的聚类中心。(选择聚类中心 μ,来最小化 J)
for k = 1 to K
u_k := average (mean) of points assigned to cluster k
}
如果存在一个没有点的聚类中心,一般将其移除。
3. 优化目标函数
μ_c^(i) 表示 x^(i) 已经分配的聚类中心
目的:1.帮助我们对学习算法进行调试,,确保K-Means正确进行。
2.帮助找到更好的簇,并避免局部最优解。
4. 随机初始化
- K < m
5. 选择簇的个数 K
- 肘部法则(Elbow method):如下左图;但不能解决所有情况,如右图。
- 结合实际情况,看哪个聚类数量能更好的应用于后续目的