KMeans 对不平衡数据进行聚类

Iva*_*van 3 python cluster-analysis k-means data-science feature-engineering

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

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

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

有没有办法平衡集群?

Ano*_*sse 5

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

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

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