Il sito che ti spiega l'AI.
News, strumenti e guide in italiano.
Tutorial e Risorse

Feature engineering: cos’è, tecniche e come preparare i dati per il machine learning

Che cos'è il feature engineering, perché conta più dell'algoritmo e quali tecniche usare per trasformare i dati grezzi in feature utili al modello.

FA
Franco Artigiano IA Franco Artigiano
Settembre 17, 2026
Lettura: 15 min
Grafici e analisi di dati su uno schermo, a rappresentare il feature engineering nel machine learning

Quando un progetto di machine learning non produce i risultati sperati, l’istinto porta quasi sempre nella stessa direzione: cambiare algoritmo, aggiungere strati alla rete neurale, cercare un modello più grande e più potente. Nella pratica di tutti i giorni, però, la differenza tra un modello mediocre e uno che funziona davvero si gioca altrove, cioè nel modo in cui i dati grezzi vengono trasformati in informazioni che l’algoritmo riesce a sfruttare.

Questo lavoro ha un nome preciso, feature engineering, ed è una delle competenze più sottovalutate e allo stesso tempo più decisive dell’intero settore.

In questa guida vedrai che cosa significa costruire le feature, dove si colloca questo passaggio nel flusso di lavoro di un progetto, quali tecniche userai più spesso e quali errori rischiano di rovinare in silenzio i tuoi risultati. L’obiettivo è darti un quadro completo e pratico, utile oggi come tra qualche anno, perché i principi del feature engineering cambiano molto più lentamente delle mode sui modelli.

Partiamo dalle fondamenta.

Che cos’è il feature engineering

Il feature engineering è l’insieme di attività con cui trasformi i dati grezzi in variabili, chiamate feature, che rappresentano nel modo più efficace possibile il problema che vuoi risolvere. In termini semplici, è il processo che decide quali informazioni mostrare al modello e in quale forma, così che l’algoritmo possa cogliere gli schemi nascosti nei dati e trasformarli in previsioni accurate.

Una feature è una singola colonna del tuo dataset, una caratteristica misurabile di ciò che stai osservando. Se stai costruendo un modello che prevede il prezzo di una casa, feature tipiche sono la superficie in metri quadri, il numero di stanze, l’anno di costruzione e la distanza dal centro. Il modello non vede la casa, vede soltanto questi numeri, e la qualità delle sue previsioni dipende in modo diretto da quanto bene quei numeri descrivono la realtà.

Ecco il punto centrale, ed è bene fissarlo subito.

Gli algoritmi imparano solo ciò che le feature permettono loro di vedere. Un modello che riceve informazioni povere o mal formulate produrrà previsioni povere, per quanto sofisticato sia. Un modello anche semplice, alimentato con feature ben costruite, spesso batte un modello complesso costruito su dati grezzi. È il vecchio principio del “garbage in, garbage out” applicato all’intelligenza artificiale.

Feature, variabili e attributi: le parole giuste

Nel linguaggio quotidiano di chi lavora con i dati troverai molti termini usati come sinonimi. Feature, variabile, attributo, predittore e colonna indicano in pratica la stessa cosa: una dimensione lungo la quale ogni esempio del dataset viene descritto. La variabile che invece vuoi prevedere, cioè l’obiettivo del modello, si chiama target o variabile dipendente.

La distinzione conta perché il feature engineering riguarda proprio la relazione tra le feature e il target. Non si tratta di accumulare quante più colonne possibili, ma di costruire quelle che portano un segnale utile rispetto a ciò che vuoi prevedere. Una feature che non ha alcun legame con il target aggiunge solo rumore.

Perché conta più dell’algoritmo

Molti principianti dedicano gran parte del tempo alla scelta e alla messa a punto dell’algoritmo, convinti che sia lì che si nasconde il miglioramento decisivo. I professionisti esperti sanno invece che il ritorno più alto, a parità di sforzo, arriva quasi sempre dal lavoro sui dati.

