Corso

"In molte attività pratiche di data science, il set di dati conterrà variabili categoriche. Queste variabili sono in genere memorizzate come valori di testo". (Practical Business Python) Poiché il machine learning si basa su equazioni matematiche, mantenere le variabili categoriche così come sono può creare problemi. Molti algoritmi supportano valori categorici senza ulteriori manipolazioni, ma anche in quei casi resta aperta la discussione se convenga o meno codificare le variabili. Gli algoritmi che non supportano valori categorici, invece, richiedono l'uso di metodologie di codifica. Vediamo qui alcuni metodi.
Metodologie di codifica
Label encoding
Nel label encoding, associamo a ciascuna categoria un numero o un'etichetta. Le etichette scelte per le categorie non hanno alcuna relazione tra loro. Di conseguenza, categorie che presentano legami o somiglianze tra loro perdono tale informazione dopo la codifica.
Frequency encoding
È un modo per utilizzare la frequenza delle categorie come etichette. Nei casi in cui la frequenza sia in qualche modo correlata alla variabile target, aiuta il modello a comprendere e assegnare il peso in proporzione diretta o inversa, a seconda della natura dei dati.
One-hot encoding
In questo metodo, mappiamo ogni categoria su un vettore che contiene 1 e 0 a indicare la presenza o meno della caratteristica. Il numero di vettori dipende dalle categorie che vogliamo mantenere. Per caratteristiche ad alta cardinalità, questo metodo produce molte colonne che rallentano sensibilmente l'apprendimento. C'è spesso confusione tra one-hot encoding e dummy encoding e su quando usare l'uno o l'altro. Sono molto simili, tranne per il fatto che il one-hot encoding produce un numero di colonne pari al numero di categorie, mentre il dummy encoding ne produce uno in meno. In definitiva, questa scelta dovrebbe essere gestita dal modellatore nel processo di validazione.
Trappola delle variabili dummy:
Supponiamo di avere due categorie in una caratteristica categorica. Dopo aver applicato il one-hot encoding, ci saranno due colonne che rappresentano la caratteristica categorica, ma osservando da vicino un solo vettore è sufficiente a rappresentare entrambi i valori. Come una caratteristica categorica con due valori, diciamo “rosso” e “blu”. Dopo il one-hot encoding si formeranno due vettori, uno che indica “rosso” e l'altro “blu”, ma l'informazione può essere appresa usando un solo vettore, mentre l'altro risulterà costante. Possiamo quindi eliminare un vettore, riducendo la quantità di dati su cui gli algoritmi devono essere addestrati. Questo aiuta il modello a performare meglio e rende anche più semplice spiegare il funzionamento del modello. Nella pratica reale, dobbiamo spesso gestire molte caratteristiche categoriche, talvolta con una conoscenza preventiva dei loro risultati. Le pratiche di codifica ti permettono sì di gestire il processo di input, ma rendono anche il processo e l'apprendimento un compito piuttosto gravoso.
Target o Impact o Likelihood encoding
Il Target Encoding è simile al label encoding, tranne per il fatto che qui le etichette sono correlate direttamente al target. Per esempio, nel mean target encoding, per ogni categoria nella caratteristica, l'etichetta è decisa con il valore medio della variabile target sui dati di training. Questo metodo di codifica mette in evidenza la relazione tra categorie simili, ma le relazioni restano confinate entro le categorie e il target stesso. I vantaggi del mean target encoding sono che non influisce sul volume dei dati e favorisce un apprendimento più rapido; lo svantaggio è che è più difficile da validare. La regolarizzazione è necessaria nel processo di implementazione di questa metodologia di codifica. Visita il target encoder in python e in R.
Statistiche della codifica
La variabilità della codifica descrive la variazione della codifica all'interno di una singola categoria. Quando parliamo della variabilità nel one-hot encoding, questa dipende dal momento dell'implementazione, in cui si decide il numero di categorie da considerare che abbiano un impatto sufficiente sul target. Altre metodologie di codifica mostrano una variabilità significativa che viene individuata al momento della validazione.
Per calcolare la distinguibilità della codifica, contiamo le etichette delle categorie e poi calcoliamo la deviazione standard delle etichette. Questo mostra la distinguibilità delle categorie codificate, ovvero se sono distanti tra loro o raggruppate in un'area.
Tieni presente che, se scegli uno stile di codifica semplice nel processo di costruzione di un modello, il modello tende a essere distorto; per una migliore comprensione, visita questa discussione. E per modelli diversi, devi stimare la tua metodologia di codifica: per esempio, per la regressione puoi usare il mean target encoding. Se hai una classificazione, puoi optare per il relative frequency encoding.
Infine, vorrei condividere un trasformatore in stile scikit-learn che aiuta a codificare le variabili categoriche usando tecniche diverse.
category_encoders
Questa libreria scikit-learn fornisce le seguenti tecniche attualmente implementate:
- Ordinal
- One-Hot
- Binary
- Helmert Contrast
- Sum Contrast
- Polynomial Contrast
- Backward Difference Contrast
- Hashing
- BaseN
- LeaveOneOut
- Target Encoding
Supporta i dataframe di pandas come input e può trasformare i dati. Può anche integrarsi con le pipeline di sklearn; per i dettagli visita qui.
Se vuoi approfondire scikit-learn, segui il corso di DataCamp Supervised Learning with scikit-learn.

