在 K-means 集群中寻找最小方差

Finding the minimum variance in K-means cluster

我有一组二维点,我想在其中使用 K-means 算法划分出正确数量的簇。

我读到,对于固定数量的聚类,我应该 运行 几次并找到给出最小方差的结果。

例如,假设我知道 "correct" 个簇数为 4。因此此示例的伪代码:

List<kmeansResult> result;

for(int i = 0 ; i < numIteration; ++i)
{
    result.Add(kmeans.Compute(4));
}

我会得到 10 种不同的方法来获得 result 中的 4 个聚类,每个聚类都有其单独的聚类方差。

在这种情况下,我的问题是如何量化 "minimum" 方差。由于方差是二维的,即 var(X)var(Y),可能存在 var(X) 被最小化而不是 var(Y) 的情况。什么是 "lump" 2 一起的好措施?

常见的做法是尽量减少 sum { (C_i - x_i) \cdot (C_i - x_i) i=1,...,n},其中:

  • C_i - 点 i
  • 的簇中心
  • x_i - 点 i
  • \cdot - 点积
  • n - 样本数

我们的想法是最小化与集群的 L2 距离,从而使每个集群更紧密地结合在一起。

简而言之,它基本上是将每个点与其质心的欧几里得距离相加 - 但没有 euclidean distance metric.

中的平方根