Dati numerici: normalizzazione

Dopo aver esaminato i dati tramite tecniche statistiche e di visualizzazione, devi trasformarli in modo che il tuo modello possa essere addestrato in modo più efficace. Lo scopo della normalizzazione è trasformare le funzionalità in modo che siano su una scala simile. Ad esempio, considera le seguenti due funzionalità:

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

Queste due caratteristiche 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:

  • Consente ai modelli di 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 caratteristiche diverse hanno intervalli diversi, il modello risultante potrebbe fare previsioni meno utili.
  • Aiuta a evitare la "trappola dei valori NaN" quando i valori degli elementi sono molto elevati. NaN è l'abbreviazione di non un numero. Quando un valore in un modello supera il limite di precisione a 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 diventano NaN.
  • Aiuta il modello a apprendere i pesi appropriati per ogni caratteristica. Senza la scalabilità delle caratteristiche, il modello presta troppa attenzione alle caratteristiche con intervalli ampi e non abbastanza alle caratteristiche con intervalli ristretti.

Consigliamo di normalizzare le caratteristiche numeriche che coprono intervalli distintamente diversi (ad esempio età e reddito). Consigliamo inoltre di normalizzare una singola caratteristica numerica che copre un ampio intervallo, come city population.

Considera le seguenti due funzionalità:

  • Il valore più basso dell'attributo A è -0,5 e il valore più alto è +0,5.
  • Il valore più basso della caratteristica B è -5,0, mentre il massimo è +5,0.

La funzionalità A e la funzionalità B hanno intervalli relativamente stretti. 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 previsto.
  • Il modello risultante potrebbe non essere ottimale.

I danni complessivi dovuti alla mancata normalizzazione saranno relativamente ridotti. Tuttavia, consigliamo comunque di normalizzare la funzionalità A e la funzionalità B alla stessa scala, ad esempio da -1,0 a +1,0.

Consideriamo ora due caratteristiche con una maggiore disparità di intervalli:

  • Il valore più basso della funzionalità C è -1 e il valore più alto è +1.
  • Il valore più basso della caratteristica D è +5000, mentre il massimo è +1.000.000.000.

Se non normalizzi l'attributo C e l'attributo D, il tuo modello sarà probabilmente suboptimale. Inoltre, l'addestramento impiegherà molto più tempo per convergere o potrebbe non convergere del tutto.

Questa sezione illustra tre metodi di normalizzazione molto utilizzati:

  • scalatura lineare
  • Scalatura del punteggio z
  • scalatura dei log

Questa sezione tratta inoltre del taglio. Sebbene non sia una tecnica di normalizzazione vera e propria, il clipping consente di domare le caratteristiche numeriche indisciplinate in intervalli che producono modelli migliori.

Scala lineare

La scalabilità lineare (più comunemente abbreviata in scalabilità) prevede la conversione dei valori in virgola mobile del loro intervallo naturale in un intervallo standard, di solito da 0 a 1 o da -1 a +1.

La scalabilità lineare è una buona scelta se si verificano tutte le seguenti condizioni:

  • I limiti inferiori e superiori dei dati non cambiano molto nel tempo.
  • L'elemento contiene pochi o nessun valore anomalo e questi valori non sono estremi.
  • La caratteristica è distribuita approssimativamente uniformemente nel suo intervallo. In altre parole, un istogramma mostrerebbe barre approssimativamente uniformi per la maggior parte dei valori.

Supponiamo che la persona age sia una funzionalità. La scalatura lineare è una buona tecnica di normalizzazione per age perché:

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

Allenamento: verifica le tue conoscenze

Supponiamo che il tuo modello abbia una caratteristica denominata net_worth che include il patrimonio di persone diverse. La scala lineare sarebbe una buona tecnica di normalizzazione per net_worth? Qual è il motivo?

Scalatura del punteggio z

Un punteggio Z è il numero di deviazioni standard di un valore rispetto alla media. Ad esempio, un valore che è 2 deviazioni standard maggiori della media ha un valore Z pari a +2,0. Un valore inferiore di 1,5 deviazioni standard rispetto alla media ha un valore Z pari a -1,5.

Rappresentare una caratteristica con la scalabilità del punteggio z significa memorizzare il suo punteggio z 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 scalatura 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 del punteggio Z della prima
           distribuzione, ha una media pari a 0 e una deviazione standard pari a 1.
Figura 4. Dati non elaborati (a sinistra) rispetto al valore Z (a destra) per una distribuzione normale.

La scalatura del punteggio Z è una buona scelta anche per dati come quelli mostrati nella figura seguente, che hanno solo una distribuzione vagamente normale.

Figura 5. Due istogrammi di forma identica, ciascuno che mostra un brusco aumento fino a un plateau, seguito da una discesa relativamente rapida seguita da un graduale calo. Un istogramma illustra la distribuzione dei dati non elaborati, mentre l'altro illustra la distribuzione dei dati non elaborati quando sono normalizzati mediante la scalatura del punteggio Z.
            I valori sull'asse X delle due tabelle di distribuzione sono molto diversi.
            L'istogramma dei dati non elaborati copre il dominio da 0 a 29.000,mentre
            l'istogramma con scala dello z-score va da -1 a circa +4, 8
Figura 5. Dati non elaborati (a sinistra) rispetto alla scalatura del punteggio Z (a destra) per una distribuzione normale non classica.

