Je travaille sur le prétraitement des données et je veux comparer les avantages de Standardisation des données vs Normalisation vs Robuste Scaler pratiquement.
En théorie, les lignes directrices sont les suivantes:
Avantages:
Inconvénients:
J'ai créé 20 au hasard entrées numériques et essayé les méthodes mentionnées ci-dessus ( les chiffres en rouge représentent les valeurs aberrantes):
J'ai remarqué que - en effet - la normalisation a été affectée négativement par les valeurs aberrantes et l'échelle de changement entre les nouvelles valeurs est devenue minuscule ( toutes les valeurs presque identiques -6 chiffres après la virgule décimale- 0.000000x
) même s'il y a des différences notables entre les entrées d'origine!
P.S
J'imagine un scénario dans lequel je veux préparer mon jeu de données pour un Réseau de neurones et je suis préoccupé par le problème de gradient de fuite. Néanmoins, mes questions sont toujours générales.
Ai-je raison de dire que la normalisation est également affectée négativement par les valeurs extrêmes?
En effet, vous l'êtes; les scikit-learn docs eux-mêmes avertissent clairement pour un tel cas:
Cependant, lorsque les données contiennent des valeurs aberrantes,
StandardScaler
peut souvent être trompeur. Dans de tels cas, il est préférable d'utiliser un détartreur robuste contre les valeurs aberrantes.
Plus ou moins, il en va de même pour le MinMaxScaler
.
Je ne vois vraiment pas comment le Scaler robuste a amélioré les données car j'ai encore valeurs extrêmes dans l'ensemble de données résultant? Une interprétation simple et complète?
Robuste ne signifie pas immun , ou invulnérable , et le but de la mise à l'échelle n'est pas pas de "supprimer" les valeurs aberrantes et les valeurs extrêmes - il s'agit d'une tâche distincte avec ses propres méthodologies; ceci est à nouveau clairement mentionné dans les documents scikit-learn pertinents :
RobustScaler
[...] Notez que les valeurs aberrantes elles-mêmes sont toujours présentes dans les données transformées. Si un découpage aberrant séparé est souhaitable, une transformation non linéaire est requise (voir ci-dessous).
où le "voir ci-dessous" fait référence aux QuantileTransformer
et quantile_transform
.
Aucun d'entre eux n'est robuste dans le sens où la mise à l'échelle prendra en charge les valeurs aberrantes et les placera sur une échelle confinée, c'est-à-dire qu'aucune valeur extrême n'apparaîtra.
Vous pouvez envisager des options telles que: