Normalizzazione e standardizzazione dei dati nelle reti neurali


40

Sto cercando di prevedere il risultato di un sistema complesso che utilizza reti neurali (ANN). I valori di risultato (dipendenti) vanno da 0 a 10.000. Le diverse variabili di input hanno intervalli diversi. Tutte le variabili hanno distribuzioni approssimativamente normali.

Considero diverse opzioni per ridimensionare i dati prima dell'allenamento. Un'opzione è ridimensionare le variabili di input (indipendenti) e output (dipendenti) su [0, 1] calcolando la funzione di distribuzione cumulativa utilizzando i valori di deviazione media e standard di ciascuna variabile, indipendentemente. Il problema con questo metodo è che se uso la funzione di attivazione sigmoid in uscita, molto probabilmente mi mancheranno dati estremi, specialmente quelli che non si vedono nel set di addestramento

Un'altra opzione è utilizzare un punteggio z. In tal caso non ho il problema estremo dei dati; tuttavia, sono limitato a una funzione di attivazione lineare in uscita.

Quali sono le altre tecniche di normalizzazione accettate in uso con le ANN? Ho provato a cercare recensioni su questo argomento, ma non sono riuscito a trovare nulla di utile.


A volte viene utilizzata la normalizzazione dei punteggi Z ma ho una strana sensazione che possa essere un altro nome per la risposta di Bayer ??
Osknows

È lo stesso tranne per la parte sbiancante.
Bayerj,

1
Se si prevede un valore (così come si è) anziché una probabilità (ovvero la regressione anziché la classificazione), è necessario utilizzare sempre una funzione di output lineare.
seanv507,

Rank-Gauss di Michael Jahrer . È rango quindi renderlo gaussiano.
user3226167

Risposte:


32

Un approccio standard consiste nel ridimensionare gli input in modo che abbiano media 0 e una varianza di 1. Anche la decorrelazione lineare / sbiancamento / pca aiuta molto.

Se sei interessato ai trucchi del mestiere, posso consigliare l'efficiente carta di backprop di LeCun.


1
Ovviamente non si dovrebbe mai provare a normalizzare ciecamente i dati se i dati non seguono una (singola) distribuzione normale. stats.stackexchange.com/a/816/4581
user4581

24
Con le reti neurali devi. Altrimenti, saturerai immediatamente le unità nascoste, quindi i loro gradienti saranno vicini allo zero e non sarà possibile apprendere. Non si tratta di modellazione (le reti neurali non assumono alcuna distribuzione nei dati di input), ma di problemi numerici.
Bayerj,

Sono abbastanza confuso. Questo link ( machinelearningmastery.com/… ) dice che la standardizzazione è utile quando l'algoritmo che stai usando fa ipotesi sui tuoi dati con una distribuzione gaussiana (non nel caso della NN). Altrimenti, dice che dovresti usare la normalizzazione. Qualcuno può illuminarmi?
ihebiheb,

21

