Powszechną praktyką jest normalizowanie danych w celu uczenia sieci neuronowej do zerowej średniej i odchylenia standardowego „jednostkowego” w celu zredukowania eksplozji i zanikania efektów gradientu itp.
Co oznacza tutaj „jednostka” std? Przykład byłby naprawdę pomocny.
Komentarze
- To znaczy równe 1. Aby uzyskać dzielenie wartości przez odchylenie standardowe oryginalnych danych . (Średnia zerowa pochodzi z odjęcia średniej).
Odpowiedź
Oznacza to, że konwertujesz funkcje danych od oryginalnych jednostek (mile, dolary, upływający czas, …) do jednostek odchylenia standardowego. Zgodnie z żądaniem podążamy za bardzo prostym przykładem:
Załóżmy, że chcesz przewidzieć ceny domów na podstawie dwóch cech: liczby sypialni (jednostka całkowita) i wielkości (w metrach kwadratowych), jak na przykład fikcyjne dane poniżej:
import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]])
Zwróć uwagę, że każda funkcja ma bardzo inną średnią i odchylenie standardowe
print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0))
Wyniki: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])
Zauważyliśmy, że rozmiar elementu jest średni i standardowy ponad 30 razy większy niż liczba sypialni, co powoduje zniekształcenia w obliczeniach niektórych algorytmów (np. sieci neuronowe, svm , knn itp.), gdzie niektóre cechy z większymi wartościami całkowicie dominują inne z mniejszymi wartościami. Aby rozwiązać ten powszechny i bardzo skuteczny sposób postępowania, należy przekształcić dane w jednostki odchylenia standardowego z zerową średnią, czyli odjąć średnią i podzielić przez odchylenie standardowe, jak poniżej:
X_t = (X - X.mean(axis=0))/X.std(axis=0)
Zmienna X_t
(przekształcona X) zawiera Twoje cechy w jednostkowych odchyleniach standardowych z zerową średnią, wypisywanie X_t
otrzymujesz:
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]])
Zobacz, jak liczby w obu cechach mają tę samą wielkość. Jeśli drukujesz teraz X_t
średnio i standardowo, otrzymasz
mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.]
zgodnie z oczekiwaniami.