首页 > 解决方案 > KMeans 聚类不平衡数据

问题描述

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

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

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

无论如何平衡集群?

标签: pythoncluster-analysisk-meansdata-sciencefeature-engineering

解决方案


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

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

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


推荐阅读