Comment et pourquoi la normalisation et la mise à l'échelle des fonctionnalités fonctionnent-elles?

61

Je constate que de nombreux algorithmes d’apprentissage automatique fonctionnent mieux avec une annulation moyenne et une égalisation de covariance. Par exemple, les réseaux de neurones ont tendance à converger plus rapidement et K-Means offre généralement un meilleur clustering avec des fonctionnalités pré-traitées. Je ne vois pas l'intuition derrière ces étapes de prétraitement améliorer les performances. Quelqu'un peut-il expliquer cela moi?

erogol
la source

Réponses:

25

Il s’agit simplement d’obtenir toutes vos données à la même échelle: si les échelles des différentes fonctionnalités sont très différentes, cela peut avoir un effet d'entraînement sur votre capacité d'apprentissage (en fonction des méthodes que vous utilisez pour le faire). . En veillant à ce que les valeurs d’entité normalisées pèsent implicitement sur toutes les entités, leur représentation est la même.

Ben Allison
la source
3
qu'entendez-vous par "cela peut avoir un effet d'entraînement sur votre capacité à apprendre", peut-être pourriez-vous développer cela?
Charlie Parker
14
Ce n'est pas vraiment une bonne explication. Pour parvenir à une véritable compréhension, vous devez au moins approfondir le niveau d’explication.
Zelphir Kaltstahl
j'ai besoin de toute référence à ma thèse s'il vous plaît
x-rw
40

Il est vrai que le prétraitement dans l’apprentissage automatique est en quelque sorte un art très noir. Il n’est pas écrit souvent dans les journaux pourquoi plusieurs étapes de prétraitement sont essentielles pour que cela fonctionne. Je ne suis pas sûr non plus que ce soit compris dans tous les cas. Pour rendre les choses plus compliquées, cela dépend fortement de la méthode que vous utilisez et du domaine du problème.

Certaines méthodes, par exemple, sont invariantes par transformation affine. Si vous avez un réseau de neurones et appliquez simplement une transformation affine à vos données, le réseau ne perd ni ne gagne rien en théorie. En pratique, cependant, un réseau de neurones fonctionne mieux si les entrées sont centrées et blanches. Cela signifie que leur covariance est diagonale et que la moyenne est le vecteur zéro. Pourquoi améliore-t-il les choses? C’est uniquement parce que l’optimisation du réseau neuronal fonctionne plus harmonieusement, car les fonctions d’activation cachées ne saturent pas aussi vite et ne vous donnent donc pas des gradients proches de zéro au début de l’apprentissage.

D'autres méthodes, telles que K-Means, peuvent vous donner des solutions totalement différentes en fonction du prétraitement. En effet, une transformation affine implique une modification de l'espace métrique: la distance euclidienne entre deux échantillons sera différente après cette transformation.

En fin de compte, vous voulez comprendre ce que vous faites des données. Par exemple, le blanchiment dans la vision par ordinateur et la normalisation selon un échantillon est quelque chose que le cerveau humain fait aussi bien dans son pipeline de vision.

Bayerj
la source
17

Quelques idées, références et graphiques sur les raisons pour lesquelles la normalisation des entrées peut être utile pour ANN et k-means:

K-signifie :

La classification K-means est "isotrope" dans toutes les directions de l'espace et tend donc à produire des grappes plus ou moins rondes (plutôt qu'allongées). Dans cette situation, laisser les variances inégales revient à accorder plus de poids aux variables moins variées.

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

