Friday, November 21, 2014

K-Means 算法 | 酷 壳 - CoolShell.cn


K-Means 算法 | 酷 壳 - CoolShell.cn

在数据挖掘中, k-Means 算法是一种  cluster analysis  的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。 问题 K-Means 要解决的问题 这个算法其实很简单,如下图所示: K-Means 算法概要 从上图中,我们可以看到,A, B, C, D, E 是五个在图中点。而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以K=2。 然后,K-Means的算法如下: 然后重复第2)和第3)步,直到,种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。 这个算法很简单,但是有些细节我要提一下,求距离的公式我不说了,大家有初中毕业水平的人都应该知道怎么算的。我重点想说一下“求点群中心的算法” 求点群中心的算法 2)Euclidean Distance 公式 —— 也就是第一个公式 λ=2 的情况 3)CityBlock Distance 公式 —— 也就是第一个公式 λ=1 的情况 这三个公式的求中心点有一些不一样的地方,我们看下图(对于第一个 λ 在 0-1之间)。       上面这几个图的大意是他们是怎么个逼近中心的,第一个图以星形的方式,第二个图以同心圆的方式,第三个图以菱形的方式。  K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。(  ISODATA 算法 通过类的自动合并和分裂,得到较为合理的类型数目 K) K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。( K-Means++算法 可以用来解决这个问题,其可以有效地选择初始点) 我在这里重点说一下 K-Means++算法步骤: x 进行K-Means算法。 看到这里,你会说,K-Means算法看来很简单,而且好像就是在玩坐标点,没什么真实用处。而且,这个算法缺陷很多,还不如人工呢。是的,前面的例子只是玩二维坐标点,的确没什么意思。但是你想一下下面的几个问题: 1)如果不是二维的,是多维的,如5维的,那么,就只能用计算机来计算了。 2)二维坐标点的X,

Read full article from K-Means 算法 | 酷 壳 - CoolShell.cn

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.