【问题标题】:Is there a way to understand why K-Means uses a specific variable for clustering?有没有办法理解为什么 K-Means 使用特定变量进行聚类?
【发布时间】:2022-01-27 04:00:14
【问题描述】:

我对 R 和集群非常陌生,目前我正在做作业。任务是对一家住房公司的数据进行聚类,以便根据结果更好地了解和调整其业务模式。

可以在here找到原始数据集。 我删除了一些列,因为(根据作业)它们不相关。 在 R 中看起来像这样:

我使用 K-Means 来执行聚类。

#use Elbow Method in order to understand how many clusters are needed.
set.seed(123)

fviz_nbclust(clustering, kmeans, method = "wss")

#perform k-means
k2 <- kmeans(clustering, centers = 10, nstart = 25)
str(k2)

fviz_cluster(k2, data = clustering)

结果是:

看起来 K-Means 使用 sqft_lot 来创建集群。这是算法自动选择的变量,还是我可以手动选择和设置聚类变量?我只是不确定 sqft_lot 是否是最佳选择。

目前我对结果不太满意。我不确定它是否真的以当前形式提供有价值的信息。

【问题讨论】:

  • 在我看来,在开始编写脚本之前,您应该首先弄清楚您的结果应该是什么样子。你想得到什么信息?另外,你尝试了什么?您收到了哪些错误消息?您是否阅读了有关 k-means 聚类的 r 文档? -- PS 你的链接失效了。
  • 您如何得出 kmeans“使用 sqft_lot 创建集群”的结论?您是否将聚类算法与fviz_cluster 的可视化混淆了?
  • @D.J 抱歉,我修复了死链接。感谢您提出这些问题。一方面,我期望算法根据数据的相似性将住房数据聚类成簇。另一方面,我也开始编写脚本,想看看结果会怎样,看看我是否朝着正确的方向前进。到目前为止,我还没有收到任何错误。我也在 k-means 之前尝试了 Hierarchical Clustering,但是绘制数据是一个问题,所以我选择了 k-means。
  • @cdalitz 我不是 100% 肯定,但我假设这是因为绘制的值(例如 8093、7253、3915)都是来自“sqft_lot”列的值。如果这些值来自算法本身,它们是什么意思/为什么会显示为“随机”数字?如何正确解释它们?谢谢。
  • 我很确定为每个点打印的数字是 ID,而不是任何列的值。 Dim1 和 Dim2 是 PCA 的前 2 个主成分;它们不是数据框中的直接列。 K-means 使用您提供的所有列作为输入,而不仅仅是一个。首先阅读一些关于 k-means 聚类如何工作以及如何使用它做出决策的概述可能会有所帮助,例如这些信息是否对您的目的有用

标签: r k-means


【解决方案1】:

您将聚类与图中的二维投影混淆了。聚类使用所有维度,但在图中,8 维数据点被投影到 2 维空间。

这种投影方法称为“多维缩放”(MDS)。 MDS 有不同的算法,但大概fviz 使用 PCA,这是一种投影到具有最高方差的两个方向的方法。由于sqft_lot 是方差最大的变量,它支配了投影空间中的一个方向。

【讨论】:

  • 感谢您的详细说明!在花了一天的时间之后,我绝对可以确认您是对的:我将聚类与图中的二维投影混淆了。
猜你喜欢
  • 2018-08-10
  • 2016-07-28
  • 1970-01-01
  • 2020-01-18
  • 2015-01-16
  • 2018-11-22
  • 2019-11-25
  • 2014-12-19
  • 2012-03-24
相关资源
最近更新 更多