Est-il nécessaire de standardiser vos données avant cluster? Dans l'exemple de scikit learn
DBSCAN, ici, ils le font dans la ligne:
X = StandardScaler().fit_transform(X)
Mais je ne comprends pas pourquoi c'est nécessaire. Après tout, le clustering ne suppose aucune distribution particulière de données - il s'agit d'une méthode d'apprentissage non supervisée, son objectif est donc d'explorer les données.
Pourquoi faudrait-il transformer les données?
Réponses:
La normalisation n'est pas toujours requise, mais elle fait rarement mal.
Quelques exemples:
K-signifie :
Exemple dans Matlab:
(FYI: Comment puis-je détecter si mon ensemble de données est clusterisé ou non clusterisé (c'est-à-dire former un seul cluster )
Clustering distribué :
Réseau de neurones artificiels (entrées) :
Réseau de neurones artificiels (entrées / sorties)
Fait intéressant, le changement des unités de mesure peut même conduire à voir une structure de regroupement très différente: Kaufman, Leonard et Peter J. Rousseeuw .. "Trouver des groupes dans les données: une introduction à l'analyse de cluster." (2005).
Kaufman et al. continue avec quelques considérations intéressantes (page 11):
la source
La standardisation des données est recommandée car sinon, la plage de valeurs dans chaque fonctionnalité agira comme un poids lors de la détermination de la façon de regrouper les données, ce qui est généralement indésirable.
Par exemple, considérez la métrique standard pour la plupart des algorithmes de clustering (y compris DBSCAN dans sci-kit learn) -
euclidean
, autrement connu comme la norme L2. Si l'une de vos fonctionnalités a une plage de valeurs beaucoup plus grande que les autres, le clustering sera complètement dominé par cette seule fonctionnalité. Pour illustrer ce regard sur l'exemple simple ci-dessous:De cela, vous devriez voir que les distances euclidiennes entre les versions non standardisées sont dominées par la troisième colonne parce que sa plage de valeurs est beaucoup plus grande que les deux autres. Cependant, lorsque les données sont normalisées, cela ne devient plus un problème et pondère chaque entité comme étant égale lors du calcul de la distance entre chaque point de données.
la source
Il n'est pas strictement nécessaire de standardiser, si cela est nécessaire ou non peut dépendre de la métrique de distance que vous choisissez.
Par exemple, si vous optez pour la distance de Mahalanobis, la séparation sera basée sur le nombre d'écarts-types séparant les points et non sur la distance absolue entre eux, en tant que telle, il s'agit d'une métrique invariante d'échelle.
Comme pour beaucoup de choses dans l'apprentissage automatique, il n'y a pas de réponse dure et rapide et la seule façon de savoir avec certitude est d'appliquer une variété de techniques qui donnent les résultats les plus appropriés pour vos données.
la source
J'ai trouvé dans certains cas utile de définir une fonction «évaluation d'entreprise», définissant «l'importance» des dimensions utilisées pour le clustering. Par exemple, pour un marchand de légumes regroupant les clients, si les pommes sont deux fois plus chères que les oranges, le nombre de pommes sera doublé.
la source