【问题标题】:How does PCA gives centers for the Kmeans algorithm in scikit learnPCA 如何为 scikit learn 中的 Kmeans 算法提供中心
【发布时间】:2014-10-01 09:04:06
【问题描述】:

我正在查看Scikit Kmeans digit example 上给出的示例代码

此脚本中有以下代码:

# in this case the seeding of the centers is deterministic, hence we run the
# kmeans algorithm only once with n_init=1
pca = PCA(n_components=n_digits).fit(data)
bench_k_means(KMeans(init=pca.components_, n_clusters=n_digits, n_init=1),
          name="PCA-based",
          data=data)

为什么将特征向量用作初始中心,对此有什么直觉吗?

【问题讨论】:

标签: scikit-learn k-means pca


【解决方案1】:

有一个stackexchange链接here,还有一些关于PCA wikipedia的讨论。

还有一个informative mailing list discussion关于这个例子的创建。

所有这些线程都指向others 中的this paper。简而言之,本文说 SVD 找到的子空间(如 PCA 中所见)与我们在 K-means 中寻找的最佳聚类中心以及相关证明之间存在密切关系。关键句出现在第一页的右下角——“我们证明了本金 成分实际上是K-means聚类方法中聚类成员指标的连续解,即PCA降维自动根据K-means目标函数进行数据聚类”。

这相当于 SVD/PCA 特征向量应该是非常好的 K-Means 初始化器。这篇论文的作者实际上更进一步,将数据投影到他们的两个实验的特征空间中,然后在那里进行聚类。

【讨论】:

  • 感谢凯尔的解释。我不知道邮件列表存档,这是一个很好的指针。
  • 在我看来,这表明 k-means 实际上并没有发现数据中的 结构(即聚类)。它更像是一种投影技术(如 PCA)。
  • 虽然更灵活。正交约束会很快导致无法解释的向量。
猜你喜欢
  • 2012-07-05
  • 2016-11-16
  • 2017-04-15
  • 2014-05-11
  • 2015-02-20
  • 2016-06-28
  • 2013-11-24
  • 2020-11-23
  • 2016-08-02
相关资源
最近更新 更多