Comment normaliser les données pour le réseau neuronal et la forêt de décision

10

J'ai un ensemble de données avec 20000 échantillons, chacun a 12 fonctionnalités différentes. Chaque échantillon appartient à la catégorie 0 ou 1. Je souhaite former un réseau de neurones et une forêt de décision pour catégoriser les échantillons afin de pouvoir comparer les résultats et les deux techniques.

La première chose sur laquelle je suis tombé est la bonne normalisation des données. Une caractéristique se situe dans la plage [0,dix6] , une autre dans [30,40] et il y a une fonctionnalité qui prend principalement la valeur 8 et parfois 7. Donc, comme je l'ai lu dans différentes sources, une normalisation correcte des données d'entrée est crucial pour les réseaux de neurones. Comme je l'ai découvert, il existe de nombreuses façons de normaliser les données, par exemple:

  1. Normalisation Min-Max : La plage d'entrée est transformée linéairement en l'intervalle [0,1] (ou alternativement [-1,1] , est-ce important?)
  2. Normalisation du score Z : les données sont transformées pour avoir une moyenne nulle et une variance unitaire:
    ynew=yol-signifierVar

Quelle normalisation dois-je choisir? La normalisation est-elle également nécessaire pour les forêts de décision? Avec la normalisation Z-Score, les différentes fonctionnalités de mes données de test ne se trouvent pas dans la même plage. Cela pourraît-il poser problème? Est-ce que chaque fonctionnalité devrait être normalisée avec le même algorithme, de sorte que je décide d'utiliser Min-Max pour toutes les fonctionnalités ou Z-Score pour toutes les fonctionnalités?

Existe-t-il des combinaisons où les données sont mappées sur [-1,1] et ont également une moyenne nulle (ce qui impliquerait une transformation non linéaire des données et donc un changement de la variance et d'autres caractéristiques des données d'entrée).

Je me sens un peu perdu car je ne trouve pas de références qui répondent à ces questions.

Merlin1896
la source

Réponses:

21

Je ne suis pas d'accord avec les autres commentaires.

Tout d'abord, je ne vois pas la nécessité de normaliser les données pour les arbres de décision . Les arbres de décision fonctionnent en calculant un score (généralement l'entropie) pour chaque division différente des données . L'application d'une transformation aux données qui ne modifie pas l'ordre des données ne fait aucune différence.(XXje,X>Xje)

Les forêts aléatoires ne sont qu'un tas d'arbres de décision, donc cela ne change pas cette justification.

Les réseaux de neurones sont une autre histoire. Tout d'abord, en termes de prédiction, cela ne fait aucune différence. Le réseau de neurones peut facilement contrer votre normalisation car il ne fait que mettre à l'échelle les poids et modifie le biais. Le gros problème est dans la formation.

Si vous utilisez un algorithme comme la rétropropagation résiliente pour estimer les poids du réseau neuronal, cela ne fait aucune différence. La raison en est qu'il utilise le signe du gradient, et non son ampleur, lors du changement des poids dans le sens de tout ce qui minimise votre erreur. Il s'agit d'ailleurs de l'algorithme par défaut pour le neuralnetpackage dans R.

Quand cela fait-il une différence? Lorsque vous utilisez une rétropropagation traditionnelle avec des fonctions d'activation sigmoïde, cela peut saturer le dérivé sigmoïde.

Considérez la fonction sigmoïde (verte) et sa dérivée (bleue):

sigmoïde

Que se passe-t-il si vous ne normalisez pas vos données, c'est que vos données sont multipliées par les poids aléatoires et que vous obtenez des choses comme s(9999)=0

X-minXmaxX-minX-0,5

La normalisation réelle n'est pas très cruciale car elle n'influence que les itérations initiales du processus d'optimisation. Tant qu'il est centré et que la plupart de vos données sont inférieures à 1, cela peut signifier que vous devrez utiliser un nombre d'itérations légèrement inférieur ou supérieur pour obtenir le même résultat. Mais le résultat sera le même, tant que vous éviterez le problème de saturation que j'ai mentionné.

Il y a quelque chose qui n'est pas discuté ici qui est la régularisation . Si vous utilisez la régularisation dans votre fonction objectif, la façon dont vous normaliser vos données sera une incidence sur le modèle résultant. Je suppose que vous le connaissez déjà. Si vous savez qu'une variable est plus susceptible de provoquer un sur-ajustement, votre normalisation des données doit en tenir compte. Ceci est bien sûr complètement indépendant des réseaux de neurones utilisés.

Ricardo Cruz
la source
2
  1. Il n'y a pas de réponse claire . Ce que je recommanderais serait de mettre à l'échelle vos données en utilisant différentes approches, puis d'utiliser le même modèle pour prédire les résultats sur votre ensemble d'exclusion (les RF fonctionneraient bien ici). Cela devrait au moins vous montrer quelle approche de mise à l'échelle est la meilleure dans votre problème de prédiction.
  2. Vous n'avez pas besoin de mettre à l'échelle vos données pour les forêts aléatoires
  3. Les plages individuelles ne devraient pas être un problème tant qu'elles sont systématiquement mises à l'échelle pour commencer. Cela illustre simplement qu'il existe des différences entre les variables, à une échelle plus compacte qu'auparavant.
  4. Oui - toutes vos données doivent être mises à l'échelle avec la même approche. Sinon, les valeurs de votre jeu de données transformé peuvent ne pas être liées aux données elles-mêmes, mais à l'algo utilisé pour la mise à l'échelle.

J'espère que cela aide.

plumbus_bouquet
la source
1
Excellente réponse, j'ajouterais simplement que cela dépend un peu de la distribution particulière des données que vous traitez et si vous supprimez les valeurs aberrantes. Les données normales seront très bonnes si vous les standardisez. Cependant, une distribution uniforme pourrait sembler beaucoup mieux avec une normalisation min / max. De plus, une distribution log normale avec sigma = 10 pourrait cacher une grande partie du comportement intéressant près de zéro si vous le normalisez min / max.
AN6U5
@ AN6U5 - Très bon point. Honnêtement, je n'ai pas trop réfléchi aux impacts de la mise à l'échelle sur différentes distributions / valeurs aberrantes sous-jacentes. Je pourrais lui donner une lecture ce matin!
plumbus_bouquet