Metriche di valutazione nel machine learning: accuracy, precision, recall e F1 spiegate bene
Accuracy, precision, recall, F1, curva ROC e AUC: guida completa alle metriche per valutare un modello di machine learning e scegliere quella giusta.

Hai addestrato il tuo primo modello di machine learning e il numero sullo schermo dice 95%. Sembra un risultato eccellente, ma cosa significa davvero? Se il modello sbaglia proprio i casi che contano, quel 95% può essere una cifra priva di valore. Valutare un modello nel modo corretto è importante quanto costruirlo, e le metriche di valutazione sono lo strumento che permette di farlo.
In questa guida completa vediamo le metriche più usate nel machine learning, spiegate con esempi concreti e senza formule inutilmente pesanti: matrice di confusione, accuracy, precision, recall, F1 score, curva ROC, AUC, ma anche le metriche per la regressione e la validazione incrociata.
L’obiettivo è darti un criterio per scegliere la metrica giusta per il tuo problema, che si tratti di un progetto di lavoro, di uno studio personale o di un modello da portare in produzione.
Perché valutare un modello non è solo questione di accuratezza
Un modello di machine learning impara dai dati, ma il suo scopo reale è comportarsi bene su dati che non ha mai visto. La valutazione serve a stimare proprio questo: quanto sarà affidabile quando verrà usato nel mondo reale. Una metrica è un numero che riassume un aspetto di quel comportamento, e ogni metrica ne illumina uno diverso, lasciandone altri al buio.
Per questo non esiste una metrica universale. Scegliere quella sbagliata significa ottimizzare il modello verso un obiettivo che non coincide con quello di business o con quello scientifico, e accorgersene soltanto quando è troppo tardi.
Il problema delle classi sbilanciate
Immagina un modello che deve riconoscere le transazioni fraudolente. Se solo una transazione su cento è una frode, un modello che dichiara sempre “transazione regolare” ottiene il 99% di accuratezza senza aver imparato nulla. È il caso classico in cui un numero alto inganna.
Lo stesso accade in medicina con le malattie rare, nella manutenzione predittiva con i guasti e nella sicurezza informatica con le intrusioni. Quando una classe è molto più rara dell’altra, serve guardare altrove.
Training, validation e test set: tre insiemi, tre ruoli
Prima di parlare di metriche è necessario chiarire su quali dati le calcoliamo. Di solito il dataset viene diviso in tre parti. Il training set serve ad addestrare il modello, il validation set a confrontare configurazioni e iperparametri, il test set a una valutazione finale onesta, da usare una sola volta alla fine.
Se calcoli le metriche sui dati di addestramento, otterrai quasi sempre risultati ottimistici, perché il modello li ha già visti. Questo fenomeno è strettamente legato all’overfitting, che trovi spiegato nel dettaglio in un nostro approfondimento.
Regola d’oro: il test set non si tocca finché le scelte non sono definitive.
La matrice di confusione: il punto di partenza
Quasi tutte le metriche di classificazione nascono da una tabella molto semplice, la matrice di confusione. Nel caso di una classificazione binaria, con una classe positiva e una negativa, confronta ciò che il modello ha previsto con ciò che era vero, e produce quattro numeri.
I veri positivi sono i casi positivi che il modello ha riconosciuto come tali. I veri negativi sono i casi negativi correttamente scartati. I falsi positivi sono casi negativi che il modello ha scambiato per positivi, i cosiddetti falsi allarmi. I falsi negativi sono casi positivi che il modello si è lasciato sfuggire, cioè le mancate rilevazioni.
Capire la differenza tra falsi positivi e falsi negativi è il vero cuore della valutazione. Il loro costo cambia moltissimo da un contesto all’altro.
Pensa a un filtro antispam. Un falso positivo significa che una mail importante finisce nella cartella spam, un danno spesso peggiore di un falso negativo, cioè una mail pubblicitaria che resta nella posta in arrivo. In uno screening medico, invece, un falso negativo vuol dire non individuare una persona malata, ed è quasi sempre l’errore più grave.
Nella matrice di confusione si legge a colpo d’occhio dove il modello sbaglia. Con più di due classi la tabella cresce, e permette di scoprire quali categorie vengono confuse tra loro, per esempio due razze di cani molto simili o due tipi di richieste in un sistema di assistenza clienti.
Accuracy, precision, recall e F1 score spiegate bene
Dai quattro numeri della matrice si ricavano le metriche più note. Vediamole una alla volta, con un esempio unico che ci accompagnerà: un modello che individua le mail di phishing in una casella di posta.
Accuracy: la percentuale di risposte corrette
L’accuracy, in italiano accuratezza, è il rapporto tra le previsioni corrette, positive e negative, e il totale dei casi. È semplice da capire e comunicare, ed è per questo la più citata.
Funziona bene quando le classi sono bilanciate e quando i due tipi di errore hanno costi simili. Appena uno di questi due presupposti cade, diventa fuorviante, come abbiamo visto con l’esempio delle frodi.
Precision: quando dice sì, quanto ha ragione
La precision, o precisione, risponde a questa domanda: tra tutti i casi che il modello ha segnalato come positivi, quanti lo erano davvero? Si calcola dividendo i veri positivi per la somma di veri positivi e falsi positivi.
Nel nostro esempio, se il modello segnala cento mail come phishing e ottanta lo sono davvero, la precision è dell’80%. Venti mail legittime sono state bloccate per errore.
Una precision alta è fondamentale quando i falsi allarmi sono costosi: bloccare un cliente innocente, aprire un’indagine inutile, scartare un candidato valido.
Recall: quanti casi positivi riesce a trovare
La recall, detta anche sensibilità o tasso di veri positivi, risponde alla domanda opposta: tra tutti i casi realmente positivi, quanti il modello è riuscito a individuarne? Si calcola dividendo i veri positivi per la somma di veri positivi e falsi negativi.
Se nella casella ci sono in tutto centocinquanta mail di phishing e il modello ne trova ottanta, la recall è di circa il 53%. Settanta mail pericolose sono passate inosservate.
Una recall alta conta quando le mancate rilevazioni sono pericolose: diagnosi mediche, sicurezza, rilevamento di guasti critici.
Il compromesso tra precision e recall
Le due metriche tirano in direzioni opposte. La maggior parte dei modelli non produce un sì o un no secco, ma una probabilità, e tu decidi la soglia sopra la quale considerare il caso positivo. Abbassando la soglia il modello segnala più casi: la recall sale perché trova più positivi, ma la precision scende perché aumentano i falsi allarmi. Alzando la soglia succede il contrario.
Non esiste una soglia perfetta in assoluto. Esiste la soglia migliore per il tuo problema, quella che bilancia i costi reali dei due errori.
F1 score: una sintesi equilibrata
Quando servono entrambe le qualità, si usa l’F1 score, la media armonica di precision e recall. A differenza della media aritmetica, la media armonica punisce gli squilibri: un modello con precision del 100% e recall del 2% non ottiene un buon F1, ma un valore bassissimo.
Se vuoi dare più peso alla recall o alla precision, puoi usare la generalizzazione F-beta. Con un beta maggiore di uno conta di più la recall, con un beta minore di uno conta di più la precision.
Attenzione però: l’F1 è un riassunto comodo, ma nasconde il dettaglio. Guardalo sempre insieme a precision e recall separate.
Curva ROC, AUC e curva precision-recall
Finora abbiamo valutato il modello con una soglia fissata. Spesso però vuoi capire come si comporta al variare della soglia, e confrontare più modelli senza scegliere subito un punto di lavoro. Qui entrano in gioco le curve.
La curva ROC
La curva ROC (Receiver Operating Characteristic) mostra, per ogni possibile soglia, il tasso di veri positivi, cioè la recall, rispetto al tasso di falsi positivi. Un modello che tira a indovinare produce una linea diagonale. Più la curva si avvicina all’angolo in alto a sinistra del grafico, migliore è il modello.
Il suo nome viene dall’ambito dei radar, dove serviva a valutare la capacità di distinguere un segnale dal rumore. Oggi è uno standard in moltissimi campi.
L’AUC: un solo numero per riassumere la curva
L’AUC (Area Under the Curve) è l’area sotto la curva ROC e varia da zero a uno. Un valore di 0,5 equivale al caso, un valore vicino a uno indica un modello che separa bene le due classi. Ha una lettura intuitiva: rappresenta la probabilità che il modello assegni un punteggio più alto a un esempio positivo scelto a caso rispetto a uno negativo scelto a caso.
L’AUC ha il vantaggio di non dipendere dalla soglia, ma lo svantaggio di poter apparire troppo rassicurante quando le classi sono molto sbilanciate.
La curva precision-recall
Con classi molto sbilanciate, la curva precision-recall è spesso più informativa della ROC. Mostra come cambia la precision al crescere della recall, concentrandosi sulla classe positiva, che è quella che interessa. In problemi come le frodi o le malattie rare è la scelta più onesta.
Metriche per la regressione
Quando il modello deve prevedere un numero e non una categoria, come il prezzo di una casa, le vendite del mese prossimo o il tempo di consegna, servono metriche diverse. L’idea di fondo è misurare la distanza tra il valore previsto e quello reale.
MAE, MSE e RMSE
Il MAE (Mean Absolute Error) è la media degli errori in valore assoluto. È facile da interpretare perché si esprime nella stessa unità del dato: se prevedi prezzi in euro e il MAE è 12.000, in media sbagli di circa dodicimila euro.
L’MSE (Mean Squared Error) eleva gli errori al quadrato prima di farne la media. In questo modo gli errori grandi pesano molto più di quelli piccoli. L’RMSE, la radice quadrata dell’MSE, riporta il risultato nell’unità originale mantenendo questa sensibilità agli errori grossi.
Se nel tuo problema pochi errori enormi sono molto più gravi di tanti errori piccoli, preferisci RMSE. Se vuoi una misura robusta ai valori anomali, preferisci MAE.
R quadro e le sue trappole
Il coefficiente di determinazione, noto come R quadro, indica quale quota della variabilità dei dati viene spiegata dal modello. Vale uno per un modello perfetto e zero per uno che prevede sempre la media. Può diventare negativo se il modello è peggiore della semplice media.
È molto popolare, ma va usato con cautela: aggiungere variabili lo fa quasi sempre salire, anche quando non servono. Per confrontare modelli con un numero diverso di variabili esiste la versione corretta, detta R quadro aggiustato. Se vuoi ripassare le basi dei modelli di previsione, leggi la nostra guida alla regressione lineare e logistica.
La validazione incrociata: misurare con più affidabilità
Dividere i dati una sola volta in training e test ha un limite: il risultato dipende da come è avvenuta quella divisione. Con un campione piccolo, una suddivisione fortunata o sfortunata può cambiare molto il punteggio.
La validazione incrociata, in inglese cross-validation, risolve il problema. Nella versione più comune, la k-fold, i dati vengono divisi in k parti, per esempio cinque. Il modello viene addestrato cinque volte, ogni volta usando quattro parti per l’addestramento e la quinta per la valutazione, finché ogni parte ha fatto da test una volta. Il risultato finale è la media dei cinque punteggi, accompagnata dalla loro variabilità.
Quella variabilità è un’informazione preziosa: se i cinque punteggi sono molto diversi tra loro, il modello è instabile e dovresti fidarti meno del valore medio.
Con classi sbilanciate si usa la versione stratificata, che mantiene in ogni parte la stessa proporzione di classi del dataset originale. Con dati temporali, invece, non si possono mescolare casualmente le righe: serve una validazione che rispetti l’ordine del tempo, addestrando sul passato e valutando sul futuro, altrimenti il modello “vede” informazioni che nella realtà non avrebbe.
Valutare modelli di linguaggio e modelli generativi
Le metriche classiche funzionano bene quando esiste una risposta giusta e una sbagliata. Con i modelli generativi, come i grandi modelli di linguaggio, la valutazione è più complessa, perché una stessa domanda ammette molte risposte valide.
Per compiti come la traduzione o il riassunto si sono usate a lungo metriche che confrontano il testo generato con testi di riferimento, come BLEU e ROUGE. Misurano la sovrapposizione di parole e sequenze, ma non colgono bene il significato. Per questo oggi si affiancano benchmark di conoscenza e ragionamento, valutazioni con giudizio umano e valutazioni in cui un altro modello fa da giudice.
Il principio resta lo stesso: definisci cosa significa “buono” per il tuo caso d’uso, costruisci un insieme di esempi rappresentativo e misura in modo ripetibile. Un benchmark pubblico dice quanto un modello è bravo in generale, non quanto sarà bravo nel tuo flusso di lavoro.
Come scegliere la metrica giusta: alcuni esempi
La scelta parte sempre da una domanda: quale errore mi costa di più? Ecco alcuni scenari tipici in cui il ragionamento cambia.
- Screening medico o rilevamento di guasti critici: privilegia la recall, perché non individuare un caso reale è l’errore più grave, accettando qualche falso allarme in più.
- Filtro antispam o sistema di raccomandazione di contenuti sensibili: privilegia la precision, perché un falso positivo danneggia l’esperienza dell’utente.
- Rilevamento di frodi con pochissimi casi positivi: usa curva precision-recall e F1, evitando l’accuracy semplice.
- Previsione di vendite o prezzi: usa MAE per un errore medio comprensibile, RMSE se gli errori grandi sono particolarmente costosi.
- Confronto iniziale tra molti modelli di classificazione: usa AUC per un giudizio indipendente dalla soglia, poi scegli la soglia con i costi reali.
In molti progetti conviene definire una metrica di business, per esempio il costo medio degli errori in euro, e usarla accanto alle metriche tecniche. Un modello con F1 leggermente inferiore può essere preferibile se risparmia davvero denaro o tempo.
Errori comuni nella valutazione dei modelli
Anche chi conosce bene le metriche cade spesso in qualche trappola. Conoscerle in anticipo ti fa risparmiare molte brutte sorprese.
Data leakage: quando il modello “bara” senza volerlo
Il data leakage, o perdita di dati, avviene quando nel training finiscono informazioni che non sarebbero disponibili al momento della previsione. Può essere una colonna che contiene indirettamente la risposta, oppure una normalizzazione calcolata sull’intero dataset prima della divisione. Il risultato sono metriche eccellenti in laboratorio e un modello deludente in produzione.
Una buona preparazione dei dati aiuta a evitarlo: se vuoi approfondire, dai un’occhiata alla guida sul feature engineering.
Ottimizzare sul test set
Se provi decine di modelli e scegli quello che va meglio sul test set, il test set diventa di fatto un secondo validation set e la sua stima non è più imparziale. Tieni da parte un insieme finale mai usato per prendere decisioni.
Guardare un solo numero
Un unico valore riassuntivo nasconde molto. Accompagna sempre la metrica principale con la matrice di confusione, con le prestazioni per sottogruppo e con alcuni esempi concreti di errori. Spesso è lì che scopri che il modello sbaglia sistematicamente su una categoria di utenti o di casi.
Dimenticare che i dati cambiano
Le metriche calcolate oggi descrivono il modello su dati di oggi. Col tempo i comportamenti degli utenti, il mercato e i sensori cambiano, e le prestazioni peggiorano senza che nessuno tocchi il codice. È il motivo per cui nei sistemi reali le metriche si monitorano in continuo, come spieghiamo nella guida a MLOps.
Un esempio pratico con Python e scikit-learn
Se usi Python, la libreria scikit-learn contiene tutto quello che serve in un modulo dedicato alle metriche. Dopo aver addestrato un classificatore e ottenuto le previsioni sul test set, la funzione confusion_matrix restituisce la matrice, mentre classification_report stampa in un colpo solo precision, recall e F1 per ciascuna classe.
Per le curve usi roc_curve e roc_auc_score, che richiedono le probabilità previste e non le classi già decise, e precision_recall_curve per l’analogo grafico sulla classe positiva. Per la validazione incrociata c’è cross_val_score, a cui indichi il modello, i dati, il numero di parti e la metrica da calcolare, per esempio f1 oppure roc_auc.
Se non hai ancora costruito un modello da valutare, parti dal nostro tutorial per creare il tuo primo modello di machine learning in Python e poi applica le metriche viste qui. Un ottimo esercizio è addestrare un albero decisionale e una foresta casuale, come descritto nella guida agli alberi decisionali e random forest, e confrontarli con tutte le metriche.
Una buona abitudine è partire sempre da un modello di riferimento molto semplice, per esempio uno che prevede sempre la classe più frequente. Ti dà un punto di confronto minimo: se il tuo modello complesso non lo batte con margine, c’è qualcosa da rivedere.
Domande frequenti sulle metriche di valutazione
Quale metrica è la migliore in assoluto?
Nessuna. La migliore è quella che riflette il costo reale degli errori nel tuo problema. Nel dubbio, parti dalla matrice di confusione e ragiona su quali errori ti fanno più male.
Un’accuracy del 99% è sempre un buon risultato?
No. Se una classe rappresenta il 99% dei casi, un modello inutile può raggiungere lo stesso punteggio. Confronta sempre il risultato con un modello banale di riferimento e guarda precision e recall della classe rara.
Meglio precision o recall?
Dipende dal costo dei due errori. Se i falsi allarmi sono i più dannosi, punta sulla precision. Se non puoi permetterti di lasciarti sfuggire casi reali, punta sulla recall. Se servono entrambe, usa l’F1 o regola la soglia.
Ha senso valutare un modello di intelligenza artificiale generativa con queste metriche?
Solo in parte. Puoi usarle quando il compito si riduce a una classificazione, come etichettare un testo o estrarre un’informazione. Per la generazione libera servono valutazioni su misura, con esempi rappresentativi e giudizi umani o automatici.
Conclusioni
Le metriche di valutazione sono il linguaggio con cui un modello di machine learning dice quanto vale. Imparare a leggerle correttamente ti protegge dai numeri rassicuranti ma ingannevoli, e ti permette di prendere decisioni basate sui costi reali degli errori.
Il percorso consigliato è semplice: parti dalla matrice di confusione, scegli le metriche in base a ciò che conta nel tuo contesto, valida con la cross-validation, tieni intatto il test set e monitora il modello nel tempo.
Adesso tocca a te. Prendi un modello che hai già costruito, calcola precision, recall e F1 invece della sola accuracy e osserva cosa cambia. Se la lettura ti è stata utile, esplora le altre guide di machine learning del blog e continua a costruire le tue competenze passo dopo passo.