返回

KMeans之二分K均值算法,你了解多少?

人工智能

二分K均值算法的原理和步骤

K均值算法是一种基于距离的聚类算法,它将数据点划分为不同的簇,使得簇内的数据点距离簇中心点最近。二分K均值算法是K均值算法的一种变体,它将所有点作为一个簇,然后将簇一分为二。之后选择其中一个簇继续进行划分,选择哪一个簇进行划分取决于对其划分是否可以最大程度降低SSE的值。上述基于SSE的划分过程不断重复,直到得到用户指定的簇。

二分K均值算法的具体步骤如下:

  1. 将所有数据点作为一个簇。
  2. 计算簇的中心点。
  3. 将簇中的数据点划分为两个子簇,使得两个子簇的SSE值最小。
  4. 选择其中一个子簇继续进行划分,选择哪一个子簇进行划分取决于对其划分是否可以最大程度降低SSE的值。
  5. 重复步骤2-4,直到得到用户指定的簇。

二分K均值算法的示例

为了更好地理解二分K均值算法,我们来看一个示例。假设我们有一个由10个数据点组成的数据集,如下图所示。

    x1    x2
    1     2
    2     3
    3     4
    4     5
    5     6
    6     7
    7     8
    8     9
    9    10
   10    11

我们使用二分K均值算法对这个数据集进行聚类,并指定簇的个数为2。

  1. 将所有数据点作为一个簇。
  2. 计算簇的中心点。簇的中心点为(5.5, 6.5)。
  3. 将簇中的数据点划分为两个子簇,使得两个子簇的SSE值最小。我们使用欧氏距离作为距离度量,并将数据点划分为以下两个子簇:
1:{(1, 2), (2, 3), (3, 4), (4, 5)}
簇2:{(5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (10, 11)}
  1. 选择其中一个子簇继续进行划分,选择哪一个子簇进行划分取决于对其划分是否可以最大程度降低SSE的值。我们选择簇1继续进行划分。
  2. 重复步骤2-4,直到得到用户指定的簇。我们继续对簇1进行划分,并将簇1划分为以下两个子簇:
1-1:{(1, 2), (2, 3)}
簇1-2:{(3, 4), (4, 5)}

这样,我们就得到了最终的簇划分结果,如下图所示。

    x1    x2
    1     2
    2     3
   _|_   _|_
  /   \ /   \
 /     \/     \
(1,2)  (2,3)  (3,4)  (4,5)
   _|_   _|_
  /   \ /   \
 /     \/     \
(5,6)  (6,7)  (7,8)  (8,9)
   _|_   _|_
  /   \ /   \
 /     \/     \
(9,10) (10,11)

结语

二分K均值算法是一种简单有效的聚类算法,它可以将数据点划分为不同的簇,使得簇内的数据点距离簇中心点最近。二分K均值算法的优点是实现简单、计算量小,缺点是需要指定簇的个数,并且对初始簇中心点的选择敏感。