2 votes

Modèle de mélange gaussien (GMM) ne donnant qu'un seul cluster

J'ai un jeu de données qui comporte 70 colonnes et 4,4 millions de lignes. Je veux effectuer un clustering sur ce jeu de données. J'ai commencé par TF-IDF, puis j'ai utilisé le clustering avec K-means, Bisecting k-means et Gaussian Mixture Model (GMM). Alors que les autres techniques me donnent le nombre spécifié de clusters, le GMM ne donne qu'un seul cluster. Par exemple, dans le code ci-dessous, je veux 20 clusters mais il ne retourne qu'un seul cluster. Est-ce que cela est dû au fait que j'ai beaucoup de colonnes ou est-ce que cela est simplement dû à la nature des données ?

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

1voto

Ashu Kushwaha Points 11

A mon avis, la raison principale de la mauvaise performance de clustering de Pyspark GMM est que son implémentation est faite en utilisant une matrice de covariance diagonale qui ne prend pas en compte la covariance entre les différentes caractéristiques présentes dans l'ensemble de données.

Vérifiez sa mise en œuvre ici : https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/clustering/GaussianMixture.scala

où ils ont clairement mentionné l'utilisation d'une matrice de covariance diagonale en raison de la malédiction de la dimensionnalité.

Note Cet algorithme est limité dans son nombre de caractéristiques car il nécessite le stockage d'une matrice de covariance dont la taille est quadratique par rapport au nombre de caractéristiques. Même lorsque le nombre de caractéristiques ne dépasse pas cette limite, cet algorithme peut avoir des performances médiocres sur des données à haute dimension. Cela est dû au fait que les données à haute dimension (a) rendent difficile tout regroupement (sur la base d'arguments statistiques/théoriques) et (b) à des problèmes numériques avec les distributions gaussiennes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X