Codifica etichetta o codifica one-hot: qual è la differenza?
Spesso nell’apprendimento automatico vogliamo convertire le variabili categoriali in un tipo di formato numerico che possa essere facilmente utilizzato dagli algoritmi.
Esistono due modi comuni per convertire le variabili categoriali in variabili numeriche:
1. Codifica etichetta: assegna a ciascun valore categoriale un valore intero in base all’ordine alfabetico.
2. One Hot Encoding: crea nuove variabili che assumono valori 0 e 1 per rappresentare i valori categorici originali.
Ad esempio, supponiamo di avere il seguente set di dati con due variabili e di voler convertire la variabile Team da variabile categoriale a variabile numerica:
Gli esempi seguenti mostrano come utilizzare sia la codifica dei tag che la codifica one-hot per eseguire questa operazione.
Esempio: utilizzo della codifica delle etichette
Utilizzando la codifica dell’etichetta , convertiremo ogni valore univoco nella colonna Team in un valore intero in base all’ordine alfabetico:
In questo esempio possiamo vedere:
- Ogni valore “A” è stato convertito in 0 .
- Ogni valore “B” è stato convertito in 1 .
- Ogni valore “C” è stato convertito in 2 .
Abbiamo convertito con successo la colonna Team da una variabile categoriale a una variabile numerica.
Esempio: utilizzo di una singola codifica one-hot
Utilizzando la codifica one-hot , convertiremo la colonna Team in nuove variabili contenenti solo valori 0 e 1:
Quando utilizziamo questo approccio, creiamo una nuova colonna per ciascun valore univoco nella variabile categoriale originale.
Ad esempio, la variabile categoriale Team aveva tre valori univoci , quindi abbiamo creato tre nuove colonne nel set di dati che contengono tutte valori 0 o 1.
Ecco come interpretare i valori nelle nuove colonne:
- Il valore della nuova colonna Team_A è 1 se il valore originale della colonna Team era A. Altrimenti, il valore è 0.
- Il valore della nuova colonna Team_B è 1 se il valore originale della colonna Team era B. Altrimenti, il valore è 0.
- Il valore della nuova colonna Team_C è 1 se il valore originale della colonna Team era C. Altrimenti, il valore è 0.
Abbiamo convertito con successo la colonna Team da una variabile categoriale a tre variabili numeriche, a volte chiamate variabili “fittizie”.
Nota : quando si utilizzano queste variabili “fittizie” in un modello di regressione o in un altro algoritmo di machine learning, fare attenzione a evitare la trappola delle variabili fittizie .
Quando utilizzare la codifica dei tag rispetto alla codifica one-hot
Nella maggior parte degli scenari, la codifica immediata è il modo preferito per convertire una variabile categoriale in una variabile numerica perché la codifica dell’etichetta fa sembrare che esista una classifica tra i valori.
Ad esempio, considera il caso in cui abbiamo utilizzato la codifica delle etichette per convertire team in una variabile numerica:
I dati codificati dall’etichetta fanno sembrare che la squadra C sia in qualche modo più grande o più alta delle squadre B e A poiché ha un valore numerico più alto.
Questo non è un problema se la variabile categoriale originale è in realtà una variabile ordinale con un ordinamento o una classifica naturale, ma in molti scenari non è così.
Tuttavia, uno degli svantaggi della codifica one-hot è che richiede la creazione di tante nuove variabili quanti sono i valori univoci nella variabile categoriale originale.
Ciò significa che se la tua variabile categoriale ha 100 valori univoci, dovrai creare 100 nuove variabili quando utilizzi la codifica one-hot.
A seconda delle dimensioni del set di dati e del tipo di variabili con cui stai lavorando, potresti preferire la codifica one-hot o la codifica delle etichette.
Risorse addizionali
I seguenti tutorial spiegano come eseguire nella pratica la codifica delle etichette :
I seguenti tutorial spiegano come eseguire nella pratica la codifica one-hot :