Dati numerici: normalizzazione

Dopo aver esaminato i dati tramite tecniche statistiche e di visualizzazione, devi trasformarli in modo da addestrare il modello in modo più efficace. L'obiettivo della normalizzazione è trasformare le caratteristiche in modo che siano su una scala simile. Ad esempio, considera le seguenti due funzionalità:

  • La funzionalità X copre l'intervallo da 154 a 24.917.482.
  • La funzionalità Y copre l'intervallo da 5 a 22.

Queste due funzionalità coprono intervalli molto diversi. La normalizzazione potrebbe manipolare X e Y in modo che coprano un intervallo simile, ad esempio da 0 a 1.

La normalizzazione offre i seguenti vantaggi:

  • Aiuta i modelli a convergere più rapidamente durante l'addestramento. Quando caratteristiche diverse hanno intervalli diversi, la discesa del gradiente può "rimbalzare" e rallentare la convergenza. Detto questo, gli ottimizzatori più avanzati come Adagrad e Adam proteggono da questo problema modificando il tasso di apprendimento effettivo nel tempo.
  • Aiuta i modelli a dedurre previsioni migliori. Quando diverse funzionalità hanno intervalli diversi, il modello risultante potrebbe fare previsioni un po' meno utili.
  • Consente di evitare la "trappola dei valori NaN" quando i valori delle funzionalità sono molto elevati. NaN è l'abbreviazione di not a number. Quando un valore in un modello supera il limite di precisione in virgola mobile, il sistema imposta il valore su NaN anziché su un numero. Quando un numero nel modello diventa NaN, anche gli altri numeri nel modello alla fine diventano NaN.
  • Aiuta il modello ad apprendere i pesi appropriati per ogni caratteristica. Senza il ridimensionamento delle funzionalità, il modello presta troppa attenzione alle funzionalità con intervalli ampi e non abbastanza attenzione a quelle con intervalli ristretti.

Ti consigliamo di normalizzare le funzionalità numeriche che coprono intervalli distintamente diversi (ad esempio età e reddito). Consigliamo inoltre di normalizzare una singola funzionalità numerica che copre un'ampia gamma, ad esempio city population.

Considera le seguenti due funzionalità:

  • Il valore minimo della funzionalità A è -0,5 e il valore massimo è +0,5.
  • Il valore minimo della funzionalità B è -5,0 e il valore massimo è +5,0.

Le funzionalità A e B hanno intervalli relativamente ristretti. Tuttavia, l'intervallo della funzionalità B è 10 volte più ampio di quello della funzionalità A. Pertanto:

  • All'inizio dell'addestramento, il modello presuppone che la caratteristica B sia dieci volte più "importante" della caratteristica A.
  • L'addestramento richiederà più tempo del dovuto.
  • Il modello risultante potrebbe non essere ottimale.

Il danno complessivo dovuto alla mancata normalizzazione sarà relativamente piccolo, tuttavia consigliamo comunque di normalizzare la funzionalità A e la funzionalità B sulla stessa scala, ad esempio da -1,0 a +1,0.

Ora considera due funzionalità con una maggiore disparità di intervalli:

  • Il valore minimo della funzionalità C è -1 e il valore massimo è +1.
  • Il valore minimo della funzionalità D è +5000 e il valore massimo è +1.000.000.000.

Se non normalizzi la funzionalità C e la funzionalità D, è probabile che il modello non sia ottimale. Inoltre, l'addestramento richiederà molto più tempo per convergere o addirittura non convergerà mai.

Questa sezione tratta tre metodi di normalizzazione comuni:

  • scalabilità lineare
  • Scalabilità del punteggio z
  • scala logaritmica

Questa sezione tratta anche il clipping. Sebbene non sia una vera e propria tecnica di normalizzazione, il troncamento riduce le caratteristiche numeriche indisciplinate in intervalli che producono modelli migliori.

Scala lineare

Scalabilità lineare (più comunemente abbreviata in scalabilità) significa convertire i valori in virgola mobile dal loro intervallo naturale in un intervallo standard, di solito da 0 a 1 o da -1 a +1.

Il ridimensionamento lineare è una buona scelta quando vengono soddisfatte tutte le seguenti condizioni:

  • I limiti inferiore e superiore dei dati non cambiano molto nel tempo.
  • La funzionalità contiene pochi o nessun valore anomalo e quelli presenti non sono estremi.
  • La funzionalità è distribuita in modo approssimativamente uniforme nel suo intervallo. ovvero un istogramma mostrerebbe barre più o meno uniformi per la maggior parte dei valori.

Supponiamo che age umano sia una funzionalità. Il ridimensionamento lineare è una buona tecnica di normalizzazione per age perché:

  • I limiti inferiore e superiore approssimativi sono compresi tra 0 e 100.
  • age contiene una percentuale relativamente piccola di valori anomali. Solo lo 0,3% circa della popolazione ha più di 100 anni.
  • Sebbene alcune età siano rappresentate meglio di altre, un set di dati di grandi dimensioni dovrebbe contenere esempi sufficienti di tutte le età.

Esercizio: verifica la tua comprensione

Supponiamo che il tuo modello abbia una funzionalità denominata net_worth che contiene il patrimonio netto di persone diverse. La scalabilità lineare è una buona tecnica di normalizzazione per net_worth? Qual è il motivo?

Scalabilità del punteggio z

Un punteggio Z è il numero di deviazioni standard di un valore dalla media. Ad esempio, un valore che è 2 deviazioni standard superiore alla media ha uno Z-score di +2.0. Un valore che è 1,5 deviazioni standard inferiore alla media ha uno Z-score di -1,5.

Rappresentare una caratteristica con la scalabilità Z-score significa memorizzare lo Z-score di quella caratteristica nel vettore di caratteristiche. Ad esempio, la figura seguente mostra due istogrammi:

  • A sinistra, una distribuzione normale classica.
  • A destra, la stessa distribuzione normalizzata mediante la scalabilità del punteggio Z.
Figura 4. Due istogrammi: entrambi mostrano distribuzioni normali con
           la stessa distribuzione. Il primo istogramma, che contiene dati
           non elaborati, ha una media di 200 e una deviazione standard di 30. Il secondo
           istogramma, che contiene una versione Z-score della prima
           distribuzione, ha una media di 0 e una deviazione standard di 1.
Figura 4. Dati non elaborati (a sinistra) rispetto al punteggio Z (a destra) per una distribuzione normale.

La scalabilità Z-score è una buona scelta anche per i dati come quelli mostrati nella figura seguente, che hanno solo una distribuzione vagamente normale.

Figura 5. Due istogrammi di forma identica, ciascuno con un forte
            aumento fino a un plateau e poi una discesa relativamente rapida seguita da
            un decadimento graduale. Un istogramma illustra la
            distribuzione dei dati non elaborati, mentre l'altro illustra la
            distribuzione dei dati non elaborati quando vengono normalizzati mediante la scalatura del punteggio Z.
            I valori sull'asse X dei due istogrammi sono molto diversi.
            L'istogramma dei dati non elaborati copre il dominio da 0 a 29.000,mentre
            l'istogramma scalato del punteggio Z va da -1 a circa +4, 8.
Figura 5. Dati grezzi (a sinistra) rispetto alla scalabilità del punteggio Z (a destra) per una distribuzione normale non classica.

Il punteggio Z è una buona scelta quando i dati seguono una distribuzione normale o una distribuzione simile a una distribuzione normale.

Tieni presente che alcune distribuzioni potrebbero essere normali all'interno della maggior parte del loro intervallo, ma contenere comunque outlier estremi. Ad esempio, quasi tutti i punti di una caratteristica net_worth potrebbero rientrare perfettamente in 3 deviazioni standard, ma alcuni esempi di questa caratteristica potrebbero trovarsi a centinaia di deviazioni standard dalla media. In queste situazioni, puoi combinare la scalatura Z-score con un'altra forma di normalizzazione (di solito il ritaglio) per gestire la situazione.

Esercizio: verifica la tua comprensione

Supponiamo che il modello venga addestrato su una funzionalità denominata height che contiene le altezze di dieci milioni di donne adulte. La scalabilità del punteggio Z sarebbe una buona tecnica di normalizzazione per height? Qual è il motivo?

