Questo è risaputo molti i modelli di machine learning non possono elaborare le funzionalità categoriche in modo nativo. Sebbene esistano alcune eccezioni, di solito spetta al professionista decidere una rappresentazione numerica di ciascuna caratteristica categoriale. Ci sono molti modi per raggiungere questo obiettivo, ma una strategia raramente consigliata è codifica dell’etichetta.
La codifica dell’etichetta sostituisce ciascun valore categoriale con un numero arbitrario. Ad esempio, se abbiamo una funzione contenente lettere dell’alfabeto, la codifica dell’etichetta potrebbe assegnare alla lettera “A” un valore pari a 0, alla lettera “B” un valore pari a 1 e continuare questo schema fino a “Z” a cui viene assegnato 25 Dopo questo processo, tecnicamente parlando, qualsiasi algoritmo dovrebbe essere in grado di gestire la funzionalità codificata.
Ma qual è il problema con questo? I sofisticati modelli di machine learning non dovrebbero essere in grado di gestire questo tipo di codifica? Perché alle biblioteche piace Catboost E altre strategie di codifica esistono per gestire caratteristiche categoriche ad alta cardinalità?
Questo articolo esplorerà due esempi dimostrativi Perché la codifica delle etichette può essere problematica per i modelli di machine learning. Questi esempi ci aiuteranno a capire perché ce ne sono così tanti alternative alla codifica delle etichette e approfondirà la nostra comprensione della relazione tra la complessità dei dati e le prestazioni del modello.
Uno dei modi migliori per acquisire intuito per un concetto di machine learning è capire come funziona in uno spazio a bassa dimensionalità e provare a estrapolare il risultato a dimensioni più elevate. Questa estrapolazione mentale non sempre è in linea con la realtà, ma per i nostri scopi tutto ciò di cui abbiamo bisogno è una singola caratteristica per capire perché abbiamo bisogno di migliori strategie di codifica categorica.
Una funzionalità con 25 categorie
Iniziamo esaminando un set di dati di base di un giocattolo con una caratteristica e un obiettivo continuo. Ecco le dipendenze di cui abbiamo bisogno:
import numpy as np
import polars as pl
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from…
Fonte: towardsdatascience.com