Hva er “ enhet ” standardavvik?

Det er vanlig å normalisere data for å trene et nevralt nettverk til null gjennomsnitt og «enhet» standardavvik for å redusere eksploderende og forsvinnende gradienteffekter etc.

Hva betyr «enhet» std her? Et eksempel vil være veldig nyttig.

Kommentarer

  • Det betyr lik 1. For å få det til å dele verdier med standardavviket til de opprinnelige dataene . (Nullverdien kommer fra å trekke gjennomsnittet.)

Svar

Det betyr at du konverterer datafunksjonene dine fra de opprinnelige enhetene (miles, dollar, forløpt tid, …) til enheter med standardavvik. Som du ba om følger et veldig enkelt eksempel:

Forslag at du vil forutsi boligpriser fra to funksjoner: antall soverom (heltall) og størrelse (i kvadratmeter enhet), som den fiktive databellen:

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

Legg merke til at hver funksjon har veldig forskjellig gjennomsnitt og standardavvik

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

Utganger: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])

Legg merke til at funksjonsstørrelsen har gjennomsnitt og std mer enn 30 ganger større enn antall soverom, dette gir forvrengninger i noen algoritmeberegninger (som nevrale nett, svm , knn, etc) der noen funksjoner med større verdier dominerer helt de andre med mindre verdier. For å løse det er en vanlig og veldig effektiv praksis å transformere dataene til enheter med standardavvik med null gjennomsnitt, det vil si at du trekker gjennomsnittet og deler med standardavviket, som nedenfor:

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

Variabelen X_t (X transformert) inneholder funksjonene dine i enhetsstandardavvik med null gjennomsnitt, utskrift X_t får du:

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]]) 

Se hvordan tallene i begge funksjonene har samme størrelse. Hvis du skriver ut X_t mener og std nå får du

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

som forventet.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *