Dopo aver esaminato i tuoi dati attraverso tecniche statistiche e di visualizzazione, è necessario trasformare i dati in modi che permettano di addestrare ulteriormente il modello in modo efficace. L'obiettivo normalizzazione è trasformare le caratteristiche su una scala simile. Ad esempio, considera i seguenti due caratteristiche:
- La caratteristica
X
comprende l'intervallo da 154 a 24.917.482. - La funzionalità
Y
comprende l'intervallo da 5 a 22.
Queste due caratteristiche coprono intervalli molto diversi. La normalizzazione potrebbe
X
e Y
in modo che includano 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ò "rimbalzo" e convergenza lenta. Detto questo, gli ottimizzatori più avanzati Adagrado e Adamo si proteggono da questo problema modificare il tasso di apprendimento effettivo nel tempo.
- Aiuta i modelli a dedurre previsioni migliori. Quando diverse caratteristiche hanno intervalli diversi, modello potrebbe fare previsioni un po' meno utili.
- Aiuta a evitare il "trap NaN" quando i valori delle caratteristiche sono molto elevati.
NaN è l'abbreviazione di
non è un numero. Quando un valore in un modello supera il valore
limite di precisione con rappresentazione in virgola mobile, il sistema imposta il valore su
NaN
di un numero. Quando un numero nel modello diventa NaN, gli altri numeri in alla fine il modello diventerà anche NaN. - Aiuta il modello ad apprendere i pesi appropriati per ogni caratteristica. Senza la scalabilità delle caratteristiche, il modello presta troppa attenzione alle caratteristiche con intervalli ampi e non c'è abbastanza attenzione alle caratteristiche con intervalli ristretti.
Consigliamo di normalizzare le caratteristiche numeriche coprendo in modo distinto
intervalli diversi (ad es. 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 della caratteristica
A
è -0,5, mentre il più alto è +0,5. - Il valore più basso della caratteristica
B
è -5,0, mentre il massimo è +5,0.
Le caratteristiche A
e B
hanno intervalli relativamente ristretti. Tuttavia, le funzionalità di B
l'intervallo è 10 volte più ampio dell'intervallo della caratteristica A
. Pertanto:
- All'inizio dell'addestramento, il modello presuppone che la caratteristica
A
sia dieci volte più "importante" rispetto alla funzionalitàB
. - L'addestramento richiederà più tempo del previsto.
- Il modello risultante potrebbe non essere ottimale.
Il danno complessivo dovuto alla mancata normalizzazione sarà relativamente ridotto. ma consigliamo comunque di normalizzare le caratteristiche A e B sulla 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 caratteristica "C è -1, mentre il più alto è +1.
- Il valore più basso della caratteristica
D
è +5000, mentre il massimo è +1.000.000.000.
Se non normalizzi le caratteristiche C
e D
, il modello probabilmente
non ottimale. Inoltre, l'addestramento richiederà
convergono o addirittura non riescono a convergere del tutto.
Questa sezione illustra tre comuni metodi di normalizzazione:
- scalabilità lineare
- Scalabilità punteggio z
- scalabilità dei log
Questa sezione tratta inoltre ritaglio. Sebbene non sia un vero di normalizzazione, il clipping impedisce le caratteristiche numeriche indisciplinate che producono modelli migliori.
Scala lineare
Scalabilità lineare (più comunemente abbreviata in scalabilità) significa convertire i valori in virgola mobile da il loro intervallo naturale in un intervallo standard, di solito da 0 a 1 o Da -1 a +1.
La scalabilità lineare è una buona scelta quando vengono soddisfatte tutte le seguenti condizioni:
- I limiti inferiore e superiore dei dati non cambiano molto nel tempo.
- La caratteristica contiene pochi o nessun outlier e questi valori non sono estrema.
- La caratteristica è distribuita approssimativamente uniformemente nel suo intervallo. In altre parole, un istogramma mostrerà più o meno anche le barre per la maggior parte delle fasce d'età.
Supponiamo che l'utente age
sia una caratteristica. La scalabilità lineare è una buona normalizzazione
tecnica per age
perché:
- I limiti inferiore e superiore approssimati sono compresi tra 0 e 100.
age
contiene una percentuale relativamente piccola di outlier. Solo lo 0,3% circa la popolazione è superiore a 100 persone.- Sebbene alcune fasce d'età siano rappresentate meglio di altre, un grande pubblico deve contenere esempi sufficienti per tutte le età.
Verifica le tue conoscenze
Supponiamo che il modello abbia una caratteristica denominatanet_worth
che contiene la rete
di persone diverse. La scalabilità lineare sarebbe una buona normalizzazione
per net_worth
? Qual è il motivo?
Scalabilità punteggio z
Il punteggio z è il numero di deviazioni standard che un valore proviene dalla media. Ad esempio, un valore pari a 2 deviazioni standard maggiori della media ha un punteggio z di +2,0. Un valore pari a 1,5 deviazioni standard inferiore a la media ha un punteggio Z di -1,5.
Rappresentare una caratteristica con la scalabilità del punteggio z significa memorizzare il relativo 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 dalla scala del punteggio z.
![Figura 4. Due istogrammi: entrambi mostrano distribuzioni normali con
la stessa distribuzione. Il primo istogramma, che contiene i dati non elaborati
hanno una media di 200 e una deviazione standard di 30. Il secondo
istogramma, che contiene una versione Z-Score della prima
di distribuzione, ha una media di 0 e una deviazione standard di 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=7&hl=it)
Anche la scalabilità del punteggio z è una buona scelta per dati come quelli mostrati nella figura seguente, che ha solo una distribuzione vagamente normale.
![Figura 5. Due istogrammi di forma identica, ognuno dei quali mostra una
sale verso un altopiano e poi una discesa relativamente veloce seguita da
graduale decadimento. Un istogramma illustra
la distribuzione dei dati non elaborati; l'altro istogramma illustra
distribuzione dei dati non elaborati, quando normalizzati mediante scaletta 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 in scala dello Z-Score va da -1 a circa +4,8](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=7&hl=it)
Lo z-score è una buona scelta quando i dati seguono una distribuzione normale o una distribuzione alquanto simile a una normale distribuzione.
Tieni presente che alcune distribuzioni potrebbero essere normali nella maggior parte dei loro
ma con al contempo outlier estreme. Ad esempio, quasi tutti i
i punti di una caratteristica net_worth
potrebbero adattarsi perfettamente a tre deviazioni standard,
ma alcuni esempi di questa caratteristica
potrebbero essere centinaia di deviazioni standard
lontano dalla media. In queste situazioni, è possibile combinare la scalabilità del punteggio Z con
un'altra forma di normalizzazione (di solito taglio) per gestire questa situazione.
Allenamento: verifica le tue conoscenze
Supponiamo che il modello venga addestrato su una caratteristica denominataheight
che contiene l'adulto
alte dieci milioni di donne. La scalabilità del punteggio z sarebbe una buona normalizzazione
per height
? Qual è il motivo?
Scala logaritmica
La scalabilità dei log calcola il logaritmo del valore non elaborato. In teoria, il il logaritmo può essere qualsiasi base; In pratica, la scalabilità dei log di solito calcola il logaritmo naturale (ln).
La scalabilità dei log è utile quando i dati sono conformi a una distribuzione della legge dell'alimentazione. A caso, una distribuzione legge dell'energia si presenta così:
- Valori bassi di
X
hanno valori molto alti diY
. - Con l'aumento dei valori di
X
, i valori diY
diminuiscono rapidamente. Di conseguenza, valori elevati diX
hanno valori molto bassi diY
.
Le classificazioni dei film sono un buon esempio di distribuzione della legge elettrica. Nel seguente figura, nota:
- Alcuni film hanno molte valutazioni degli utenti. I valori minimi di
X
sono associati valori diY
.) - La maggior parte dei film ha pochissime valutazioni degli utenti. I valori elevati di
X
sono bassi valori diY
.)
La scalabilità dei log cambia la distribuzione, aiutandoti ad addestrare un modello che per fare previsioni migliori.
Come secondo esempio, la vendita di libri è conforme a una distribuzione in base alla legge elettrica perché:
- La maggior parte dei libri pubblicati ne vende un numero esiguo, forse una o duecento.
- Alcuni libri ne vendono un numero moderato, nell'ordine delle migliaia.
- Solo pochi bestseller vendono più di un milione di copie.
Supponiamo che tu stia addestrando un modello lineare per trovare la relazione come le copertine dei libri e le vendite dei libri. L'addestramento di un modello lineare su valori non elaborati devono trovare qualcosa sulle copertine dei libri che ne vendono un milione di copie 10.000 in più delle copertine di libri che ne vendono solo 100. Tuttavia, la scalabilità di tutti i dati di vendita rende l'attività molto più fattibile. Ad esempio, il log di 100 è:
~4.6 = ln(100)
mentre il logaritmo di 1.000.000 è:
~13.8 = ln(1,000,000)
Quindi, il logaritmo di 1.000.000 è solo circa tre volte più grande del logaritmo di 100. Probabilmente potresti immaginare che la copertina di un libro di bestseller sia circa tre volte più potente (in qualche modo) di una copertina di un libro minuscolo.
Sutura
Il taglio è una tecnica per ridurre al minimo l'influenza di outlier estreme. In breve, l'applicazione di tagli di solito (riduce) il valore dei valori anomali a un valore massimo specifico. Il ritaglio è una un'idea strana, eppure, può essere molto efficace.
Ad esempio, immagina un set di dati contenente una caratteristica denominata roomsPerPerson
,
che rappresenta il numero di camere (le stanze totali divise
per numero di occupanti) per le varie abitazioni. La trama seguente mostra che oltre
Il 99% dei valori delle caratteristiche è conforme a una normale distribuzione (approssimativamente, una media di
1,8 e una deviazione standard di 0,7). Tuttavia, la caratteristica contiene
alcuni outlier, alcuni dei quali estremi:
![Immagine 7. Un grafico di stanzePerPersona in cui quasi tutti i valori
sono raggruppati tra 0 e 4, ma c'è una coda lunga
fino a 17 camere a persona](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=7&hl=it)
Come si può ridurre al minimo l'influenza di questi outlier estremi? Beh,
l'istogramma non è una distribuzione uniforme, una distribuzione normale o una legge di potenza
distribuzione dei contenuti. E se imposti semplicemente il limite o il clip sul valore massimo
roomsPerPerson
a un valore arbitrario, ad esempio 4,0?
![Un grafico di stanzePerPersona in cui tutti i valori sono compresi tra 0 e
4,0. La trama è a forma di campana, ma c'è una collina anomala a 4,0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=7&hl=it)
Ritagliare il valore della caratteristica a 4,0 non significa che il modello ignora tutti superiori a 4,0. Piuttosto, significa che tutti i valori maggiori 4.0 ora diventa 4.0. Questo spiega la peculiare collina a 4.0. Nonostante l'insieme di caratteristiche in scala è ora più utile dei dati originali.
Aspetta un attimo! Puoi davvero ridurre ogni valore outlier a un valore arbitrario superiore soglia? Sì, per l'addestramento di un modello.
Puoi anche tagliare i valori dopo aver applicato altre forme di normalizzazione. Ad esempio, supponi di utilizzare la scalabilità del punteggio Z, ma alcuni outlier hanno valori assoluti di gran lunga superiori a 3. In questo caso, potresti:
- Ritaglia i punteggi Z maggiori di 3 per ottenere esattamente 3.
- Ritaglia i punteggi Z inferiori a -3 per ottenere esattamente -3.
Il ritaglio impedisce al modello di eseguire l'indicizzazione in eccesso 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 normalizzazione | Formula | Quando utilizzarle |
---|---|---|
Scala lineare | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Quando la caratteristica è distribuita uniformemente tra un intervallo fisso. |
Scalabilità punteggio z | $$ x' = \frac{x - μ}{σ}$$ | Quando la distribuzione delle caratteristiche non contiene outlier estremi. |
Scala logaritmica | $$ x' = log(x)$$ | Quando la funzionalità è conforme alla legge sulla potenza. |
Sutura | Se x $> max$, imposta $x" = max$ Se $x < min$, imposta $x" = min$ |
Quando la caratteristica contiene anomalie estreme. |
Esercizio: verifica le tue conoscenze
Supponiamo che tu stia sviluppando un modello che prevede la
la produttività in base alla temperatura misurata all'interno del data center.
Quasi tutti i valori temperature
nel tuo set di dati rientrano
tra 15 e 30 (Celsius), con le seguenti eccezioni:
- Una o due volte l'anno, nei giorni estremamente caldi, alcuni valori tra
31 e 45 sono registrati in
temperature
. - Ogni 1000° punto in
temperature
è impostato su 1000 anziché la temperatura effettiva.
Quale sarebbe una ragionevole tecnica di normalizzazione per
temperature
?
Il valore 1000 è un errore e deve essere eliminato anziché tagliato.
I valori compresi tra 31 e 45 sono punti dati legittimi. Il ritaglio potrebbe essere una buona idea per questi valori, supponendo che set di dati non contiene abbastanza esempi in questo intervallo di temperature per addestrare il modello per fare previsioni efficaci. Tuttavia, durante l'inferenza, puoi notare che il modello troncato eseguirebbe quindi la stessa previsione una temperatura di 45 e una temperatura di 35.