Il valore z è una buona scelta quando i dati seguono una distribuzione normale o una distribuzione simile a una normale.

Tieni presente che alcune distribuzioni potrebbero essere normali nella maggior parte del loro intervallo, ma contenere comunque valori anomali estremi. Ad esempio, quasi tutti i punti di una caratteristica net_worth potrebbero rientrare perfettamente in tre deviazioni standard, ma alcuni esempi di questa caratteristica potrebbero essere centinaia di deviazioni standard lontano dalla media. In queste situazioni, per gestire questa situazione, puoi combinare la scalabilità del punteggio Z con un'altra forma di normalizzazione (di solito il ritaglio).

Esercizio: verifica la tua comprensione

Supponiamo che il modello venga addestrato su una caratteristica denominata height che contiene l'altezza degli adulti di dieci milioni di donne. La scalatura del punteggio Z sarebbe una buona tecnica di normalizzazione per height? Qual è il motivo?

Scala logaritmica

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

La scalatura logaritmica è utile quando i dati sono conformi a una distribuzione di legge di potenza. A caso, una distribuzione legge dell'energia si presenta così:

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

Le valutazioni dei film sono un buon esempio di distribuzione secondo la legge di potenza. Nella seguente figura, nota quanto segue:

  • Alcuni film hanno ricevuto 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 (Y).

La scalabilità dei log modifica la distribuzione, aiutandoti ad addestrare un modello che fa previsioni migliori.

Immagine 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 coda lunga. Il grafico dei log ha una distribuzione più uniforme.
Figura 6. Confronto di una distribuzione non elaborata con il relativo log.

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

  • La maggior parte dei libri pubblicati ne vende un numero esiguo, forse una o duecento.
  • Alcuni libri vendono un numero moderato di copie, in migliaia.
  • Solo alcuni bestseller vendono più di un milione di copie.

Supponiamo che tu stia addestrando un modello lineare per trovare la relazione tra, ad esempio, le copertine dei libri e le vendite dei libri. Un modello lineare addestrato su valori non elaborati dovrebbe trovare qualcosa sulle copertine dei libri che vendono un milione di copie che sia 10.000 volte più efficace delle copertine dei libri che ne vendono solo 100. Tuttavia, la scalabilità dei dati di log di tutte le cifre di vendita rende l'attività molto più fattibile. Ad esempio, il logaritmo di 100 è:

  ~4.6 = ln(100)

mentre il logaritmo di 1.000.000 è:

  ~13.8 = ln(1,000,000)

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

Sutura

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

Ad esempio, immagina un set di dati contenente una funzionalità denominata roomsPerPerson, che rappresenta il numero di camere (le stanze totali divise per il numero degli occupanti) per le 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 estremi:

Immagine 7. Un grafico di roomsPerPerson in cui quasi tutti i valori
            sono raggruppati tra 0 e 4, ma c'è una coda molto 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 di leggi di potenza. Cosa succede se semplicemente imposti un limite o taglia 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 è a forma di campana, ma c'è un picco anomalo a 4,0
Figura 8. Taglio dei valori delle funzionalità a 4,0.

Il taglio del valore dell'attributo a 4,0 non significa che il modello ignori tutti i valori superiori a 4,0. Piuttosto, tutti i valori superiori a 4,0 ora diventano 4,0. Questo spiega la strana curva a 4,0. Nonostante questo, l'insieme di funzionalità scalate è ora più utile dei dati originali.

Aspetta un attimo. È davvero possibile ridurre ogni valore outlier 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 scalatura dello z-score, ma alcuni valori anomali hanno valori assoluti molto superiori a 3. In questo caso, puoi:

  • Taglia i valori Z maggiori di 3 in modo che diventino esattamente 3.
  • Taglia i valori Z inferiori a -3 in modo che diventino esattamente -3.

Il clipping impedisce al modello di eseguire un overindexing su dati non importanti. Tuttavia, alcuni valori anomali sono in realtà importanti, quindi ritaglia 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 su un intervallo fisso.
Scalabilità punteggio z $$ x' = \frac{x - μ}{σ}$$ Quando la distribuzione delle funzionalità non contiene valori anomali estremi.
Scala logaritmica $$ x' = log(x)$$ Quando la funzionalità è conforme alla legge di potenza.
Clip Se $x > max$, imposta $x' = max$
Se $x < min$, imposta $x' = min$
Quando la caratteristica contiene anomalie estreme.

Esercizio: verifica le tue conoscenze

Quale tecnica sarebbe la più adatta per normalizzare un attributo 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.

Scalatura del punteggio z
I punti dati sono generalmente conformi a una distribuzione normale, quindi la scalabilità del punteggio Z li costringerà a rientrare 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.
Clip
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 temperature nel set di dati rientrano tra 15 e 30 °C, con le seguenti eccezioni:

  • Una o due volte all'anno, in giornate estremamente calde, vengono registrati alcuni valori tra 31 e 45 a temperature.
  • Ogni millesimo punto in temperature è impostato su 1000 anziché sulla temperatura effettiva.

Quale sarebbe una tecnica di normalizzazione ragionevole per temperature?

Ritaglia i valori outlier compresi tra 31 e 45, ma elimina quelli con un valore pari a 1000

Il valore 1000 è un errore e deve essere eliminato anziché troncato.

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

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