KMeans笔记 K值以及初始类簇中心点的选取

KMEANS算法原理:

1、从D中随机取k个元素,作为k个簇的各自的中心。

2、分别计算剩下的元素到k个簇中心的欧氏距离,将这些元素分别划归到相异度最低的簇。

3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。

4、将D中全部元素按照新的中心重新聚类。

5、重复第3步,直到聚类结果不再变化。

6、将结果输出。


  KMeans算法本身思想比较简单,但是合理的确定K值和K个初始类簇中心点对于聚类效果的好坏有很大的影响。

1、确定K值

《大数据》中提到:给定一个合适的类簇指标,比如平均半径或直径,只要我们假设的类簇的数目等于或者高于真实的类簇的数目时,该指标上升会很缓慢,而一旦试图得到少于真实数目的类簇时,该指标会急剧上升。

  类簇的直径是指类簇内任意两点之间的最大距离。

  类簇的半径是指类簇内所有点到类簇中心距离的最大值。

  废话少说,上图。下图是当K的取值从2到9时,聚类效果和类簇指标的效果图:


  左图是K取值从2到7时的聚类效果,右图是K取值从2到9时的类簇指标的变化曲线,此处我选择类簇指标是K个类簇的平均质心距离的加权平均值。从上图中可以明显看到,当K取值5时,类簇指标的下降趋势最快,所以K的正确取值应该是5.为以下是具体数据:

 1 2 个聚类
 2 所有类簇的半径的加权平均值 8.51916676443
 3 所有类簇的平均质心距离的加权平均值 4.82716260322
 4 3 个聚类
 5 所有类簇的半径的加权平均值 7.58444829472
 6 所有类簇的平均质心距离的加权平均值 3.37661824845
 7 4 个聚类
 8 所有类簇的半径的加权平均值 5.65489660064
 9 所有类簇的平均质心距离的加权平均值 2.22135360453
10 5 个聚类
11 所有类簇的半径的加权平均值 3.67478798553
12 所有类簇的平均质心距离的加权平均值 1.25657641195
13 6 个聚类
14 所有类簇的半径的加权平均值 3.44686996398
15 所有类簇的平均质心距离的加权平均值 1.20944264145
16 7 个聚类
17 所有类簇的半径的加权平均值 3.3036641135
18 所有类簇的平均质心距离的加权平均值 1.16653919186
19 8 个聚类
20 所有类簇的半径的加权平均值 3.30268530308
21 所有类簇的平均质心距离的加权平均值 1.11361639906
22 9 个聚类
23 所有类簇的半径的加权平均值 3.17924400582
24 所有类簇的平均质心距离的加权平均值 1.07431888569
2、 确定K个初始类簇中心点
  首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。

公式


Keans算法的优缺点:

K-Means聚类算法的优点主要集中在:
1.算法快速、简单;
2.对大数据集有较高的效率并且是可伸缩性的;
3.时间复杂度近于线性,而且适合挖掘大规模数据集。K-Means聚类算法的时间复杂度是O(nkt) ,其中n代表数据集中对象的数量,t代表着算法迭代的次数,k代表着簇的数目。
缺点:
准确度与K值的确定和 K个初始类簇中心点选择直接相关。


你可能感兴趣的:(机器学习基础)