KMeans 聚类不平衡数据

KMeans clustering unbalanced data

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

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

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

集群有平衡吗?

它不是 k-means objective 的一部分来产生平衡的集群。事实上,具有平衡集群的解决方案可能是任意糟糕的(仅考虑具有重复项的数据集)。 K-means 最小化平方和,将这些对象放在一个簇中似乎是有益的。

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

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