Scala logaritmica

La scalabilità logaritmica calcola il logaritmo del valore non elaborato. In teoria, il logaritmo potrebbe avere qualsiasi base; in pratica, la scalabilità logaritmica di solito calcola il logaritmo naturale (ln).

La scalatura logaritmica è utile quando i dati seguono una distribuzione della legge di potenza. In termini semplici, una distribuzione a legge di potenza ha il seguente aspetto:

  • I valori bassi di X hanno valori molto alti di Y.
  • All'aumentare dei valori di X, i valori di Y diminuiscono rapidamente. Di conseguenza, i valori elevati di X hanno valori molto bassi di Y.

Le valutazioni dei film sono un buon esempio di distribuzione a legge di potenza. Nella figura seguente, nota:

  • Alcuni film hanno molte valutazioni degli utenti. (I valori bassi di X hanno valori elevati di Y.)
  • La maggior parte dei film ha pochissime valutazioni degli utenti. (I valori elevati di X hanno valori bassi di Y.)

La scalabilità logaritmica modifica la distribuzione, il che aiuta ad addestrare un modello che farà previsioni migliori.

Figura 6. Due grafici che confrontano i dati non elaborati con il log dei dati non elaborati.
            Il grafico dei dati non elaborati mostra molte valutazioni degli utenti nella parte iniziale, seguite
            da una lunga coda. Il grafico logaritmico ha una distribuzione più uniforme.
Figura 6. Confronto tra una distribuzione non elaborata e il relativo log.

Come secondo esempio, le vendite di libri seguono una distribuzione a legge di potenza perché:

  • La maggior parte dei libri pubblicati vende un numero esiguo di copie, forse un centinaio o due.
  • Alcuni libri vendono un numero moderato di copie, nell'ordine delle migliaia.
  • Solo alcuni bestseller venderanno più di un milione di copie.

Supponiamo di addestrare un modello lineare per trovare la relazione tra, ad esempio, le copertine dei libri e le vendite di libri. L'addestramento di un modello lineare sui valori grezzi dovrebbe trovare qualcosa sulle copertine dei libri che vendono un milione di copie che sia 10.000 volte più potente delle copertine dei libri che vendono solo 100 copie. Tuttavia, la scalabilità logaritmica di tutte le cifre di vendita rende l'attività molto più fattibile. Ad esempio, il logaritmo di 100 è:

  ~4.6 = ln(100)

mentre il log di 1.000.000 è:

  ~13.8 = ln(1,000,000)

Pertanto, il log di 1.000.000 è solo circa tre volte più grande del log di 100. Probabilmente potresti immaginare che la copertina di un libro best seller sia circa tre volte più potente (in qualche modo) di quella di un libro che vende pochissimo.

Ritaglio

Il clipping è una tecnica per ridurre al minimo l'influenza degli outlier estremi. In breve, il taglio in genere limita (riduce) il valore dei valori anomali a un valore massimo specifico. Il ritaglio è un'idea strana, eppure può essere molto efficace.

Ad esempio, immagina un set di dati contenente una funzionalità denominata roomsPerPerson, che rappresenta il numero di stanze (stanze totali divise per numero di occupanti) per varie case. Il seguente grafico mostra che oltre il 99% dei valori delle funzionalità è conforme a una distribuzione normale (approssimativamente, una media di 1,8 e una deviazione standard di 0,7). Tuttavia, la funzionalità contiene alcuni valori anomali, alcuni dei quali estremi:

Immagine 7. Un grafico di roomsPerPerson in cui quasi tutti i valori
            sono raggruppati tra 0 e 4, ma c'è una coda mooooolto lunga
            che arriva fino a 17 camere per persona
Figura 7. Principalmente normale, ma non completamente normale.

Come puoi ridurre al minimo l'influenza di questi valori anomali estremi? Beh, l'istogramma non è una distribuzione uniforme, una distribuzione normale o una distribuzione a legge di potenza. Cosa succede se limiti o tagli semplicemente il valore massimo di roomsPerPerson a un valore arbitrario, ad esempio 4,0?

