【问题标题】:is it the knee or the elbow that should be considered in the plot for defining the number of clusters?在定义集群数量的图中应该考虑膝盖还是肘部?
【发布时间】:2017-10-23 01:19:13
【问题描述】:

我正在使用肘部方法,剪影并尝试从数据中找到最佳的 k m 簇数。现在对于大多数软件包,如果我考虑 wss(在相似性分数内)或剪影,它会给出 3 个 PAM、Kmeans、clara。通过休伯特分析,我得到了理想的 2 个集群。唯一奇怪的是下面的命令给了我一个让我有点困惑的情节。我应该将其视为 3 个集群还是 4 个集群。如果有人可以在这里给我一些反馈。

使用的代码

    wss <- (nrow(scale(df))-1)*sum(apply(scale(df),2,var))
    for (i in 2:10) wss[i] <- sum(kmeans(scale(df),
                                                                                centers=i)$withinss) 
fviz_nbclust(scale(df), kmeans, method = "wss")

我也在尝试放置图像,以便可以告诉我这里的簇号是 3 还是 4。理想情况下,我认为它应该是 4,因为 WSS 的重点是选择 SSE 或多或少平坦的 k。

【问题讨论】:

  • 别忘了这是一个启发式,真正的解决方案可能是 2. 或 5. 或 42.
  • 2 和 5 是更现实的东西,但 42 是在迭代过程中任意聚类 k 的东西。并随时查看。我不喜欢使用迭代 k 的方法,而是想使用一种基于行缩放为我的数据找到最佳 k 的方法,因为我想减少最终输出中的行,然后使用一些排名方法。你能告诉我你怎么说它可以是 32 吗?
  • 没有“最优”k(好吧,k=N 在 SSE 0 下是最优的,但没用)。只有启发式。
  • 是的,我现在真的明白了,它是启发式的,但仍然有一种定义方法,这就是我使用它的原因。我现在有点迷失了,认为 NbClust 包使用 WSS 提供了不同数量的集群,而计算 WSS 并绘制它的传统方法在相同数据上给了我 5 个集群。这是可能的吗?Nbclust 有更多的先验假设吗?

标签: r cluster-analysis k-means


【解决方案1】:

基本思想是“平方和以内”较低是模型良好的信号(就误差而言)。但是,集群越多,该误差平方和 (SSE) 的值就越低。

简单来说:“当您看到 SSE 下降的速度(集群数量增加)正在放缓时,最好冻结集群数量”。

因此,它是弯头,在您的情况下为 4,因为 SSE 下跌在 4 之后放缓。

另请参阅:herehere on SO

在 wikipedia 上有一个关于如何确定集群数量的优秀概述:here

【讨论】:

  • 感谢您的回答。我有点困惑,因为主要是因为我说 PAM、CLARA 甚至 kmeans 的轮廓和 wss 方法给了我 3 个最佳 ks。只有这个带有 wss for kmeans 的情节为我提供了 4,但如果它是 3 或 4,我有点困惑。此外,当我对 Euclidena dist 和 complete 和 ward.D2 使用休伯特多数规则时,它是 2 个集群,而对于 kmeans,它是 3 . 所以我想要这个情节的第二个意见,因为对我来说它是 4,是的,它应该是 SSE 下降或放缓的点,所以它应该是 4。谢谢,我会接受。
  • 很高兴,我很高兴能帮上忙。如果您有兴趣,我添加了一个维基百科文章的链接。
猜你喜欢
  • 2017-05-21
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多