我有一组包含50个特征(c1,c2,c3...)和超过80k行的数据。
每行都包含归一化的数字值(范围在0-1之间)。实际上,这是一个归一化的虚拟变量,有些行只有少数几个特征,3-4个(即如果没有值,则赋值为0)。大多数行有大约10-20个特征。
我使用KMeans对数据进行聚类,总是得到一个成员数量众多的簇。经分析,我发现少于4个特征的行往往会被聚集在一起,而这并不是我想要的结果。
有没有办法平衡聚类?
我有一组包含50个特征(c1,c2,c3...)和超过80k行的数据。
每行都包含归一化的数字值(范围在0-1之间)。实际上,这是一个归一化的虚拟变量,有些行只有少数几个特征,3-4个(即如果没有值,则赋值为0)。大多数行有大约10-20个特征。
我使用KMeans对数据进行聚类,总是得到一个成员数量众多的簇。经分析,我发现少于4个特征的行往往会被聚集在一起,而这并不是我想要的结果。
有没有办法平衡聚类?
k-means聚类的目标并不是产生平衡的簇。实际上,平衡的簇可能会任意糟糕(考虑一个具有重复数据的数据集)。k-means最小化平方和,将这些对象放入一个簇中似乎是有益的。
在稀疏、非连续数据上使用k-means通常会出现这种情况。编码的分类变量、二元变量和稀疏数据并不适合k-means使用“均值”。此外,您还需要仔细权衡变量。
现在有一个热修补程序,很可能会改善您的结果(至少在“感知”质量方面,因为我认为它并没有使它们在统计上更好)。即将每个向量归一化为单位长度(欧几里得范数1)。这将强调具有少量非零条目的行。您可能会更喜欢结果,但它们甚至更难解释。