K均值算法
K 均值算法
这是一种解决聚类问题的非监督式学习算法。这个方法简单地利用了一定数量的集群(假设 K 个集群)对给定数据进行分类。同一集群内的数据点是同类的,不同集群的数据点不同类。
还记得你是怎样从墨水渍中辨认形状的么?K 均值算法的过程类似,你也要通过观察集群形状和分布来判断集群数量 K 均值算法如何划分集群:
-
从每个集群中选取 K 个数据点作为质心(centroids)。
-
将每一个数据点与距离自己最近的质心划分在同一集群,即生成 K 个新集群。
-
找出新集群的质心,这样就有了新的质心。
-
重复 2 和 3,直到结果收敛,即不再有新的质心出现。
怎样确定 K 的值:
如果我们在每个集群中计算集群中所有点到质心的距离平方和,再将不同集群的距离平方和相加,我们就得到了这个集群方案的总平方和。
我们知道,随着集群数量的增加,总平方和会减少。但是如果用 总平方和对 K 作图,你会发现在某个 K 值之前总平方和急速减少,但在这个 K 值之后减少的幅度大大降低,这个值就是最佳的集群数。
距离计算公式:
一维坐标系中,设 A(x1),B(x2),则 A,B 之间的距离为
二维坐标系中,设 A(x1,y1),B(x2,y2),则 A,B 之间的距离为
三维坐标系中,设 A(x1,y1,z1),B(x2,y2,z2),则 A,B 之间的距离为
以此类推
动画演示
下面的动画使用10*10的网格模拟图片,通过修改网格颜色表示分类。