Pyspark 仅给出一个簇的高斯混合模型(GMM)

Pyspark 仅给出一个簇的高斯混合模型(GMM),pyspark,k-means,gmm,Pyspark,K Means,Gmm,我有一个数据集,有70列和440万行。我想对它执行集群。我先做了TF-IDF,然后使用K-均值聚类、K-均值对分和高斯混合模型(GMM)。虽然其他技术为我提供了指定数量的集群,但GMM只提供了一个集群。例如,在下面的代码中,我想要20个集群,但它只返回1个集群。发生这种情况是因为我有很多列,还是仅仅因为数据的性质 gmm = GaussianMixture(k = 20, tol = 0.000001, maxIter=10000, seed =1) model = gmm.fit(rescal

我有一个数据集,有70列和440万行。我想对它执行集群。我先做了TF-IDF,然后使用K-均值聚类、K-均值对分和高斯混合模型(GMM)。虽然其他技术为我提供了指定数量的集群,但GMM只提供了一个集群。例如,在下面的代码中,我想要20个集群,但它只返回1个集群。发生这种情况是因为我有很多列,还是仅仅因为数据的性质

gmm = GaussianMixture(k = 20, tol = 0.000001, maxIter=10000, seed =1)
model = gmm.fit(rescaledData)
df1 = model.transform(rescaledData).select(['label','prediction'])
df1.groupBy('prediction').count().show()  # this returns 1 row

在我看来,Pyspark GMM聚类性能差的主要原因是它的实现是使用对角协方差矩阵完成的,而对角协方差矩阵没有考虑数据集中存在的不同特征之间的协方差

请在此处检查它的实现:

因为维度诅咒,他们明确提到使用对角协方差矩阵

@注:该算法在特征数量上受到限制,因为它需要存储一个协方差矩阵,该矩阵的大小在特征数量上是二次的。即使特征数量不超过此限制,此算法在高维数据上的性能也可能很差。这是由于高维数据(a)使得很难进行聚类(基于统计/理论参数)和(b)高斯分布的数值问题