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 caratteristicaA
. - 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.
Fai clic sull'icona per visualizzare i calcoli.
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 denominatonet_worth
che contenga il patrimonio netto di persone diverse. La scala lineare sarebbe una buona tecnica di normalizzazione per net_worth
? Qual è il motivo?
Fai clic sull'icona per visualizzare la risposta.
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.

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

Fai clic sull'icona per visualizzare i calcoli.
Fai clic sull'icona per scoprire di più sulle distribuzioni normali.
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à denominataheight
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?
Fai clic sull'icona per visualizzare la risposta.
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).
Fai clic sull'icona per visualizzare i calcoli.
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 diY
. - All'aumentare dei valori di
X
, i valori diY
diminuiscono rapidamente. Di conseguenza, i valori elevati diX
hanno valori molto bassi diY
.
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 diY
. - La maggior parte dei film ha pochissime valutazioni degli utenti. I valori elevati di
X
hanno valori bassi diY
.
La scalatura logaritmica modifica la distribuzione, il che consente di addestrare un modello che effettuerà previsioni migliori.
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:

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?

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 normalizzazione | Formula | Quando utilizzarle |
---|---|---|
Scala lineare | Quando la funzionalità è distribuita in modo uniforme su un intervallo fisso. | |
Scalatura del punteggio z | Quando la distribuzione delle funzionalità non contiene valori anomali estremi. | |
Scala logaritmica | Quando la funzionalità è conforme alla legge di potenza. | |
Clip | Se , imposta Se , imposta |
Quando la funzionalità contiene valori anomali estremi. |
Esercizio: verifica le tue conoscenze
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
?