Est-il nécessaire de standardiser vos données avant le clustering?

23

Est-il nécessaire de standardiser vos données avant cluster? Dans l'exemple de scikit learnDBSCAN, 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?

Candic3
la source
Merci pour les réponses détaillées! Pour faire suite à toutes vos réponses: je comprends que si les fonctionnalités sont à des échelles différentes, cela pourrait poser un problème. Cependant, si la métrique de distance est normalisée à la variance, cela donne-t-il le même résultat que la mise à l'échelle standard avant le regroupement? c'est-à-dire que j'utilise généralement une distance euclidienne normalisée liée - cela atténue-t-il également les effets d'échelle?
Candic3

Réponses:

19

La normalisation n'est pas toujours requise, mais elle fait rarement mal.

Quelques exemples:

K-signifie :

Le regroupement K-means est "isotrope" dans toutes les directions de l'espace et a donc tendance à produire des grappes plus ou moins rondes (plutôt qu'allongées). Dans cette situation, laisser des variances inégales équivaut à mettre plus de poids sur les variables avec une variance plus petite.

Exemple dans Matlab:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

entrez la description de l'image ici

entrez la description de l'image ici

(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é :

L'analyse comparative montre que les résultats du clustering distribué dépendent du type de procédure de normalisation.

Réseau de neurones artificiels (entrées) :

Si les variables d'entrée sont combinées linéairement, comme dans un MLP, il est rarement strictement nécessaire de standardiser les entrées, du moins en théorie. La raison en est que toute mise à l'échelle d'un vecteur d'entrée peut être efficacement annulée en modifiant les pondérations et les biais correspondants, vous laissant les mêmes sorties que vous aviez auparavant. Cependant, il existe une variété de raisons pratiques pour lesquelles la standardisation des entrées peut accélérer la formation et réduire les chances de rester coincé dans les optima locaux. De plus, la décroissance du poids et l'estimation bayésienne peuvent être effectuées plus facilement avec des entrées standardisées.

Réseau de neurones artificiels (entrées / sorties)

Devriez-vous faire l'une de ces choses avec vos données? La réponse est, cela dépend.

La standardisation des variables d'entrée ou cibles tend à améliorer le comportement du processus de formation en améliorant la condition numérique (voir ftp://ftp.sas.com/pub/neural/illcond/illcond.html ) du problème d'optimisation et en veillant à ce que divers paramètres par défaut les valeurs impliquées dans l'initialisation et la terminaison sont appropriées. La standardisation des cibles peut également affecter la fonction objectif.

La standardisation des cas doit être abordée avec prudence car elle élimine les informations. Si ces informations ne sont pas pertinentes, la standardisation des cas peut être très utile. Si ces informations sont importantes, la standardisation des cas peut être désastreuse.


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).

Dans certaines applications, le changement des unités de mesure peut même conduire à voir une structure de cluster très différente. Par exemple, l'âge (en années) et la taille (en centimètres) de quatre personnes imaginaires sont donnés dans le tableau 3 et représentés sur la figure 3. Il semble que {A, B) et {C, 0) sont deux grappes bien séparées . En revanche, lorsque la hauteur est exprimée en pieds, on obtient le tableau 4 et la figure 4, où les grappes évidentes sont maintenant {A, C} et {B, D}. Cette partition est complètement différente de la première car chaque sujet a reçu un autre compagnon. (La figure 4 aurait été encore plus aplatie si l'âge avait été mesuré en jours.)

Pour éviter cette dépendance sur le choix des unités de mesure, on a la possibilité de standardiser les données. Cela convertit les mesures originales en variables sans unité.

entrez la description de l'image ici entrez la description de l'image ici

Kaufman et al. continue avec quelques considérations intéressantes (page 11):

D'un point de vue philosophique, la standardisation ne résout pas vraiment le problème. En effet, le choix des unités de mesure donne lieu à des poids relatifs des variables. L'expression d'une variable en unités plus petites entraînera une plus grande plage pour cette variable, ce qui aura alors un effet important sur la structure résultante. D'un autre côté, en standardisant, on essaie de donner à toutes les variables un poids égal, dans l'espoir d'atteindre l'objectivité. En tant que tel, il peut être utilisé par un praticien qui ne possède aucune connaissance préalable. Cependant, il se pourrait bien que certaines variables soient intrinsèquement plus importantes que d'autres dans une application particulière, et alors l'attribution des poids devrait être basée sur la connaissance du sujet (voir, par exemple, Abrahamowicz, 1985). D'autre part, des tentatives ont été faites pour concevoir des techniques de regroupement indépendantes de l'échelle des variables (Friedman et Rubin, 1967). La proposition de Hardy et Rasson (1982) est de rechercher une cloison qui minimise le volume total des coques convexes des grappes. En principe, une telle méthode est invariante par rapport aux transformations linéaires des données, mais malheureusement aucun algorithme n'existe pour sa mise en œuvre (à l'exception d'une approximation limitée à deux dimensions). Par conséquent, le dilemme de la normalisation semble inévitable à l'heure actuelle et les programmes décrits dans ce livre laissent le choix à l'utilisateur. La proposition de Hardy et Rasson (1982) est de rechercher une cloison qui minimise le volume total des coques convexes des grappes. En principe, une telle méthode est invariante par rapport aux transformations linéaires des données, mais malheureusement aucun algorithme n'existe pour sa mise en œuvre (à l'exception d'une approximation limitée à deux dimensions). Par conséquent, le dilemme de la normalisation semble inévitable à l'heure actuelle et les programmes décrits dans ce livre laissent le choix à l'utilisateur. La proposition de Hardy et Rasson (1982) est de rechercher une cloison qui minimise le volume total des coques convexes des grappes. En principe, une telle méthode est invariante par rapport aux transformations linéaires des données, mais malheureusement aucun algorithme n'existe pour sa mise en œuvre (à l'exception d'une approximation limitée à deux dimensions). Par conséquent, le dilemme de la normalisation semble inévitable à l'heure actuelle et les programmes décrits dans ce livre laissent le choix à l'utilisateur.

Franck Dernoncourt
la source
1
Cette réponse est phénoménale
Candic3
6

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:

>>> import numpy as np
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> 
>>> X = np.array([[1,2,100],[4,3,50],[1,1,75]])
>>> 
>>> print X
[[  1   2 100]
 [  4   3  50]
 [  1   1  75]]
>>> 
>>> print euclidean_distances(X)
[[  0.          50.0999002   25.01999201]
 [ 50.0999002    0.          25.25866188]
 [ 25.01999201  25.25866188   0.        ]]
>>> print euclidean_distances(StandardScaler().fit_transform(X))
[[ 0.          3.46410162  1.73205081]
 [ 3.46410162  0.          3.46410162]
 [ 1.73205081  3.46410162  0.        ]]

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.

David
la source
1

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.

image_doctor
la source
0

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é.

Marmite Bomber
la source
Mais, alors, ne pourriez-vous pas simplement inclure cela comme une fonctionnalité supplémentaire sur laquelle vous vous regroupez? c'est-à-dire que le prix devient une fonctionnalité sur laquelle se regrouper?
Candic3