Het is gebruikelijk om gegevens voor het trainen van een neuraal netwerk te normaliseren naar het gemiddelde nul en de standaarddeviatie “eenheid” om exploderende en verdwijnende gradiënteffecten enz. te verminderen. / p>
Wat betekent “unit” std hier? Een voorbeeld zou echt nuttig zijn.
Opmerkingen
- Het betekent gelijk aan 1. Om ervoor te zorgen dat je waarden deelt door de standaarddeviatie van de originele gegevens . (Het gemiddelde nul komt van het aftrekken van het gemiddelde.)
Antwoord
Het betekent dat u uw gegevenselementen converteert van de oorspronkelijke eenheden (mijlen, dollars, verstreken tijd, …) tot eenheden van standaarddeviatie. Zoals u heeft gevraagd volgt een heel eenvoudig voorbeeld:
Stel dat u huizenprijzen wilt voorspellen op basis van twee kenmerken: aantal slaapkamers (eenheid in gehele getallen) en grootte (eenheid in vierkante meters), zoals de fictieve gegevensbalg:
import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]])
Merk op dat elk kenmerk een zeer verschillende gemiddelde en standaarddeviatie heeft.
print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0))
Uitgangen: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])
Merkte op dat de objectgrootte gemiddeld en std meer dan 30x groter is dan het aantal slaapkamers, dit veroorzaakt vervormingen in sommige algoritmenberekeningen (zoals neurale netten, svm , knn, etc) waar sommige functies met grotere waarden volledig domineren de andere met kleinere waarden. Om dat op te lossen is het een veel voorkomende en zeer effectieve praktijk om de gegevens om te zetten in eenheden van standaarddeviatie met een gemiddelde van nul, dat wil zeggen, je trekt het gemiddelde af en deelt door de standaarddeviatie, zoals hieronder:
X_t = (X - X.mean(axis=0))/X.std(axis=0)
De variabele X_t
(X-getransformeerd) bevat uw kenmerken in standaarddeviaties van eenheden met een gemiddelde waarde van nul, afdrukken X_t
je krijgt:
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]])
Kijk hoe de getallen in beide features allemaal dezelfde grootte hebben. Als je nu X_t
mean en std afdrukt, krijg je
mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.]
zoals verwacht.