(Pour info: comment puis-je détecter si mon jeu de données est en cluster ou non (c'est-à-dire en formant un seul cluster )

Clustering distribué :

L'analyse comparative montre que les résultats de la mise en cluster distribuée 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 normaliser les entrées, du moins en théorie. La raison en est que toute remise à l'échelle d'un vecteur d'entrée peut être efficacement annulée en modifiant les pondérations et les biais correspondants, vous offrant ainsi exactement les mêmes résultats que précédemment. 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 bloqué dans l'optimum local. En outre, la décroissance du poids et l'estimation bayésienne peuvent être effectuées plus facilement avec des entrées normalisées.

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

Devez-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 a tendance à 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 les valeurs impliquées dans l'initialisation et la terminaison sont appropriées. La normalisation des cibles peut également affecter la fonction objectif.

La normalisation des cas doit être abordée avec prudence car elle supprime des informations. Si cette information n'est pas pertinente, alors la standardisation des cas peut être très utile. Si cette information est importante, la normalisation des cas peut être désastreuse.


Il est intéressant de noter que la modification des unités de mesure peut même conduire à une structure de cluster très différente: Kaufman, Leonard et Peter J. Rousseeuw. "Recherche de groupes dans les données: introduction à l'analyse par cluster." (2005).

Dans certaines applications, la modification des unités de mesure peut même conduire à une structure de clustering très différente. Par exemple, l'âge (en années) et la taille (en centimètres) de quatre personnes imaginaires sont présentés dans le tableau 3 et représentés dans la figure 3. Il apparaît 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 plate si l'âge avait été mesuré en jours.)

Pour éviter cette dépendance sur le choix des unités de mesure, il est possible de normaliser les données. Ceci 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. poursuit avec quelques considérations intéressantes (page 11):

D'un point de vue philosophique, la normalisation ne résout pas vraiment le problème. En effet, le choix des unités de mesure donne lieu à des poids relatifs des variables. Exprimer une variable en unités plus petites donnera une plage plus large pour cette variable, ce qui aura alors un effet important sur la structure résultante. Par contre, en normalisant, on essaie de donner un poids égal à toutes les variables, dans l’espoir de parvenir à l’objectivité. En tant que tel, il peut être utilisé par un praticien qui ne possède aucune connaissance préalable. Cependant, il se peut que certaines variables soient intrinsèquement plus importantes que d’autres dans une application particulière, puis l’attribution de pondérations devrait être fondée sur la connaissance de la matière (voir par exemple Abrahamowicz, 1985). D'autre part, il y a eu des tentatives 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 partition minimisant le volume total des coques convexes des grappes. En principe, une telle méthode est invariante vis-à-vis des 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 partition minimisant le volume total des coques convexes des grappes. En principe, une telle méthode est invariante vis-à-vis des 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 partition minimisant le volume total des coques convexes des grappes. En principe, une telle méthode est invariante vis-à-vis des 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
6

Pourquoi la mise à l'échelle des fonctionnalités fonctionne-t-elle? Je peux vous donner un exemple (de Quora )

Laissez-moi répondre à cela du point de vue général du ML et pas seulement des réseaux de neurones. Lorsque vous collectez des données et extrayez des fonctionnalités, les données sont souvent collectées à différentes échelles. Par exemple, l’âge des employés d’une entreprise peut être compris entre 21 et 70 ans, la taille de la maison qu’ils habitent est comprise entre 500 et 5 000 pieds carrés et leur salaire peut varier entre Dans cette situation, si vous utilisez un système euclidien simple. métrique, la fonction d’âge ne jouera aucun rôle car elle est plus petite de plusieurs ordres que d’autres. Cependant, il peut contenir des informations importantes pouvant être utiles à la tâche. Ici, vous voudrez peut-être normaliser les entités indépendamment à la même échelle, disons [0,1], afin qu'elles contribuent de manière égale lors du calcul de la distance.30000

Vijay PR
la source
4
Si vous citez un article de Quora, vous devez vraiment créer un lien vers la source.
Matthew Drury
5

Il y a deux problèmes distincts:

a) apprendre la bonne fonction, par exemple k-moyennes: l'échelle d'entrée spécifie essentiellement la similarité, donc les grappes trouvées dépendent de la mise à l'échelle. régularisation - par exemple régularisation de 12 poids - vous supposez que chaque poids doit être "également petit" - si vos données ne sont pas mises à l'échelle "de manière appropriée", ce ne sera pas le cas

