Es ist üblich, Daten für das Training eines neuronalen Netzwerks auf den Mittelwert Null und die Standardabweichung „Einheit“ zu normalisieren, um explodierende und verschwindende Gradienteneffekte usw. zu reduzieren.
Was bedeutet „Einheit“ std hier? Ein Beispiel wäre sehr hilfreich.
Kommentare
- Es bedeutet gleich 1. Damit Sie die Werte durch die Standardabweichung der Originaldaten dividieren . (Der Mittelwert Null ergibt sich aus dem Subtrahieren des Mittelwerts.)
Antwort
Dies bedeutet, dass Sie Ihre Datenfunktionen konvertieren von den ursprünglichen Einheiten (Meilen, Dollar, verstrichene Zeit, …) bis zu Einheiten mit Standardabweichung. Wie Sie angefordert haben, folgt ein sehr einfaches Beispiel:
Angenommen, Sie möchten die Immobilienpreise anhand von zwei Merkmalen vorhersagen: Anzahl der Schlafzimmer (ganzzahlige Einheit) und Größe (in Quadratmetern), wie im fiktiven Datenbalg unten:
import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]])
Beachten Sie, dass jedes Feature sehr unterschiedliche Mittelwerte und Standardabweichungen aufweist.
print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0))
Ausgaben: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])
Es wurde festgestellt, dass die Feature-Größe durchschnittlich und mehr als 30x größer als die Anzahl der Schlafzimmer ist. Dies führt zu Verzerrungen bei der Berechnung einiger Algorithmen (z. B. neuronale Netze, svm) , knn, etc) wo einige Merkmale mit größeren Werten die anderen mit kleineren Werten vollständig dominieren. Um dies zu lösen, besteht eine übliche und sehr effektive Praxis darin, die Daten in Einheiten der Standardabweichung mit dem Mittelwert Null umzuwandeln, dh Sie subtrahieren den Mittelwert und dividieren durch die Standardabweichung, wie unten:
X_t = (X - X.mean(axis=0))/X.std(axis=0)
Die Variable X_t
(X transformiert) enthält Ihre Merkmale in Einheitsstandardabweichungen mit dem Mittelwert Null und gibt X_t
Sie erhalten:
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]])
Sehen Sie, wie die Zahlen in beiden Funktionen alle dieselbe Größe haben. Wenn Sie X_t
mean und std drucken, erhalten Sie wie erwartet
mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.]
.