Nel mondo del machine learning si sente spesso una frase: “i modelli sono bravi quanto i dati che gli dai.” Ed è vero. Ma c’è un passaggio intermedio che fa la differenza tra un modello mediocre e uno che funziona davvero: il feature engineering.
Nel primo articolo della serie abbiamo visto cosa sono le feature. Ora entriamo nel tecnico: come si costruiscono, come si puliscono, come si trasformano. Perché i dati grezzi, da soli, non bastano mai.
Di cosa parleremo..
Cos’è il feature engineering (in pratica)
Il feature engineering è il processo di trasformazione dei dati grezzi in variabili numeriche che un modello di machine learning possa effettivamente usare per imparare.
Sembra un concetto astratto, ma è molto concreto. Un modello non capisce “Basic”, “basic” e “BASIC” come la stessa cosa. Non sa cosa fare di una data scritta come “Jan 5, 2023” o “2/18/23”. Non gestisce automaticamente un campo Notes con testo libero scritto da un operatore.
Tocca a te trasformare tutto questo in numeri puliti e coerenti.
Ecco il quadro completo di cosa significa:

La pipeline del feature engineering
Il feature engineering non è un’operazione singola. È una sequenza di passaggi che si ripete finché i dati non sono pronti.
Vediamo le fasi principali.
1. Data Cleaning: il 70% del lavoro
Prima ancora di pensare a creare feature, i dati devono essere puliti. Nella pratica, questa fase occupa la maggior parte del tempo di un data scientist.
Cosa significa pulire i dati:
- Gestire i valori mancanti: un campo “None” o “-” in una colonna numerica non può essere ignorato. Serve decidere se rimuovere la riga, sostituire con la media, o usare tecniche più avanzate come l’imputazione.
- Rimuovere i duplicati: record identici (o quasi) vanno puliti, altrimenti il modello impara da dati sbilanciati.
- Correggere i tipi di dato: le date vanno in un formato unico, i numeri devono essere numeri, non stringhe con simboli incorporati.
Esempio concreto: una colonna “tenure” può contenere “16 mos”, “About a year”, “13”, “~9 mos”. Tutti questi devono diventare un unico formato numerico, per esempio “16”, “12”, “13”, “9”, tutti in mesi.
2. Feature Creation: trasformare in informazione
Una volta puliti, i dati vanno trasformati in feature utili. Ecco le tecniche principali:
Encoding di variabili categoriche
Le categorie testuali vanno convertite in numeri. Il metodo più comune è il one-hot encoding: ogni categoria diventa una colonna separata con valore 0 o 1. Per esempio, “città” con valori “NY”, “LA”, “SF” diventa tre colonne: city_NY, city_LA, city_SF.
Altri metodi includono il label encoding (ogni categoria diventa un numero intero) per variabili ordinali, o il target encoding che sostituisce la categoria con la media del target.
Feature derivate
Si creano nuove colonne combinando o trasformando quelle esistenti:
age_group = 20-29— raggruppare età in fasceis_high_income = income > 60000— soglie booleanetenure_years = 2024 - join_year— calcoli semplici
Estrazione da testo libero
Campi Notes o descrizioni contengono informazioni preziose. Con semplici espressioni regolari si possono estrarre indicatori binari: “has_discount”, “requested_refund”, “is_vip”. Nel nostro esempio Customer Churn, la nota “Discount used” diventa la feature used_discount = 1.