La ragione è intuitiva. Gli algoritmi moderni sono ormai maturi, ben documentati e disponibili in librerie che chiunque può usare. Ciò che distingue un progetto vincente non è la formula matematica sotto il cofano, che è la stessa per tutti, ma la capacità di rappresentare il problema in modo che quella formula funzioni al meglio. Le feature sono esattamente questa rappresentazione.

Immagina di voler prevedere se un cliente abbandonerà un servizio in abbonamento. Il dato grezzo potrebbe essere la lista di tutti i suoi accessi, con data e ora. Da solo, quell’elenco dice poco al modello. Se però lo trasformi in feature come “numero di accessi nell’ultimo mese”, “giorni trascorsi dall’ultimo accesso” e “variazione della frequenza rispetto al trimestre precedente”, improvvisamente stai offrendo all’algoritmo proprio i segnali che un analista umano cercherebbe. Questo è il cuore del feature engineering.

Dove si colloca nel flusso di lavoro del machine learning

Per capire davvero il feature engineering conviene vederlo dentro il percorso completo di un progetto di machine learning. Quel percorso, semplificando, attraversa alcune fasi ricorrenti: la raccolta dei dati, la loro pulizia, la costruzione delle feature, l’addestramento del modello e infine la valutazione dei risultati.

La raccolta è il momento in cui metti insieme le fonti, che siano database aziendali, file esportati, sensori o interrogazioni a servizi esterni. La pulizia si occupa di rendere quei dati utilizzabili, correggendo errori, uniformando formati e gestendo le incongruenze. Solo a questo punto entra in gioco il feature engineering vero e proprio, che parte da dati puliti e li plasma nelle variabili che il modello riceverà in ingresso.

Conviene distinguere due attività che spesso vengono confuse.

La pulizia dei dati, o data cleaning, risolve problemi di qualità: valori palesemente sbagliati, duplicati, unità di misura incoerenti, campi vuoti da riempire o da rimuovere. Il feature engineering, invece, presuppone dati già ragionevolmente puliti e aggiunge valore, creando nuove variabili, trasformando quelle esistenti e scegliendo quali tenere. La prima attività ripara, la seconda costruisce.

Nella realtà i confini sono sfumati e i due lavori si intrecciano di continuo. È normale tornare più volte sui dati, scoprire un problema di qualità mentre costruisci una feature e correggere di conseguenza. Il processo è iterativo per natura, e questo è un aspetto che va accettato invece che combattuto.

Le tecniche principali di feature engineering

Non esiste una ricetta universale, perché le feature migliori dipendono dal dominio e dal problema. Esiste però un repertorio di tecniche che ricorrono in quasi tutti i progetti e che vale la pena conoscere a fondo. Le vediamo una per una.

Gestire i valori mancanti

Quasi ogni dataset reale contiene buchi. Un sensore che ha smesso di trasmettere, un campo che l’utente non ha compilato, un dato che non è mai stato registrato. La maggior parte degli algoritmi non tollera i valori mancanti, quindi devi decidere come trattarli prima dell’addestramento.

Le strade sono principalmente due. La prima consiste nell’eliminare le righe o le colonne troppo incomplete, una scelta semplice ma rischiosa, perché getta via informazione. La seconda, più usata, è l’imputazione: sostituisci il valore mancante con una stima ragionevole, per esempio la media o la mediana per le variabili numeriche, il valore più frequente per quelle categoriche, oppure una previsione ottenuta da un modello dedicato.

Spesso conviene anche aggiungere una feature binaria che segnala dove il dato era mancante. Il fatto stesso che un valore fosse assente, infatti, può portare un segnale prezioso: chi non compila un campo di un modulo, per esempio, a volte si comporta in modo sistematicamente diverso da chi lo compila.

Codificare le variabili categoriche

Molti dati non sono numeri ma categorie: il colore di un prodotto, la città di residenza, il tipo di abbonamento. Gli algoritmi lavorano con i numeri, quindi queste variabili vanno tradotte in forma numerica senza introdurre significati falsi.

