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 funzionalità X copre l'intervallo da 154 a 24.917.482.
  • La funzionalità Y va 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 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 not a number. 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 funzionalità, il modello presta troppa attenzione alle funzionalità con intervalli ampi e non abbastanza alle funzionalità con intervalli ristretti.

Consigliamo di normalizzare le caratteristiche numeriche che coprono intervalli distintamente diversi (ad esempio età e reddito). Ti consigliamo inoltre di normalizzare una singola funzionalità numerica che copra un'ampia gamma, 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 minimo dell'elemento B è -5,0 e il valore 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.

Ora prendi in considerazione due elementi con una disparità maggiore 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 l'attributo C e l'attributo D, il tuo modello sarà probabilmente suboptimale. Inoltre, l'addestramento richiederà 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à) consiste nella conversione dei valori in virgola mobile dal loro intervallo naturale in un intervallo standard, in genere da 0 a 1 o da -1 a +1.

Utilizza la seguente formula per eseguire la scalatura all'intervallo standard da 0 a 1, inclusi:

x=(xxmin)/(xmaxxmin)

dove:

  • x è il valore scalato.
  • x è il valore originale.
  • xmin è il valore più basso nel set di dati di questa funzionalità.
  • xmax è il valore più alto nel set di dati di questa funzionalità.

Ad esempio, prendi in considerazione una funzionalità denominata quantity il cui intervallo naturale va da 100 a 900. Supponiamo che il valore naturale di quantity in un particolar esempio sia 300. Pertanto, puoi calcolare il valore normalizzato di 300 come segue:

  • x = 300
  • xmin = 100
  • xmax = 900
x' = (300 - 100) / (900 - 100)
x' = 200 / 800
x' = 0.25

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.
  • La funzionalità contiene pochi o nessun valore anomalo e questi valori non sono estremi.
  • La funzionalità è distribuita in modo approssimativamente uniforme nell'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 inferiori e superiori approssimativi sono da 0 a 100.
  • age contiene una percentuale relativamente piccola di valori anomali. 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à.

Esercizio: verifica di aver compreso

Supponiamo che il tuo modello abbia un attributo denominato net_worth che contenga il patrimonio netto di persone diverse. La scala lineare sarebbe una buona tecnica di normalizzazione per net_worth? Qual è il motivo?

Risposta: la scalabilità lineare non è una buona scelta per la normalizzazionenet_worth. Questa funzionalità contiene molti valori anomali e i valori non sono distribuiti uniformemente nell'intervallo principale. La maggior parte delle persone rientra in una fascia molto ristretta dell'intervallo complessivo.


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 che è 1,5 deviazioni standard inferiori alla media ha un valore Z di -1,5.

Rappresentare una caratteristica con la scalatura del punteggio z significa memorizzare il punteggio z della 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 per la scalatura del punteggio Z.
Figura 4. Due istogrammi: entrambi mostrano distribuzioni normali con
           la stessa distribuzione. Il primo istogramma, che contiene i 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 decadimento. 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 l'intervallo da 0 a 29.000,mentre
            l'istogramma con punteggio Z pesato 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.

Utilizza la seguente formula per normalizzare un valore, x, al suo valore Z:

x=(xμ)/σ

dove:

  • x è il punteggio z.
  • x è il valore non elaborato, ovvero il valore che stai normalizzando.
  • μ è la media.
  • σ è la deviazione standard.

Ad esempio, supponiamo che:

  • media = 100
  • deviazione standard = 20
  • valore originale = 130

Pertanto:

  Z-score = (130 - 100) / 20
  Z-score = 30 / 20
  Z-score = +1.5

In una distribuzione normale classica:

  • Almeno il 68,27% dei dati ha un valore Z compreso tra -1,0 e +1,0.
  • Almeno il 95,45% dei dati ha un valore Z compreso tra -2,0 e +2,0.
  • Almeno il 99,73% dei dati ha un valore Z compreso tra -3,0 e +3,0.
  • Almeno il 99,994% dei dati ha un valore Z compreso tra -4,0 e +4,0.
Quindi, i punti dati con un valore Z inferiore a -4,0 o superiore a +4,0 sono rari, ma sono davvero valori anomali? Poiché gli outlier sono un concetto senza una definizione rigorosa, nessuno può dirlo con certezza. Tieni presente che un set di dati con un numero sufficientemente elevato di esempi conterrà quasi certamente almeno alcuni di questi esempi "rari". Ad esempio, un attributo con un miliardo di esempi conformi a una distribuzione normale classica potrebbe avere fino a 60.000 esempi con un punteggio esterno all'intervallo compreso tra -4,0 e +4,0.

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 outlier 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 a centinaia di deviazioni standard dalla media. In queste situazioni, puoi combinare la scalatura del punteggio Z con un'altra forma di normalizzazione (di solito il clipping) per gestire la situazione.

Esercizio: verifica di aver compreso

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

Risposta: la scalatura del punteggio Z sarebbe una buona tecnica di normalizzazione per height perché questa funzionalità è conforme a una distribuzione normale. Dieci milioni di esempi implicano molti valori anomali, probabilmente sufficienti per consentire al modello di apprendere schemi con valori Z molto alti o molto bassi.


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

Utilizza la seguente formula per normalizzare un valore, x, al suo log:

x=ln(x)

dove:

  • x è il logaritmo naturale di x.
  • valore originale = 54,598

Pertanto, il logaritmo del valore originale è circa 4,0:

  4.0 = ln(54.598)

La scalatura logaritmica è utile quando i dati sono conformi a una distribuzione di legge di potenza. In termini informali, una distribuzione di legge di potenza ha il seguente aspetto:

  • 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, i 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 di Y.

La scalatura logaritmica modifica la distribuzione, il che consente di addestrare un modello che effettuerà 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 vende un numero esiguo di copie, 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. L'addestramento di un modello lineare sui 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 vendono solo 100 copie. Tuttavia, la scalabilità dei dati 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.

Clip

Il taglio è una tecnica per minimizzare l'influenza degli 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 un attributo denominato roomsPerPerson, che rappresenta il numero di camere (camere totali divise per il numero di persone) 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 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? L'istogramma non è una distribuzione uniforme, una distribuzione normale o una distribuzione di legge di potenza. Cosa succede se semplicemente imposti un limite o taglia il valore massimo di roomsPerPerson su 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. Significa piuttosto che 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. Puoi davvero 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 effettivamente importanti, quindi taglia i valori con attenzione.

Riepilogo delle tecniche di normalizzazione

Tecnica di normalizzazioneFormulaQuando utilizzarle
Scala lineare
x=xxminxmaxxmin
Quando la funzionalità è distribuita in modo uniforme su un intervallo fisso.
Scalatura del punteggio z
x=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 funzionalità contiene valori anomali estremi.

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 nell&#39;intervallo da 0 a
          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.

Scala lineare
Clip
Scalatura del punteggio z
Scala logaritmica

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, in temperature vengono registrati alcuni valori tra 31 e 45.
  • Ogni millesimo punto in temperature è impostato su 1000 anziché sulla temperatura effettiva.

Quale sarebbe una tecnica di normalizzazione ragionevole per temperature?

Elimina tutti gli outlier
Taglia i valori outlier compresi tra 31 e 45, ma elimina quelli con un valore pari a 1000
Taglia tutti gli outlier
Elimina i valori outlier compresi tra 31 e 45, ma taglia gli outlier con un valore di 1000.