Executive summary
Quando si costruisce un sistema capace di fare previsioni a partire dai dati, la qualità delle informazioni fornite al modello conta spesso più della complessità del modello stesso. Il processo di trasformazione dei dati grezzi in variabili informative, selezionando quelle utili ed eliminando quelle ridondanti, è una delle attività più determinanti per il successo di un progetto basato sull'analisi dei dati. Questa analisi esamina le tecniche principali per costruire e selezionare tali variabili, dai metodi manuali guidati dalla conoscenza del dominio fino ai sistemi più recenti che automatizzano l'intero processo combinando strategie di ricerca intelligente con modelli linguistici di ultima generazione. L'evidenza mostra che l'automazione non elimina la necessità di competenze specifiche sul dominio applicativo, ma amplifica la capacità di esplorazione, riducendo tempi e costi senza sacrificare la qualità predittiva.
Background
Il termine feature engineering designa l'insieme di operazioni attraverso cui dati grezzi vengono trasformati in rappresentazioni numeriche utilizzabili da algoritmi di machine learning. La distinzione tra feature extraction (generazione di nuove variabili a partire dai dati originali) e feature selection (identificazione del sottoinsieme di variabili più informativo) è stata formalizzata nel lavoro seminale di Guyon e Elisseeff [1], che ha stabilito un framework concettuale tuttora valido: la costruzione di feature e la loro selezione sono problemi complementari ma distinti, ciascuno con le proprie sfide computazionali e statistiche.
L'importanza del feature engineering nel ciclo di vita di un progetto di machine learning è difficile da sovrastimare. I risultati di numerose competizioni su piattaforme come Kaggle hanno dimostrato ripetutamente che la qualità delle feature ha un impatto sul rendimento predittivo superiore alla scelta dell'algoritmo di apprendimento [2]. Questa osservazione empirica ha una giustificazione teorica: un modello può apprendere solo le relazioni presenti nello spazio delle feature; se una relazione rilevante non è rappresentata, o è oscurata da rumore e ridondanza, nessun algoritmo, per quanto sofisticato, può compensare questa carenza.
Storicamente, il feature engineering è stato un processo prevalentemente manuale, dipendente dall'expertise del data scientist e dalla conoscenza del dominio applicativo. I primi approcci sistematici si sono concentrati sulla feature selection tramite metodi statistici, test univariati, analisi di correlazione, tecniche wrapper basate su ricerca sequenziale, con lo scopo di ridurre la dimensionalità e mitigare l'overfitting. L'introduzione di metodi di regolarizzazione come il LASSO [3] e l'elastic net [4] ha integrato la selezione delle feature direttamente nel processo di stima del modello, aprendo la strada ai cosiddetti metodi embedded. Parallelamente, l'ascesa degli ensemble methods, in particolare random forests [5] e gradient boosting [6], ha fornito metriche native di feature importance che hanno trasformato la valutazione delle variabili da problema separato a componente integrata del modelling.
L'evoluzione più recente, a partire dal 2015, ha visto l'emergere di sistemi di automated feature engineering capaci di generare e selezionare feature senza intervento manuale, culminando nei più recenti approcci che integrano large language model per incorporare conoscenza di dominio nel processo di ricerca [7]. Questa traiettoria, dal manuale all'automatico, dal dominio-specifico al dominio-agnostico, e nuovamente verso l'integrazione di conoscenza di dominio tramite LLM, definisce il panorama attuale del feature engineering e costituisce il filo conduttore dell'analisi che segue.
Estrazione e costruzione delle feature
Trasformazioni fondamentali
La feature extraction comprende tutte le operazioni che generano nuove variabili a partire dai dati grezzi. Le trasformazioni più elementari, scaling, normalizzazione, encoding di variabili categoriche, gestione dei valori mancanti, costituiscono il preprocessing standard e non verranno trattate in dettaglio. L'attenzione si concentra invece sulle classi di trasformazioni che introducono informazione strutturalmente nuova nello spazio delle feature.
Le trasformazioni matematiche non lineari (logaritmo, radice quadrata, Box-Cox, Yeo-Johnson) servono a stabilizzare la varianza e a rendere le distribuzioni più simmetriche, condizione che migliora le performance di modelli lineari e di quelli basati su distanze. Tuttavia, il loro impatto è trascurabile per modelli basati su alberi decisionali, che sono invarianti rispetto a trasformazioni monotone delle feature. Questa osservazione, apparentemente banale, ha implicazioni pratiche rilevanti: la scelta delle trasformazioni deve essere guidata dall'algoritmo di apprendimento target, non applicata indiscriminatamente.
Le feature polinomiali e le interaction features rappresentano una classe di trasformazioni più significativa. Data una coppia di feature $x_i$ e $x_j$, il prodotto $x_i \cdot x_j$ cattura l'effetto di interazione tra le due variabili, ossia la porzione di varianza nella variabile target che non è spiegata dagli effetti additivi individuali. Per $d$ feature originali, il numero di interaction features di secondo ordine è $\binom{d}{2} = \frac{d(d-1)}{2}$, che scala quadraticamente. Con $d = 100$, si generano 4.950 nuove feature; con $d = 1.000$, quasi 500.000. Questa esplosione combinatoria rende impraticabile la generazione esaustiva di interazioni per dataset ad alta dimensionalità e motiva l'adozione di strategie di selezione o di metodi che apprendono interazioni implicitamente, come i gradient boosted trees [6].
Feature di dominio
Le feature più informative emergono tipicamente dalla conoscenza specifica del dominio applicativo. Nel processing di serie temporali, la libreria tsfresh [8] automatizza l'estrazione di centinaia di feature statistiche, dalla semplice media mobile a misure derivate dalla teoria del caos come l'esponente di Lyapunov, combinando algoritmi consolidati di statistica, analisi dei segnali e dinamica non lineare. tsfresh estrae 794 feature temporali e applica test di ipotesi configurati automaticamente per selezionare quelle statisticamente significative rispetto alla variabile target [8], un approccio che chiude il ciclo tra estrazione e selezione in modo domain-aware.
Nel natural language processing, la feature extraction ha attraversato una trasformazione radicale. I metodi tradizionali, bag-of-words, TF-IDF, n-grammi, producono rappresentazioni sparse ad alta dimensionalità che catturano la frequenza dei termini ma ignorano la semantica. L'introduzione degli embedding neurali (Word2Vec, GloVe, e successivamente i contextual embedding da modelli transformer) ha spostato il paradigma verso rappresentazioni dense a bassa dimensionalità che codificano relazioni semantiche. Questa transizione esemplifica un principio generale: quando un dominio dispone di modelli pre-addestrati sufficientemente espressivi, il feature engineering manuale tende a essere sostituito dalla rappresentazione appresa, anche se feature domain-specific rimangono complementari in contesti dove i dati annotati sono scarsi.
Nei domini industriali, predictive maintenance, process monitoring, quality control, le feature più discriminanti sono spesso quelle derivate da conoscenza ingegneristica: rapporti tra variabili fisiche (coefficienti di efficienza), derivate temporali (tassi di cambiamento), feature aggregate su finestre temporali context-dependent (media mobile sulle ultime $n$ ore di operazione, dove $n$ è determinato dalla dinamica del processo). La costruzione di queste feature richiede una comprensione profonda del processo generatore dei dati che nessun sistema automatico è in grado di replicare completamente, sebbene i più recenti approcci basati su LLM [7] tentino di approssimarla.
Metodi di selezione delle feature
La feature selection mira a identificare il sottoinsieme di variabili che massimizza la capacità predittiva del modello, riducendo al contempo dimensionalità, overfitting e costi computazionali. La tassonomia classica, formalizzata da Guyon e Elisseeff [1], distingue tre famiglie di metodi: filter, wrapper e embedded.
Metodi filter
I metodi filter valutano la rilevanza delle feature indipendentemente dall'algoritmo di apprendimento, utilizzando misure statistiche calcolate sulla relazione univariata o multivariata tra ciascuna feature e la variabile target. Le misure più comuni includono il test F di ANOVA per feature continue con target categorico, il test chi-quadrato per feature e target categorici, e la mutual information per catturare dipendenze non lineari arbitrarie. Scikit-learn implementa queste misure nei selettori SelectKBest e SelectPercentile [9], che ordinano le feature per score e selezionano le top-$k$ o la percentuale superiore.
Il vantaggio principale dei metodi filter è la velocità computazionale: il costo è lineare nel numero di feature e indipendente dal modello. Lo svantaggio fondamentale è l'incapacità di catturare interazioni tra feature. Una variabile individualmente poco correlata con il target può essere altamente informativa in combinazione con altre, ma un filtro univariato la scarterebbe. Metodi filter multivariati, basati su matrici di correlazione, minimum Redundancy Maximum Relevance (mRMR) o Conditional Mutual Information, mitigano parzialmente questo problema, ma il loro costo computazionale cresce significativamente con la dimensionalità.
Metodi wrapper
I metodi wrapper valutano i sottoinsiemi di feature attraverso la performance effettiva di un modello di apprendimento, tipicamente misurata tramite cross-validation. L'algoritmo Recursive Feature Elimination (RFE), implementato in scikit-learn [9], addestra iterativamente il modello, elimina le feature con il peso più basso, e ripete fino a raggiungere il numero desiderato di feature. La Sequential Feature Selection (SFS) opera in modo analogo, aggiungendo (forward) o rimuovendo (backward) una feature alla volta.
Il punto di forza dei metodi wrapper è la capacità di catturare interazioni e dipendenze specifiche dell'algoritmo target. Il limite è il costo computazionale: per $d$ feature, RFE richiede $O(d)$ addestramenti del modello, ciascuno con cross-validation. Per dataset con migliaia di feature e modelli costosi da addestrare, l'approccio diventa proibitivo. L'adozione di strategie greedy (forward/backward) riduce la complessità da esponenziale a polinomiale, ma introduce il rischio di convergenza a ottimi locali.
Metodi embedded
I metodi embedded integrano la selezione delle feature nel processo di addestramento del modello stesso. Il LASSO (Least Absolute Shrinkage and Selection Operator), introdotto da Tibshirani [3], minimizza la funzione:
$$\min_{\beta} \frac{1}{2n} |y - X\beta|_2^2 + \lambda |\beta|_1$$
dove il termine di penalizzazione $L_1$ ($\lambda |\beta|_1$) forza alcuni coefficienti $\beta_j$ esattamente a zero, producendo un modello sparso che seleziona implicitamente le feature. Il parametro $\lambda$ controlla il trade-off tra aderenza ai dati e sparsità: valori elevati di $\lambda$ producono modelli con meno feature selezionate.
L'elastic net [4], proposto da Zou e Hastie, combina penalizzazione $L_1$ e $L_2$:
$$\min_{\beta} \frac{1}{2n} |y - X\beta|_2^2 + \lambda_1 |\beta|_1 + \lambda_2 |\beta|_2^2$$
Questa formulazione risolve due limiti strutturali del LASSO: la tendenza a selezionare arbitrariamente una sola feature tra un gruppo di variabili altamente correlate e l'instabilità quando il numero di feature supera il numero di osservazioni ($p \gg n$). L'elastic net incoraggia un effetto di raggruppamento (grouping effect), per cui feature correlate tendono a essere selezionate o escluse congiuntamente [4].
Per i modelli basati su alberi, la feature importance derivata dallo split gain, la riduzione cumulativa dell'impurità (Gini o entropia) attribuita a ciascuna feature attraverso tutti gli alberi dell'ensemble, costituisce un meccanismo embedded di valutazione delle feature. In XGBoost [6], la feature importance per gain è calcolata come la somma dei miglioramenti nella funzione obiettivo prodotti da ogni split su quella feature. Tuttavia, questa misura presenta un bias noto verso feature con alta cardinalità (molti valori unici), un problema documentato sia per random forests [5] sia per gradient boosting.
Feature importance e interpretabilità
La valutazione quantitativa dell'importanza delle feature è cruciale sia per la selezione (eliminare variabili irrilevanti) sia per l'interpretabilità (comprendere il comportamento del modello). I metodi di feature importance si dividono in due categorie: model-specific, legati all'architettura del modello, e model-agnostic, applicabili a qualsiasi predittore.
Importanza basata su impurità e gain
I modelli ensemble basati su alberi forniscono metriche native di importanza. Breiman [5] ha introdotto due misure per le random forests: la Mean Decrease Impurity (MDI), che quantifica la riduzione totale dell'impurità di Gini prodotta dagli split su ciascuna feature, e la permutation importance, che misura la degradazione della performance quando i valori di una feature vengono permutati casualmente nel set out-of-bag. Le due misure possono produrre ranking significativamente diversi, in particolare in presenza di feature correlate. La MDI tende a sovrastimare l'importanza di feature con alta cardinalità e a distribuire l'importanza tra feature correlate in modo dipendente dalla struttura degli alberi, un artefatto che non riflette la rilevanza statistica delle variabili.
La permutation importance, pur essendo più robusta della MDI, soffre di un problema sottile in presenza di multicollinearità: permutare una feature correlata con altre produce configurazioni di dati fuori distribuzione, portando a stime di importanza deflazionate. Se due feature $x_1$ e $x_2$ sono fortemente correlate, permutare $x_1$ lasciando $x_2$ intatta non elimina l'informazione che $x_1$ codifica, perché $x_2$ la preserva parzialmente. Di conseguenza, entrambe le feature appaiono meno importanti di quanto siano realmente. Questo problema non ha una soluzione semplice: la conditional permutation importance, che permuta condizionatamente alle altre feature, risolve il bias ma è computazionalmente costosa.
SHAP: un framework unificato
SHAP (SHapley Additive exPlanations), proposto da Lundberg e Lee [10], ha introdotto un framework teoricamente fondato per l'attribuzione dell'importanza delle feature a livello di singola predizione. L'idea centrale è l'applicazione dei valori di Shapley dalla teoria dei giochi cooperativi: il contributo di ciascuna feature alla predizione viene calcolato come la media marginale del suo impatto su tutte le possibili coalizioni di feature.
Per una predizione $f(x)$, il valore SHAP della feature $j$ è definito come:
$$\phi_j = \sum_{S \subseteq N \setminus {j}} \frac{|S|!(|N|-|S|-1)!}{|N|!} \left[ f(S \cup {j}) - f(S) \right]$$
dove $N$ è l'insieme di tutte le feature, $S$ è un sottoinsieme che non include $j$, e $f(S)$ rappresenta la predizione del modello condizionata alle sole feature in $S$. Questa formulazione garantisce tre proprietà desiderabili: efficienza (i contributi sommano alla predizione), simmetria (feature con contributo identico ricevono lo stesso valore), e dummy (feature irrilevanti ricevono valore zero) [10].
Il calcolo esatto dei valori di Shapley è esponenziale nel numero di feature ($O(2^d)$), rendendo necessarie approssimazioni. TreeSHAP [11] sfrutta la struttura degli alberi decisionali per calcolare valori SHAP esatti in tempo polinomiale per modelli basati su alberi, riducendo la complessità da esponenziale a $O(TLD^2)$, dove $T$ è il numero di alberi, $L$ il numero massimo di foglie e $D$ la profondità massima. Questa ottimizzazione ha reso SHAP lo standard de facto per l'interpretabilità di modelli gradient boosting in produzione.
È importante distinguere tra SHAP feature importance (media dei valori assoluti di SHAP su tutte le osservazioni) e permutation importance. Le due misure rispondono a domande diverse: SHAP quantifica il contributo medio alla predizione, la permutation importance quantifica l'impatto sulla performance predittiva. In presenza di feature correlate, i due ranking possono divergere significativamente, e la scelta tra i due deve essere guidata dall'obiettivo dell'analisi, interpretazione del modello vs. selezione delle feature.
Feature engineering automatizzato
Deep Feature Synthesis e Featuretools
L'automated feature engineering mira a sostituire il processo manuale di costruzione delle feature con algoritmi sistematici di generazione e selezione. Il contributo fondamentale in questo campo è il Deep Feature Synthesis (DFS), proposto da Kanter e Veeramachaneni [2] al MIT. DFS opera su dataset relazionali, seguendo le relazioni tra tabelle e applicando sequenzialmente operazioni di trasformazione (su singole colonne: logaritmo, valore assoluto, giorno della settimana) e aggregazione (su relazioni uno-a-molti: media, somma, conteggio, deviazione standard) per generare feature di complessità crescente.
L'intuizione chiave di DFS è che la composizione di operazioni primitive genera feature semanticamente ricche senza intervento umano. Data una tabella "clienti" collegata a una tabella "transazioni", DFS può generare automaticamente feature come "deviazione standard dell'importo delle transazioni per cliente nell'ultimo mese" applicando in sequenza un filtro temporale, un'aggregazione statistica e un join relazionale. La "profondità" nel nome si riferisce al numero di livelli di composizione: profondità 1 corrisponde a operazioni primitive, profondità 2 a composizioni di due operazioni, e così via.
Featuretools [12], la libreria open-source che implementa DFS, è mantenuta da Alteryx (precedentemente Feature Labs, la spin-off del MIT fondata dagli autori dell'algoritmo). La libreria adotta un'astrazione basata su entity set (insiemi di tabelle con relazioni definite) e primitives (operazioni di trasformazione e aggregazione componibili). La validazione sperimentale presentata nel paper originale ha dimostrato che DFS, combinato con un semplice modello di classificazione, ha battuto 615 su 906 team umani in competizioni di data science online [2], un risultato che ha catalizzato l'interesse per l'automated feature engineering.
Tuttavia, DFS presenta limiti significativi. Lo spazio delle feature generate cresce esponenzialmente con la profondità, producendo set di centinaia di migliaia di feature che richiedono una fase di selezione aggressiva a valle. Inoltre, le primitive disponibili sono fisse e domain-agnostic: DFS non incorpora conoscenza specifica del dominio, il che limita la qualità delle feature generate rispetto a quelle costruite da un esperto di dominio.
Autofeat: selezione integrata nella generazione
Un approccio intermedio tra DFS e i metodi più recenti è rappresentato da autofeat [13], una libreria che genera un ampio pool di feature non lineari (prodotti, rapporti, trasformazioni matematiche) a partire dalle feature originali, per poi selezionare automaticamente un sottoinsieme ridotto e robusto tramite regressione $L_1$ e test di significatività. A differenza di DFS, autofeat è progettato per dataset a singola tabella e mantiene l'interpretabilità del modello finale: il risultato è un modello lineare con feature ingegnerizzate selezionate, il che consente di verificare esplicitamente il contributo di ciascuna trasformazione. Il limite principale è la scalabilità: la generazione esaustiva di combinazioni polinomiali diventa proibitiva per dataset con più di alcune decine di feature originali.
OpenFE: generazione guidata da boosting
OpenFE [14], presentato a ICML 2023, ha proposto un approccio diverso all'automated feature engineering. Invece di enumerare combinazioni di operazioni, OpenFE utilizza un metodo di feature boosting per valutare efficientemente l'incremento di performance prodotto da ciascuna feature candidata. L'algoritmo opera in due fasi: generazione di un ampio pool di feature candidate tramite combinazione di operazioni aritmetiche e aggregazioni, seguita da un pruning a due stadi (coarse-to-fine) che riduce progressivamente il set.
Il contributo tecnico principale è la metrica di valutazione basata sul feature boosting: ogni feature candidata viene valutata addestrando un singolo step di gradient boosting sui residui del modello corrente. Questo approccio è ordini di grandezza più veloce della cross-validation completa usata dai metodi wrapper tradizionali, pur mantenendo una correlazione elevata con la performance finale. Nei risultati sperimentali, OpenFE con un modello baseline semplice ha battuto il 99.3% e il 99.6% dei team in due competizioni Kaggle con migliaia di partecipanti [13], superando le performance ottenute con feature engineering manuale nella maggior parte dei casi.
LLM-FE: conoscenza di dominio tramite modelli linguistici
L'approccio più recente all'automated feature engineering integra large language model per incorporare conoscenza di dominio nel processo di ricerca. LLM-FE [7], pubblicato nel marzo 2025, formula il feature engineering come un problema di ricerca programmatica: un LLM propone iterativamente programmi di trasformazione delle feature, riceve feedback data-driven sulla loro efficacia, e affina le proposte successive attraverso un processo di ricerca evolutiva.
L'innovazione rispetto ai metodi precedenti è duplice. In primo luogo, il LLM porta conoscenza di dominio implicita: per un dataset medico, può proporre feature clinicamente significative (rapporti tra biomarker, soglie diagnostiche note) senza che queste operazioni siano pre-definite nello spazio di ricerca. In secondo luogo, la formulazione come programma rende le feature generate interpretabili e auditabili, un vantaggio critico rispetto alle rappresentazioni apprese end-to-end.
Il framework Human-LLM Collaborative Feature Engineering [15] ha esteso questo paradigma introducendo un ciclo di collaborazione esplicito tra esperto umano e LLM: il modello linguistico genera ipotesi di feature, l'esperto le valida e le raffina, e il sistema integra il feedback per le iterazioni successive. I risultati preliminari suggeriscono che l'approccio collaborativo supera sia il feature engineering puramente manuale sia quello puramente automatico, confermando l'intuizione che la conoscenza di dominio e la capacità esplorativa dei LLM sono complementari piuttosto che sostitutive.
Interazioni tra feature e metodi di rilevamento
Le interaction features catturano effetti sinergici tra variabili che i modelli lineari non possono rappresentare con feature additive. Formalmente, un'interazione tra le feature $x_i$ e $x_j$ esiste quando l'effetto combinato sulla variabile target $y$ non è decomponibile nella somma degli effetti individuali:
$$E[y | x_i, x_j] \neq g_i(x_i) + g_j(x_j)$$
La rilevazione e la costruzione di interaction features presentano sfide computazionali e statistiche specifiche. La generazione esaustiva di interazioni di ordine $k$ tra $d$ feature produce $\binom{d}{k}$ candidati, un numero che diventa rapidamente intrattabile per $k > 2$ e $d > 100$. Inoltre, testare la significatività statistica di ciascuna interazione richiede correzioni per test multipli (Bonferroni, Benjamini-Hochberg) che riducono la potenza statistica in proporzione al numero di test.
I modelli basati su alberi, random forests [5], XGBoost [6], catturano implicitamente le interazioni attraverso la struttura di split gerarchica: ogni percorso dalla radice a una foglia codifica un'interazione tra le feature su cui vengono effettuati gli split successivi. SHAP interaction values [11] estendono i valori di Shapley alla quantificazione delle interazioni tra coppie di feature, fornendo una matrice $d \times d$ che identifica le interazioni più rilevanti per ogni predizione. Questa capacità di quantificare le interazioni a posteriori rappresenta un vantaggio significativo rispetto alla generazione a priori di feature di interazione: invece di enumerare e testare tutte le possibili coppie, si analizzano le interazioni che il modello ha effettivamente appreso.
Un approccio complementare è la ANOVA decomposition, che scompone la funzione predittiva in componenti di ordine crescente:
$$f(x) = f_0 + \sum_i f_i(x_i) + \sum_{i