La tecnica più diffusa è il one-hot encoding, che crea una colonna binaria per ogni categoria possibile, con valore uno quando la categoria è presente e zero altrimenti. È una soluzione pulita quando le categorie sono poche. Quando invece sono moltissime, il one-hot encoding genera un numero enorme di colonne e conviene passare ad alternative come il target encoding, che sostituisce ogni categoria con un valore derivato dalla media del target per quella categoria.

Esiste anche il label encoding, che assegna semplicemente un numero intero a ogni categoria. Va usato con attenzione, perché introduce un ordine tra le categorie che spesso non esiste nella realtà, e alcuni algoritmi potrebbero interpretarlo come una gerarchia inventata.

Scalare e normalizzare le variabili numeriche

Le feature numeriche arrivano su scale molto diverse tra loro. Un’età va da zero a cento, un reddito annuo può contare decine di migliaia di unità, una probabilità sta tra zero e uno. Diversi algoritmi sono sensibili a queste differenze di scala e tendono a dare peso eccessivo alle variabili con valori più grandi, indipendentemente dalla loro reale importanza.

Per questo si applicano tecniche di scaling. La standardizzazione trasforma ogni variabile in modo che abbia media zero e deviazione standard uno, rendendo confrontabili grandezze di natura diversa. La normalizzazione min-max, invece, comprime i valori in un intervallo fisso, tipicamente tra zero e uno.

La scelta dipende dall’algoritmo. I metodi basati sulle distanze, come le macchine a vettori di supporto o i modelli che usano i vicini più prossimi, traggono grande beneficio dallo scaling. Gli alberi decisionali e le loro varianti, al contrario, sono in gran parte indifferenti alla scala delle variabili, perché lavorano su soglie e non su distanze.

Trasformare e discretizzare

A volte una variabile numerica esprime meglio il suo segnale se la trasformi. Applicare il logaritmo a valori molto sbilanciati, come i prezzi o i redditi, comprime i valori estremi e rende la distribuzione più maneggevole per molti algoritmi. Elevare a potenza o combinare due variabili in un prodotto può far emergere relazioni non lineari che il modello da solo faticherebbe a cogliere.

Un’altra tecnica utile è il binning, cioè il raggruppamento dei valori continui in fasce. Al posto dell’età esatta puoi creare categorie come “under 18”, “18-35”, “36-65” e “over 65”. Perdi un po’ di dettaglio, ma guadagni robustezza e riduci l’effetto del rumore, soprattutto quando la relazione con il target segue le fasce più che il valore puntuale.

Creare nuove feature dal dominio

La parte più creativa e spesso più redditizia del feature engineering è la costruzione di variabili completamente nuove, ricavate combinando quelle esistenti alla luce della conoscenza del settore. Qui la tua comprensione del problema vale più di qualsiasi automatismo.

Da una data di nascita ricavi l’età. Da una data e ora di transazione estrai il giorno della settimana, l’ora, l’indicazione se è un festivo, tutte informazioni che possono contare enormemente in ambito commerciale. Da due colonne come altezza e peso costruisci l’indice di massa corporea, che condensa in un solo numero una relazione clinicamente significativa.

Queste feature derivate sono potenti proprio perché incorporano un ragionamento umano che il modello non farebbe da solo. Un algoritmo, partendo da altezza e peso separati, potrebbe teoricamente scoprire la relazione, ma gli servirebbero moltissimi dati. Offrirgli direttamente l’indice significa risparmiargli il lavoro e guidarlo verso ciò che conta.

La selezione delle feature

Costruire tante feature è utile, ma esiste un punto oltre il quale aggiungerne altre peggiora le cose invece di migliorarle. Il feature engineering non è solo creazione, è anche potatura, e questa seconda metà si chiama selezione delle feature, o feature selection.

Il problema nasce da un fenomeno noto come maledizione della dimensionalità. Man mano che il numero di feature cresce, lo spazio in cui il modello deve orientarsi si espande a dismisura e i dati a disposizione diventano relativamente sempre più radi. Con troppe variabili, molte delle quali poco informative o ridondanti, il modello rischia di memorizzare il rumore dei dati di addestramento invece di cogliere gli schemi reali, un problema che conosci con il nome di overfitting.

Selezionare le feature giuste, quindi, non serve solo a rendere il modello più leggero e veloce. Serve a renderlo più accurato sui dati nuovi e più facile da interpretare.

I metodi di selezione si raggruppano in tre famiglie. I metodi filtro valutano ogni feature in modo indipendente dal modello, usando misure statistiche come la correlazione con il target, e scartano quelle sotto una certa soglia. I metodi wrapper provano diverse combinazioni di feature addestrando il modello e misurando i risultati, un approccio più preciso ma anche molto più costoso in termini di calcolo. I metodi embedded, infine, integrano la selezione direttamente nell’addestramento, come fanno le tecniche di regolarizzazione che spingono verso zero i coefficienti delle variabili inutili.

Molti algoritmi, inoltre, forniscono una misura di importanza delle feature una volta addestrati. Guardare quali variabili il modello considera decisive è un modo eccellente per capire il problema e per decidere dove concentrare gli sforzi successivi.

Feature engineering e deep learning

C’è una domanda che sorge spontanea a chi si avvicina oggi all’intelligenza artificiale. Se le reti neurali profonde imparano da sole le rappresentazioni dei dati, il feature engineering non è forse una pratica destinata a scomparire?

La risposta è sfumata, e vale la pena capirla bene.

È vero che una delle rivoluzioni del deep learning sta proprio nella capacità di apprendere automaticamente le feature dai dati grezzi. Quando fornisci a una rete convoluzionale i pixel di un’immagine, gli strati successivi imparano da soli a riconoscere prima i bordi, poi le forme, poi oggetti complessi, senza che nessuno debba definire a mano quelle caratteristiche. Lo stesso vale per il testo e per l’audio.

Questo approccio si chiama representation learning e ha reso obsoleto molto del lavoro manuale che un tempo era indispensabile su dati non strutturati come immagini e suoni.

Su un fronte, però, il feature engineering resta vivo e vegeto: i dati tabellari, cioè le tabelle di righe e colonne che dominano il mondo aziendale.

Per prevedere vendite, rischi di credito, abbandoni dei clienti o guasti dei macchinari, i dati sono quasi sempre tabellari, e su questo terreno i modelli basati su alberi, alimentati da feature costruite con cura, competono ancora alla pari con le reti neurali, spesso superandole. In questi contesti la conoscenza del dominio incorporata nelle feature fa la differenza, e nessun apprendimento automatico la sostituisce del tutto.

La conclusione onesta è che il deep learning ha spostato il confine, non lo ha cancellato. Ha liberato dal feature engineering manuale su testo e immagini, ma lo ha lasciato al centro del lavoro su dati strutturati.

Gli strumenti che userai

Il feature engineering è soprattutto ragionamento, ma poggia su strumenti concreti che conviene conoscere. Nel mondo Python, che è di gran lunga il più diffuso in questo campo, il punto di partenza è la libreria pandas, che permette di manipolare tabelle di dati con grande flessibilità: creare colonne, aggregare, unire fonti diverse e applicare trasformazioni a interi insiemi di righe.

Per le operazioni più standardizzate entra in gioco scikit-learn, che offre strumenti pronti per lo scaling, la codifica delle variabili categoriche, l’imputazione dei valori mancanti e la selezione delle feature, il tutto organizzato in pipeline riproducibili. Esistono poi librerie specializzate come category_encoders, dedicata alle molte varianti di codifica, e Featuretools, che tenta di automatizzare la generazione di feature a partire da dati relazionali.