1- La normalizzazione min-max mantiene la distribuzione originale dei punteggi ad eccezione di un fattore di ridimensionamento e trasforma tutti i punteggi in un intervallo comune [0, 1]. Tuttavia, questo metodo non è robusto (cioè, il metodo è altamente sensibile agli outlier.

2- Standardizzazione (normalizzazione del punteggio Z) La tecnica più comunemente usata, che viene calcolata usando la media aritmetica e la deviazione standard dei dati dati. Tuttavia, sia la deviazione media che quella standard sono sensibili ai valori anomali e questa tecnica non garantisce un intervallo numerico comune per i punteggi normalizzati. Inoltre, se i punteggi di input non sono distribuiti gaussiani, questa tecnica non mantiene la distribuzione di input sull'output.

3- Mediana e MAD: la deviazione assoluta mediana e mediana (MAD) sono insensibili ai valori anomali e ai punti nelle code estreme della distribuzione. quindi è robusto. Tuttavia, questa tecnica non mantiene la distribuzione di input e non trasforma i punteggi in un intervallo numerico comune.

4- stimatori tanh: gli stimatori tanh introdotti da Hampel et al. sono robusti e altamente efficienti. La normalizzazione è data da

stimatori tanh dove μGH e σGH sono le stime della deviazione media e standard, rispettivamente, della distribuzione del punteggio reale fornita dagli stimatori Hampel.

Pertanto raccomando stimatori tanh.

riferimento https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt


Sto facendo fatica a trovare informazioni su questo stimatore tanh. Qualcuno può far luce su questo?
Ben Ogorek,

Finalmente ho trovato un documento che fa un buon lavoro descrivendo gli stimatori tanh per la normalizzazione: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Non sembrano fattibili come opzione di normalizzazione per scopi generali. "[Gli stimatori di Tanh] sono molto più complicati da calcolare, rispetto ai punteggi z adattativi ... I punti di coda per tre diversi intervalli dal punteggio mediano della distribuzione devono essere definiti in modo ad hoc. Questi parametri possono essere difficili per determinare sperimentalmente, e se scelto in modo errato, limitare l'efficacia degli stimatori tanh ".
Ben Ogorek,

8

Ho dato una risposta simile qui Quando si esegue la regressione multipla, quando dovresti centrare le variabili del tuo predittore e quando dovresti standardizzarle? ma ho pensato che fosse una risposta sufficientemente diversa nel contesto in cui una risposta potesse arrivare qui.

Esiste una grande risorsa usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

Fornisce in termini semplici alcuni dei problemi e delle considerazioni quando si desidera normalizzare / standardizzare / ridimensionare i dati. Poiché tratta l'argomento dal punto di vista dell'apprendimento automatico, e poiché la tua domanda è ML, potrebbe avere una certa rilevanza.


Dovresti scrivere qui i punti principali di ogni link, quindi non è necessaria alcuna "navigazione" aggiuntiva
leoschet

2

Si potrebbe fare

  • normalizzazione min-max (normalizzare input / target in modo che rientrino nell'intervallo [−1,1]), oppure
  • normalizzazione di deviazione standard-media (normalizzare input / target per avere zero varianza media / unità / deviazione standard)

1

Se stai lavorando python, sklearnha un metodo per farlo usando diverse tecniche nel loro preprocessingmodulo (oltre a un'elegante funzionalità di pipeline, con un esempio nei loro documenti):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)

0

Bene, [0,1] è l'approccio standard. Per le reti neurali, funziona meglio nell'intervallo 0-1. Il ridimensionamento Min-Max (o Normalizzazione) è l'approccio da seguire.

Ora sugli outlier, nella maggior parte degli scenari, dobbiamo eliminarli, poiché gli outlier non sono comuni, non si desidera che gli outlier influiscano sul modello (a meno che il rilevamento di anomalie non sia il problema che si sta risolvendo). È possibile ritagliarlo in base alla regola empirica di 68-95-99.7 o creare un diagramma a scatole, osservare e quindi ritagliarlo.

Formula MinMax - (xi - min(x)) / (max(x) - min(x)) o può usaresklearn.preprocessing.MinMaxScaler


-1

"Accettato" è ciò che funziona meglio per te, quindi lo accetti.

Nella mia esperienza di adattamento di una distribuzione dalla famiglia di distribuzioni Johnson a ciascuna delle funzionalità continue funziona bene perché le distribuzioni sono altamente flessibili e possono trasformare la maggior parte delle funzionalità uni-modali in distribuzioni normali standard. Aiuterà anche con le funzionalità multimodali, ma il punto è che generalmente mette le caratteristiche nella forma più desiderabile possibile (i dati distribuiti gaussiani standard sono ideali con cui lavorare - sono compatibili e talvolta ottimali per quasi tutti metodo statistico / ML disponibile).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.