b) optimisation, à savoir par descente de gradient (par exemple, la plupart des réseaux de neurones). Pour la descente sur gradient, vous devez choisir le taux d’apprentissage ... mais un bon taux d’apprentissage (au moins sur la 1ère couche masquée) dépend de la mise à l’échelle des entrées: les petites entrées [pertinentes] nécessiteront généralement des poids plus importants. Vous souhaitez donc un apprentissage plus long taux pour les poids (pour y arriver plus vite), et vv pour les grandes entrées ... puisque vous voulez utiliser seulement une vitesse d'apprentissage, vous redimensionnez vos entrées. (et le blanchiment, c'est-à-dire que la décoration est également important pour la même raison)

seanv507
la source
1

Cet article ne parle que de k-moyennes, mais il explique et prouve assez bien la nécessité du prétraitement des données.

La normalisation est l'étape centrale du prétraitement dans l'exploration de données, qui consiste à normaliser les valeurs des caractéristiques ou des attributs de différentes plages dynamiques dans une plage spécifique. Dans cet article, nous avons analysé les performances des trois méthodes de normalisation sur l'algorithme conventionnel à moyennes moyennes. En comparant les résultats sur les ensembles de données sur les maladies infectieuses, il a été constaté que le résultat obtenu par la méthode de normalisation du score z est plus efficace que les méthodes de normalisation à échelle décimale ou minimale.

.

... s'il existe certaines caractéristiques, de taille importante ou de grande variabilité, ces types de caractéristiques affecteront fortement le résultat de la mise en cluster. Dans ce cas, la normalisation des données constituerait une tâche de pré-traitement importante pour la mise à l'échelle ou le contrôle de la variabilité des jeux de données.

.

... les caractéristiques doivent être sans dimension puisque les valeurs numériques des plages de caractéristiques dimensionnelles dépendent des unités de mesure et, par conséquent, une sélection de ces unités de mesure peut modifier de manière significative les résultats de la classification. Par conséquent, il ne faut pas utiliser de mesures de distance telles que la distance euclidienne sans normalisation des ensembles de données.

Source: http://maxwellsci.com/print/rjaset/v6-3299-3303.pdf

Leo
la source
1

Le prétraitement fonctionne souvent car il supprime des caractéristiques des données qui ne sont pas liées au problème de classification que vous essayez de résoudre. Pensez par exemple à la classification des données sonores de différentes enceintes. Les fluctuations de la sonie (amplitude) peuvent être sans importance, alors que le spectre de fréquence est l'aspect le plus pertinent. Ainsi, dans ce cas, la normalisation de l'amplitude sera très utile pour la plupart des algorithmes ML, car elle supprime un aspect des données non pertinent et causerait l'adaptation excessive d'un réseau de neurones à des modèles parasites.

Nicolas Schuck
la source
1

Je pense que cela est fait simplement pour que l'entité ayant une valeur plus grande ne masque pas ses effets avec une valeur plus petite lors de l'apprentissage d'un classificateur. Cela devient particulièrement important si l'entité avec des valeurs plus petites contribue réellement à la séparabilité des classes. Les classificateurs comme la régression logistique auraient des difficultés à apprendre la limite de décision, par exemple si elle existe au niveau micro d'une entité et que nous avons d'autres entités de l'ordre de millions. Cela permet également à l’algorithme de mieux converger. Par conséquent, nous ne prenons aucun risque lorsque nous les codons dans nos algorithmes. Il est beaucoup plus facile pour un classificateur d’apprendre les contributions (pondérations) des fonctionnalités de cette façon. Également vrai pour K, l’utilisation des normes euclidiennes (confusion due à l’échelle) signifie. Certains algorithmes peuvent aussi fonctionner sans normalisation.

Vaibhav Arora
la source