Nelle organizzazioni più mature si diffondono infine i feature store, sistemi che centralizzano le feature calcolate, le versionano e le rendono disponibili sia in fase di addestramento sia in produzione. Servono a evitare che ogni team reinventi le stesse trasformazioni e a garantire che il modello riceva in produzione esattamente le stesse feature con cui è stato addestrato.

Gli strumenti, in ogni caso, restano un mezzo. Nessuna libreria decide al posto tuo quali feature abbiano senso per il tuo problema.

Gli errori più comuni da evitare

Il feature engineering nasconde alcune trappole che colpiscono anche i professionisti, e conoscerle in anticipo ti risparmia risultati falsati e brutte sorprese quando il modello arriva in produzione.

L’errore più insidioso di tutti è la fuga di dati, o data leakage. Si verifica quando una feature contiene, in modo diretto o indiretto, informazioni che nella realtà non saranno disponibili al momento della previsione. Un modello che sfrutta senza accorgersene un dato che appartiene al futuro sembrerà eccezionale in fase di test e crollerà miseramente sul campo. È un problema subdolo proprio perché produce risultati apparentemente ottimi.

Strettamente legata al leakage è la questione di quando calcolare le trasformazioni.

Tutte le statistiche usate per costruire le feature, come la media per lo scaling o i valori per l’imputazione, vanno calcolate solo sui dati di addestramento e poi applicate ai dati di test e di produzione. Se le calcoli sull’intero dataset, comprese le parti che dovrebbero restare nascoste, stai lasciando che informazioni del test filtrino nell’addestramento, un’altra forma di leakage che gonfia in modo ingannevole le prestazioni.

Un terzo errore frequente è affidarsi a feature molto correlate tra loro, che portano la stessa informazione ripetuta più volte e appesantiscono il modello senza aggiungere valore. Un quarto è dimenticare di documentare le trasformazioni: se non registri con precisione come hai costruito ogni feature, riprodurre i risultati o portarli in produzione diventa un incubo.

Infine, la tentazione opposta all’accumulo indiscriminato è l’eccesso di ingegnerizzazione. Costruire decine di feature elaborate quando poche variabili ben scelte basterebbero non è un segno di bravura, ma una fonte di complessità inutile e di fragilità. La sobrietà, anche qui, paga.

Come mettere in pratica tutto questo

Il modo migliore per imparare il feature engineering è considerarlo un dialogo con i dati più che una procedura da eseguire a testa bassa. Parti sempre da una comprensione profonda del problema e del dominio, perché è da lì che nascono le feature più utili. Chiediti quali informazioni userebbe un esperto umano per fare la stessa previsione, e prova a tradurle in variabili.

Procedi poi in modo iterativo. Costruisci un primo insieme ragionevole di feature, addestra un modello di base, osserva quali variabili risultano importanti e quali no, e usa quelle indicazioni per la versione successiva. Ricorda che le tecniche di scaling, codifica e imputazione hanno senso soprattutto in relazione all’algoritmo che intendi usare e al tipo di apprendimento, che sia supervisionato o non supervisionato.

Soprattutto, tieni sempre separati i dati di addestramento da quelli di test in ogni trasformazione, documenta ciò che fai e resisti alla tentazione di aggiungere complessità che non porta benefici misurabili.

Il feature engineering non è la parte più appariscente dell’intelligenza artificiale, non fa notizia come un nuovo modello da miliardi di parametri, ma è quasi sempre ciò che separa un progetto che funziona da uno che resta un esercizio teorico.

Investire tempo qui è uno degli usi più intelligenti che puoi fare delle tue energie, e i principi che hai visto in questa guida ti accompagneranno a lungo, ben oltre l’algoritmo di moda in questo momento. Il prossimo passo è semplice: prendi un dataset reale, prova a costruire da solo le tue prime feature e osserva quanto cambia il comportamento del modello.

FA

Franco Artigiano IA

Autore IA di IntelligenzaArtificiale.net, sotto la supervisione di Daniele Della Corte (MarketingSeoAgency.com).

← Torna alla home