Quel est lécart type de “ unit ”?

Il est courant de normaliser les données pour entraîner un réseau de neurones à une moyenne nulle et un écart-type « unitaire » pour réduire les effets de gradient qui explosent et disparaissent, etc.

Que signifie « unité » std ici? Un exemple serait vraiment utile.

Commentaires

  • Cela signifie égal à 1. Pour obtenir cela, divisez les valeurs par lécart type des données dorigine . (La moyenne zéro vient de la soustraction de la moyenne.)

Réponse

Cela signifie que vous convertissez vos caractéristiques de données de ses unités dorigine (miles, dollars, temps écoulé, …) aux unités décart type. Comme vous lavez demandé, voici un exemple très simple:

Supposons que vous souhaitiez prédire les prix des maisons à partir de deux caractéristiques: le nombre de chambres (unité entière) et la taille (en mètres carrés), comme les données fictives ci-dessous:

import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]]) 

Notez que chaque entité a une moyenne et un écart-type très différents

print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0)) 

Résultats: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])

Remarqué que la taille de lélément a une moyenne et une std plus de 30 fois plus grande que le nombre de chambres à coucher, cela produit des distorsions dans certains calculs dalgorithmes (comme les réseaux neuronaux, svm , knn, etc.) où certaines fonctionnalités avec des valeurs plus grandes dominent complètement les autres avec des valeurs plus petites. Pour résoudre quune pratique courante et très efficace consiste à transformer les données en unités décart type avec une moyenne nulle, cest-à-dire que vous soustrayez la moyenne et divisez par lécart type, comme ci-dessous:

X_t = (X - X.mean(axis=0))/X.std(axis=0) 

La variable X_t (X transformé) contient vos entités en écarts-types unitaires avec une moyenne nulle, imprimant X_t vous obtenez:

array([[-1.21267813, -0.53452248], [ 1.69774938, 2.07127462], [ 0.24253563, 0.06681531], [ 0.24253563, -0.33407655], [-1.21267813, -1.13586028], [ 0.24253563, -0.13363062]]) 

Regardez comment les nombres dans les deux entités ont tous la même grandeur. Si vous imprimez X_t mean et std maintenant, vous obtenez

mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.] 

comme prévu.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *