Feature Engineering
La creazione di caratteristiche trasforma i dati grezzi in input che un modello può apprendere facilmente, sfruttando le conoscenze del dominio. Tecniche fondamentali, insidie della fuga di dati, applicazioni e codice.
L'ingegneria delle caratteristiche è il processo di creazione, trasformazione e selezione delle variabili di input, o caratteristiche, da cui apprende un modello di apprendimento automatico, basandosi sulla conoscenza del dominio e dei dati. Un timestamp grezzo si trasforma nell'ora del giorno e nel giorno della settimana, un elenco di transazioni con carta si traduce nella spesa di un cliente negli ultimi 30 giorni e dalla distanza e dalla durata di un viaggio si ricava la velocità. Le caratteristiche ben scelte consentono a un modello semplice di cogliere schemi che altrimenti non individuerebbe e sono particolarmente importanti per i dati tabellari e le serie temporali, in cui un modello può usare solo le colonne che gli vengono fornite. I modelli di apprendimento profondo apprendono autonomamente le proprie caratteristiche da immagini, audio e testo grezzi; ciò ha spostato in questi ambiti l'ingegneria delle caratteristiche verso la preparazione dei dati e la creazione di caratteristiche a partire dagli output del modello.
Tecniche comuni#
- Scalatura e normalizzazione: Standardizzare le caratteristiche a media zero e varianza unitaria impedisce che quelle espresse in unità grandi prevalgano nei modelli basati sulle distanze e nell'addestramento basato sui gradienti; una trasformazione logaritmica comprime i valori asimmetrici, come redditi o prezzi.
- Codifica delle variabili categoriche: La codifica one-hot trasforma una categoria, come un colore, in colonne binarie; la codifica target sostituisce ogni categoria con il target medio di quella categoria, calcolato su fold separati per evitare che la codifica riveli l'etichetta della singola riga.
- Rapporti e interazioni: Il rapporto debito/reddito, il prezzo per metro quadrato e l'indice di massa corporea combinano due valori grezzi nella quantità che determina effettivamente il risultato.
- Caratteristiche di data e ora: L'ora, il giorno della settimana, il mese e le indicazioni dei giorni festivi evidenziano i cicli; le codifiche seno e coseno dell'ora collocano le 23:00 accanto alle 00:00.
- Ritardi e finestre mobili: I valori precedenti, le medie mobili e i conteggi su finestre recenti forniscono al modello la cronologia recente di un sensore, un account o un prodotto.
- Raggruppamento in intervalli: Raggruppare i valori continui in intervalli, ad esempio fasce d'età, permette di cogliere effetti a gradini e limita l'influenza dei valori estremi.
- Riduzione della dimensionalità con PCA: L'analisi delle componenti principali comprime molte caratteristiche correlate in poche caratteristiche non correlate.
- Selezione delle caratteristiche: I metodi filtro ordinano le caratteristiche in base alla correlazione o all'informazione mutua con il target; i metodi wrapper verificano sottoinsiemi di caratteristiche con un modello; i metodi integrati, come la regolarizzazione L1, eliminano le caratteristiche durante l'addestramento.
Una feature di rapporto mostra perché funziona. Un albero decisionale con profondità limitata può suddividere i dati in base a una sola feature alla volta, quindi approssima male la regola «velocità media superiore a 90 km/h» usando solo distanza e durata, mentre la riproduce esattamente non appena calcola la velocità:
import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
# 1,000 trips: raw distance (km) and duration (h); label = average speed above 90 km/h
rng = np.random.default_rng(0)
distance = rng.uniform(10, 300, 1000)
hours = rng.uniform(0.5, 4.0, 1000)
y = (distance / hours > 90).astype(int)
raw = np.column_stack([distance, hours])
engineered = (distance / hours).reshape(-1, 1) # domain knowledge: speed = distance / time
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
for name, X in [("Raw distance and duration", raw), ("Engineered speed", engineered)]:
print(f"{name}: accuracy {cross_val_score(tree, X, y, cv=5).mean():.3f}")Con lo stesso albero di profondità 2, l'accuratezza convalidata incrociata passa da 0.861 con distanza e durata grezze a 1.000 con la feature velocità progettata, perché il confine diagonale nello spazio distanza-durata diventa un'unica soglia sulla velocità.
Convalida delle feature senza leakage#
Una feature è valida solo se il suo valore è noto al momento della previsione. Un modello di abbandono che usa il «numero di chiamate all'assistenza nel mese successivo alla cancellazione» o una codifica del target calcolata sull'intero dataset ottiene buoni risultati nei test, ma fallisce in produzione: è una forma di leakage dei dati. Ogni trasformazione con parametri appresi, come le medie dello scaler o le codifiche delle categorie, viene quindi adattata solo sui fold di addestramento, come fanno automaticamente le pipeline di scikit-learn, e ogni nuova feature viene mantenuta solo se migliora il punteggio con convalida incrociata. I sistemi di produzione devono anche calcolare ogni feature esattamente come durante l'addestramento; i feature store gestiscono questo aspetto fornendo a entrambi le stesse definizioni delle feature.
Progettazione delle feature nella computer vision#
La computer vision classica si basava su feature progettate a mano, come mappe dei bordi, descrittori di punti chiave SIFT e istogrammi dei gradienti orientati, che venivano poi classificati da algoritmi come le macchine a vettori di supporto. Da quando AlexNet ha vinto la sfida ImageNet nel 2012, le reti neurali convoluzionali apprendono le proprie mappe di feature dai pixel e il lavoro di progettazione si è spostato sui dati di addestramento, tramite l'augmentation dei dati, e sugli output dei modelli di visione. SpeedEstimator di Ultralytics ricava una feature di velocità dall'output del tracking degli oggetti di YOLO26: quando una traccia ha cinque posizioni, converte in metri lo spostamento in pixel tra la prima e l'ultima usando la scala meter_per_pixel e lo divide per il tempo trascorso per calcolare la velocità in km/h.
Applicazioni#
- Rischio di credito: gli istituti di credito ricavano dai dati grezzi dei conti il rapporto debito/reddito, l'utilizzo del credito e i mesi trascorsi dall'ultimo pagamento mancato: feature che prevedono il default meglio dei saldi grezzi.
- Manutenzione predittiva: medie mobili, tassi di variazione ed energia delle bande di frequenza calcolati dai flussi di vibrazioni e temperature rivelano l'usura in corso prima che una lettura grezza superi una soglia di allarme.
- Rilevamento delle frodi: le feature di frequenza, come il numero di transazioni con carta nell'ultima ora e la distanza tra un acquisto e la posizione abituale del titolare della carta, distinguono le frodi dalle spese normali.
- Previsione della domanda: i modelli per il commercio al dettaglio combinano ritardi delle vendite, medie mobili, variazioni dei prezzi, indicatori promozionali e festività per ogni punto vendita e prodotto.
Progettazione delle feature e termini correlati#
- Estrazione delle feature: calcola automaticamente le feature con un algoritmo fisso o un modello appreso, come PCA o il backbone di una rete neurale. I due termini sono spesso usati come sinonimi, ma la progettazione delle feature indica un processo più ampio e guidato dal dominio.
- Pre-elaborazione dei dati: pulisce e formatta i dati correggendo gli errori, compilando i valori mancanti e convertendo i tipi; è il passaggio che precede la progettazione delle feature.
- Embedding: vettori densi che un modello apprende durante l'addestramento per rappresentare parole, immagini o utenti e che, nella maggior parte dei sistemi di linguaggio e visione, sostituiscono feature costruite manualmente come il conteggio delle parole.