3. Scaling e Normalizzazione: mettere tutti sullo stesso piano
Quando le feature hanno scale molto diverse, per esempio un’età tra 0 e 100 e un reddito tra 0 e 200.000, il modello tende a dare più peso a quelle con valori più grandi.
Standardizzazione (Z-score): trasforma ogni feature in modo che abbia media 0 e deviazione standard 1. Formula: (x - media) / deviazione_standard.
Normalizzazione Min-Max: comprime i valori in un intervallo fisso, tipicamente [0, 1].
A seconda del modello usato, una tecnica può essere preferibile all’altra. Gli alberi decisionali (ne abbiamo parlato qui) non richiedono scaling. Le reti neurali e la regressione lineare, invece, ne hanno bisogno.
Feature qualitative vs feature quantitative
Non tutte le feature sono uguali. Una buona feature ha tre caratteristiche:
- Informativa: aiuta il modello a distinguere tra classi diverse
- Robusta: non cambia drasticamente con piccole variazioni nei dati
- Interpretabile: capisci cosa rappresenta e perché aiuta
Esempi di feature scadenti: un ID cliente (ogni valore è unico, non generalizzabile), una data senza contesto, o una feature con bias nascosto.
Un ID utente non è informativo, non da informazioni sulla tipologia di utente.
Un ID utente non è robusto, l’utente 10 è completamente distinto dall’utente 11
Un ID utente non è interpretabile, è solo un numero che, preso singolarmente, non porta con sé alcuna informazione senza una relazione con altri dati
Il problema della maledizione della dimensionalità
Creare troppe feature può essere controproducente. Con l’aumentare del numero di dimensioni, i dati diventano sempre più sparsi e il modello fatica a trovare pattern significativi. Questo fenomeno si chiama maledizione della dimensionalità.
La soluzione è la selezione delle feature o la riduzione dimensionale (tecniche come PCA o t-SNE). Non tutte le feature che crei devono finire nel modello. Testa, valuta, e tieni solo quelle che migliorano le performance.
Feature engineering per diversi tipi di dati
Ogni tipo di dato richiede approcci specifici:
- Dati temporali: estrai giorno della settimana, mese, ora, festività, distanza dall’ultimo evento. Le serie temporali hanno bisogno di feature lag (valori precedenti) e medie mobili.
- Dati testuali: oltre al bag-of-words, tecniche come TF-IDF e embedding permettono di trasformare testo in vettori numerici densi. I modelli moderni usano già embedding pre-addestrati.
- Dati geografici: latitudine, longitudine, distanza da punti di interesse, densità di popolazione nella zona.
- Dati relazionali: aggregazioni come conteggio, somma, media di record correlati (es. numero di acquisti di un cliente nell’ultimo mese).
Link con gli articoli precedenti
Questo articolo completa quello su cosa sono le feature nel machine learning. Insieme all’articolo su cosa sono i dati nell’IA formano le basi per capire come preparare correttamente un dataset prima di addestrare qualsiasi modello.
FAQ
1. Il feature engineering è ancora rilevante con i modelli deep learning che imparano da soli le rappresentazioni?
Sì, eccome. Anche le reti neurali profonde beneficiano di feature ben progettate, specialmente per dati tabellari. Il deep learning eccelle con dati non strutturati (immagini, testo, audio), ma per dati tabellari puliti e ben ingegnerizzati, modelli come XGBoost e LightGBM sono ancora competitivi.
2. Quanto tempo dovrei dedicare al feature engineering rispetto all’addestramento del modello?
Nella pratica, il 70-80% del tempo di un progetto di machine learning va nella preparazione dei dati e nel feature engineering. L’addestramento del modello è la parte relativamente rapida.
3. Esistono strumenti per automatizzare il feature engineering?
Sì, librerie come Featuretools (per dati relazionali) e TSFresh (per serie temporali) automatizzano parte del processo. Ma la conoscenza del dominio è insostituibile: capire quali feature sono rilevanti per il problema specifico richiede esperienza umana.
4. Qual è la differenza tra feature engineering e feature selection?
Il feature engineering crea nuove feature dai dati esistenti. La feature selection sceglie, tra tutte le feature disponibili, quelle più utili per il modello. Sono due fasi distinte: prima crei, poi selezioni.
5. Posso fare overfitting con troppe feature?
Assolutamente sì. Creare centinaia di feature aumenta il rischio di overfitting, perché il modello può imparare pattern casuali specifici del tuo dataset di training che non si generalizzano. La regola d’oro: meglio poche feature buone che tante mediocri.


