Este o practică obișnuită să normalizați datele pentru antrenarea unei rețele neuronale la zero medie și abaterea standard „unitate” pentru a reduce efectele gradientului care explodează și dispar, etc.
Ce înseamnă „unitate” std aici? Un exemplu ar fi foarte util.
Comentarii
- Înseamnă egal cu 1. Pentru a obține faptul că împărțiți valorile la abaterea standard a datelor originale . (Media zero provine din scăderea mediei.)
Răspuns
Înseamnă că vă convertiți caracteristicile de date de la unitățile sale originale (mile, dolari, timp scurs, …) la unități de deviație standard. După cum ați solicitat, urmează un exemplu foarte simplu:
Să presupunem că doriți să preziceți prețurile locuințelor din două caracteristici: numărul de dormitoare (unitate întreagă) și dimensiunea (în unitate de metri pătrați), cum ar fi datele fictive de mai jos:
import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]])
Observați că fiecare caracteristică are o diferență standard și medie foarte diferită
print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0))
Ieșiri: mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])
Observat că dimensiunea caracteristicii are o medie și o valoare mai mare de 30 de ori mai mare decât numărul de dormitoare, aceasta produce distorsiuni în calcularea unor algoritmi (cum ar fi rețele neuronale, svm , knn, etc) unde unele caracteristici cu valori mai mari le domină complet pe celelalte cu valori mai mici. Pentru a rezolva faptul că o practică obișnuită și foarte eficientă este transformarea datelor în unități de deviație standard cu medie zero, adică scadeți media și împărțiți la abaterea standard, ca mai jos:
X_t = (X - X.mean(axis=0))/X.std(axis=0)
Variabila X_t
(X transformat) conține caracteristicile dvs. în deviații standard ale unității cu zero medie, imprimând X_t
veți obține:
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]])
Uitați cum numerele din ambele caracteristici au aceeași magnitudine. Dacă tipăriți X_t
mean și std acum primiți
mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.]
așa cum era de așteptat.