Un grafico di roomsPerPerson in cui tutti i valori sono compresi tra 0 e
            4,0. Il grafico ha una forma a campana, ma c'è un picco anomalo a 4,0
Figura 8. Troncamento dei valori delle funzionalità a 4.0.

Il troncamento del valore della funzionalità a 4.0 non significa che il modello ignora tutti i valori superiori a 4.0. Significa invece che tutti i valori superiori a 4,0 diventano 4,0. Questo spiega la particolare collina a 4,0. Nonostante questo problema, il set di funzionalità scalato è ora più utile dei dati originali.

Aspetta un secondo! Puoi davvero ridurre ogni valore anomalo a una soglia superiore arbitraria? Sì, durante l'addestramento di un modello.

Puoi anche tagliare i valori dopo aver applicato altre forme di normalizzazione. Ad esempio, supponiamo di utilizzare la scalabilità Z-score, ma alcuni outlier hanno valori assoluti molto superiori a 3. In questo caso, potresti:

  • I punteggi Z dei clip superiori a 3 diventano esattamente 3.
  • I punteggi Z dei clip inferiori a -3 diventano esattamente -3.

Il troncamento impedisce al modello di eseguire un'indicizzazione eccessiva dei dati non importanti. Tuttavia, alcuni valori anomali sono in realtà importanti, quindi taglia i valori con attenzione.

Riepilogo delle tecniche di normalizzazione

Tecnica di normalizzazioneFormulaQuando utilizzarle
Scala lineare $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Quando la funzionalità è distribuita in modo uniforme nell'intervallo. A forma piatta
Scalabilità del punteggio z $$ x' = \frac{x - μ}{σ}$$ Quando la funzionalità è distribuita normalmente (picco vicino alla media). A forma di campana
Scala logaritmica $$ x' = log(x)$$ Quando la distribuzione delle funzionalità è fortemente asimmetrica su almeno un lato della coda. Pesante a forma di coda
Ritaglio Se $x > max$, imposta $x' = max$
Se $x < min$, imposta $x' = min$
Quando la funzionalità contiene valori anomali estremi.

Esercizio: verifica le tue conoscenze

Quale tecnica sarebbe più adatta per normalizzare una funzionalità con la seguente distribuzione?

Un istogramma che mostra un cluster di dati con valori compresi tra 0 e
          200.000. Il numero di punti dati aumenta gradualmente per l&#39;intervallo
          da 0 a 100.000 e poi diminuisce gradualmente da 100.000 a
          200.000.

Scalabilità del punteggio z
I punti dati generalmente seguono una distribuzione normale, quindi la scalabilità del punteggio Z li forzerà nell'intervallo da -3 a +3.
Scala lineare
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.
Scala logaritmica
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.
Ritaglio
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.

Supponiamo che tu stia sviluppando un modello che preveda la produttività di un data center in base alla temperatura misurata al suo interno. Quasi tutti i valori di temperature nel set di dati rientrano tra 15 e 30 (Celsius), con le seguenti eccezioni:

  • Una o due volte l'anno, nei giorni estremamente caldi, vengono registrati alcuni valori compresi tra 31 e 45 in temperature.
  • Ogni 1000° punto in temperature è impostato su 1000 anziché sulla temperatura effettiva.

Quale sarebbe una tecnica di normalizzazione ragionevole per temperature?

Taglia i valori anomali compresi tra 31 e 45, ma elimina quelli con un valore di 1000

I valori di 1000 sono errori e devono essere eliminati anziché troncati.

I valori compresi tra 31 e 45 sono punti dati legittimi. Il troncamento sarebbe probabilmente una buona idea per questi valori, supponendo che il set di dati non contenga esempi sufficienti in questo intervallo di temperatura per addestrare il modello a fare buone previsioni. Tuttavia, durante l'inferenza, tieni presente che il modello troncato farà quindi la stessa previsione per una temperatura di 45 come per una temperatura di 35.

Taglia tutti gli outlier
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.
Elimina tutti gli outlier
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.
Elimina i valori anomali compresi tra 31 e 45, ma taglia i valori anomali con un valore di 1000.
Esamina le discussioni sulle tecniche di normalizzazione in questa pagina e riprova.