【问题标题】:KMeans clustering unbalanced dataKMeans 聚类不平衡数据
【发布时间】:2019-02-14 15:38:42
【问题描述】:

我有一组数据,包含 50 个特征(c1、c2、c3 ...),行数超过 80k。

每一行都包含标准化的数值(范围为 0-1)。它实际上是一个归一化的虚拟变量,其中一些行只有很少的特征,3-4(即,如果没有值,则分配 0)。大多数行有大约 10-20 个特征。

我使用 KMeans 对数据进行聚类,结果总是导致一个包含大量成员的聚类。经过分析,我注意到少于 4 个特征的行往往会聚集在一起,这不是我想要的。

是否有平衡集群的方法?

【问题讨论】:

  • 是少于 4 个特征的行具有相同的对应特征。您是否尝试过增加 k 的值
  • 不,它们有非常不同的功能。我使用肘部方法改变了 K,范围为 50-100。
  • 显示你在集群中的代码部分和输出。

标签: python cluster-analysis k-means data-science feature-engineering


【解决方案1】:

生成平衡聚类不是 k-means 目标的一部分。事实上,具有平衡集群的解决方案可能会很糟糕(只需考虑具有重复数据的数据集)。 K-means 最小化平方和,将这些对象放在一个集群中似乎是有益的。

您看到的是在稀疏、非连续数据上使用 k-means 的典型效果。编码的分类变量、二进制变量和稀疏数据不太适合 means 的 k-means 使用。此外,您可能还需要仔细权衡变量。

现在一个可能会改善您的结果(至少感知质量,因为我不认为它使它们统计更好)的修补程序是标准化每个向量到单位长度(欧几里得范数 1)。这将强调具有很少非零条目的行。您可能会更喜欢结果,但它们更难解释。

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 2018-02-05
    • 2021-10-09
    • 2019-01-23
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2013-11-18
    相关资源
    最近更新 更多