2017-10-14 5 views
3

Quelle approche est la meilleure pour normaliser/normaliser les caractéristiques qui n'ont pas de valeur maximale théorique? Par exemple, une tendance comme une valeur boursière qui a toujours été comprise entre 0 et 1 000 $ ne signifie pas qu'elle ne peut pas remonter plus haut, alors quelle est la bonne approche?Apprentissage automatique - normaliser les caractéristiques sans valeur théorique maximum

je pensais à la formation d'un modèle sur un maximum plus élevé (ex. 2000), mais il ne se sent pas bien, car aucune donnée ne sera disponible pour la gamme 1000-2000, et je pense que ce serait introduire un biais

+0

Je considérerais quelque chose comme une [fonction sigmoïde] (https://en.wikipedia.org/wiki/Sigmoid_function) ou une autre [fonction d'activation] (https://en.wikipedia.org/wiki/Activation_function) , qui mappe tous les nombres réels à un intervalle fini. –

+0

passeriez-vous la normalisation des fonctionnalités dans la plage 0-1 et laisser les données telles quelles? – Stormsson

+0

Si je vous comprends bien, non, je ne le ferais pas. La fonction sigmoïde de base mappe toutes les valeurs à l'intervalle (0,1), avec 0 correspondant à 0.5, et 1 carte à ~ 0.73. Si vous ne normaliser les valeurs de 0-1, à moins qu'ils ne soient spécialement marqués pour indiquer qu'ils ne sont pas normés, ils vont effectivement corrompre vos données normalisées. –

Répondre

1

TL; DR: utiliser z-scores, peut-être prendre un journal, peut-être prendre logit inverse, peut-être ne pas normaliser du tout.

Si vous souhaitez normaliser en toute sécurité, utiliser une cartographie monotones, par exemple:

Pour carte (0, inf) en (-inf, inf), vous pouvez utiliser y = log(x)

Pour carte (-inf, inf) en (0, 1), vous pouvez utiliser y = 1/(1 + exp(-x)) (logit inverse)

Pour carte (0, inf) en (0, 1), vous pouvez utiliser y = x/(1 + x) (logit inverse après log)

Si vous ne vous souciez pas des limites, utilisez une correspondance linéaire: y=(x - m)/s, où m est la moyenne de votre entité et s est son écart-type. C'est ce qu'on appelle la mise à l'échelle standard, ou parfois z-scoring.

La question que vous auriez dû vous poser: pourquoi se normaliser?. Qu'allez-vous faire de vos données? Utilisez-le comme une fonctionnalité d'entrée? Ou l'utiliser comme une cible à prédire? Pour une caractéristique en entrée, la laissant sans normalisation est OK, sauf si vous effectuez une régularisation sur les coefficients du modèle (comme Ridge ou Lasso), ce qui fonctionne mieux si tous les coefficients sont dans la même échelle (c'est-à-dire après mise à l'échelle standard).

Pour une fonction cible, la laisser non normalisée est parfois également OK.

Les modèles additifs (comme la régression linéaire ou l'amplification de gradient) fonctionnent parfois mieux avec des distributions symétriques. Les distributions des valeurs boursières (et des valeurs monétaires en général) sont souvent décalées vers la droite, ce qui rend les journaux plus pratiques. Enfin, si vous prédisez votre fonctionnalité avec un réseau neuronal avec fonction d'activation sigmoïde, il est . Dans ce cas, vous pouvez souhaiter que la cible soit également délimitée. Pour ce faire, vous pouvez utiliser x/(1 + x) comme cible: si x est toujours positif, cette valeur sera toujours comprise entre 0 et 1, tout comme la sortie du réseau neuronal.