Feature engineering: tecniche avanzate per preparare i dati al machine learning

Dal data cleaning alla normalizzazione: come trasformare dati grezzi in feature pronte per il machine learning. Guida tecnica con esempi concreti e infografiche.
Immagine realizzata con IA
Le immagini di copertina possono essere realizzate o elaborate con strumenti di Intelligenza Artificiale. Questa scelta nasce anche dalla necessità di prevenire le continue contestazioni e richieste economiche improprie che ricevo relative a fotografie utilizzate che sono sempre state acquistate con regolare licenza.
Contenuti dell'articolo

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.

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:

Feature Engineering: da Raw Data a Model-Ready Features

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 fasce
  • is_high_income = income > 60000 — soglie booleane
  • tenure_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.

Feature Engineering Pipeline completa

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:

  1. Informativa: aiuta il modello a distinguere tra classi diverse
  2. Robusta: non cambia drasticamente con piccole variazioni nei dati
  3. 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.

Newsletter settimanale con le ultime novità sull’intelligenza artificiale

Corso gratuito sull’Intelligenza Artificiale, dalle nozioni base ai concetti più complessi

Condividi:

Potrebbero interessarti