Blog / Prodotto

Perché precisione e richiamo contano così tanto

Zubin Pratap 
Una griglia 2x2 di quadrati: tre campiture ad acquerello verde salvia e grigio chiaro e un contorno nero

Due modi di sbagliare

La differenza tra precisione e richiamo è ovvia se valuti modelli ML per lavoro. Per tutti gli altri, non molto.

Un esempio aiuta a capirla.

Immagina di costruire una pipeline RAG e di cercare un recupero molto affidabile dal tuo archivio vettoriale. Una delle prime domande è quanti blocchi recuperare, il tuo top_k.

Se ne recuperi 3, saranno probabilmente tutti molto pertinenti. Ma potresti perdere blocchi rilevanti al quarto o al decimo posto. Parte del materiale utile resta fuori.

Potresti aumentare top_k a 50. Così recuperi tutto ciò che è pertinente, ma anche molto materiale irrilevante. Questo aumenta la probabilità che l’LLM restituisca informazioni “rumorose” con elementi non pertinenti, anche se hai recuperato tutti i blocchi utili dall’archivio.

È un compromesso tra precisione e richiamo, o recall.

Il recupero dei primi 3 ha alta precisione perché i risultati sono molto pertinenti. Ma ha basso richiamo perché ne hai persi altri.

Il recupero dei primi 50 ha alto richiamo, perché hai preso tutto, ma precisione inferiore, perché hai preso anche molti contenuti inutili.

Precisione e richiamo compaiono ovunque un sistema debba rilevare qualcosa. Il compito è binario: rilevare X, vero, oppure no, falso. Nel farlo il sistema può avere ragione o sbagliare.

Approfondiremo questo aspetto parlando della matrice di confusione.

Sì, può confondere. Conviene quindi capire prima perché usare precisione e richiamo. Misurare solo l’accuratezza può ingannare.

Perché l’accuratezza da sola inganna

Supponi che un rilevatore veda 100 esempi. Dieci contengono l’evento da individuare. Il rilevatore risponde però “nessun evento” tutte le 100 volte. Ottiene il 90% sul test perché è corretto nel 90% dei casi senza evento.

Ma è corretto nello 0% degli eventi presenti che avrebbe dovuto rilevare.

Pensa a una guardia all’ingresso di un edificio. Se solo 1 visitatore su 100 è una minaccia, una guardia che lascia entrare tutti è “corretta al 99%” nel far entrare le persone giuste. Se invece la misuri sulla capacità di tenere fuori le persone sbagliate, è corretta allo 0%: il suo compito è individuare quell’unico visitatore pericoloso.

Quando un dataset è fortemente sbilanciato verso un esito, un modello che indovina casualmente può quindi ottenere un punteggio alto per caso e sembrare accurato sulla carta. Ma fallisce nel prevedere ciò che dovrebbe.

Identifica l’evento

Trovo utile non analizzare precisione e richiamo finché non è definito il compito di rilevamento del sistema: queste metriche dipendono dal lavoro da svolgere.

Parti dal caso vero positivo.

Per un filtro antispam, l’evento è “questa email è spam”. Per un rilevatore di fumo, è “c’è fumo”.

Questo è l’evento da segnalare. Fin qui è semplice.

Ma se il sistema ha due compiti? Per esempio, in un modello IA di trascrizione vocale che gestisce anche il rilevamento automatico dei turni, l’evento può essere “l’utente ha iniziato a parlare” oppure “l’utente ha smesso di parlare”. Smettere di parlare non equivale ad aver finito il turno. Ogni evento richiede punteggi propri di precisione e richiamo.

Un positivo significa che il sistema dichiara avvenuto l’evento. È l’etichetta di un lato del compito, non un giudizio di valore.

Il parlato si è verificato Il parlato non si è verificato
Il sistema segnala parlato Vero positivo (TP) Falso positivo (FP)
Il sistema non segnala parlato Falso negativo (FN) Vero negativo (TN)

Questa griglia è la matrice di confusione. Mappa ogni possibile esito di rilevamento per un evento: ciò che è realmente accaduto rispetto a ciò che il sistema ha dichiarato.

Prima di scegliere una metrica, chiediti:

  • Quale evento deve rilevare il sistema?
  • Cosa conta come attivazione del sistema?
  • Come si presenta un falso positivo?
  • Come si presenta un falso negativo?

Parti dal denominatore

Partire dal denominatore mi ha aiutato a capire la differenza tra precisione e richiamo.

Precisione

Il denominatore della precisione comprende tutto ciò che il modello ha previsto come positivo, previsioni corrette e sbagliate: veri positivi più falsi positivi.

Il numeratore conta quante previsioni erano corrette, cioè i veri positivi.

La formula è questa:

precision = true positives / (true positives + false positives)

Considera un evento “inizio del parlato”. Ci sono 100 campioni audio. Il filtro ne segnala 80 come inizi del parlato, ma solo 60 contenevano davvero quell’evento.

I veri positivi sono quindi 60. I falsi positivi sono 80 - 60 = 20. Otteniamo:

precision = 60 / (60 + 20) = 75%

Una precisione bassa identifica erroneamente altri suoni, o il silenzio, come parlato.

La precisione è dunque il rapporto tra ciò che il modello ha azzeccato e la somma di ciò che ha azzeccato e ciò che ha sbagliato.

Richiamo

Il denominatore del richiamo è il numero totale di eventi positivi realmente presenti, trovati e persi: veri positivi più falsi negativi. Include tutti gli eventi reali, che il modello li abbia trovati o no.

Il numeratore è lo stesso della precisione: i veri positivi.

recall = true positives / (true positives + false negatives)

Il richiamo è quindi il rapporto tra ciò che il modello ha azzeccato e la somma di ciò che ha azzeccato e ciò che avrebbe dovuto rilevare, cioè ciò che ha escluso erroneamente.

Nello stesso esempio, i veri positivi sono 60. I falsi negativi sono 0 perché il modello ha trovato tutti gli eventi e anche altri casi.

Otteniamo:

recall = 60 / (60 + 0) = 100%

Questo non mostra bene il valore del richiamo, quindi cambiamo esempio. Ci sono 100 campioni audio. Il modello ne segnala 50 come inizi del parlato, ma 60 campioni contenevano effettivamente quell’evento.

I veri positivi sono 50 e i falsi negativi sono 60 - 50 = 10. Sono 10 eventi di inizio del parlato persi dal modello.

Otteniamo:

recall = 50 / (50 + 10) = 83%
precision = 50 / (50 + 0) = 100%

In questo nuovo esempio la precisione è del 100% perché i falsi positivi sono zero.

Queste metriche sono diverse dalla semplice accuratezza:

accuracy = (true positives + true negatives) / all samples

Usa l’accuratezza quando ogni decisione ha un costo simile e il set di valutazione rappresenta la produzione. Ma quando l’evento cercato è raro o i due errori hanno costi diversi, riportare i risultati rispetto alla matrice di confusione cambia la valutazione delle prestazioni.

Se vuoi approfondire formule matematiche e derivazioni, ecco la voce completa di Wikipedia.

Il compromesso tra precisione e richiamo

Gli esempi mostrano un compromesso reale. Quando spingi una metrica verso l’alto, l’altra tende a scendere.

L’esempio del recupero spiega perché: recuperare più documenti aumenta il richiamo ma riduce la precisione. Recuperarne meno aumenta la precisione ma riduce il richiamo.

In pratica, la maggior parte dei modelli produce un punteggio di confidenza per i rilevamenti: un numero tra 0 e 1 che rappresenta quanto il modello è sicuro. La soglia è il limite che scegli, per esempio “segnala come positivo tutto ciò che supera 0.7”.

Funziona come la regolazione della sensibilità di un apparecchio acustico. Se la alzi, senti tutte le conversazioni, ma anche il condizionatore, il traffico e la TV del vicino. Se la abbassi, senti solo il parlato forte e chiaro, ma perdi le voci basse.

Alzando la soglia il modello segnala meno falsi positivi. La precisione aumenta.

Abbassandola segnala correttamente più casi, riducendo i falsi negativi. Il richiamo aumenta.

I modelli sulla frontiera di Pareto, come Ink-2 di Cartesia, bilanciano questi compromessi in modo ottimale.

Applicazione all’IA vocale

L’IA vocale comprende diversi compiti di rilevamento e previsione. Non valutarli tutti con un solo numero di accuratezza.

Il rilevamento dell’attività vocale, VAD, determina se una finestra audio contiene parlato. Un set di test può contenere molti più frame di silenzio che di parlato. Prevedere sempre silenzio sembra accurato, ma perde tutto il parlato. Misura precisione e richiamo del parlato. Riporta quanto spesso il rilevatore lo segnala correttamente e quanto spesso lo perde.

Il rilevamento dei turni decide quando un parlante prende o cede la parola. Gli eventi iniziali e finali richiedono metriche separate. Qui usiamo due eventi di turno ASR di Ink-2.

turn_start: l’utente ha iniziato a parlare?

L’evento cercato è “l’utente ha iniziato a parlare”. Il sistema si attiva quando emette turn_start.

  • Falso positivo: emette turn_start per rumore di tastiera, parlato di fondo, rientro nel microfono o audio dell’agente stesso.
  • Falso negativo: l’utente inizia a parlare e il sistema non lo rileva.

Una bassa precisione di turn_start fa reagire il sistema ad audio che non proviene dall’utente. Se l’evento interrompe la riproduzione, i falsi positivi provocano false interruzioni.

Un basso richiamo di turn_start può impedire al parlato reale di raggiungere il resto della pipeline.

turn_end: il parlante ha finito?

L’evento cercato è “l’utente ha finito il turno”. Il sistema si attiva quando emette turn_end e l’applicazione può rispondere.

  • Falso positivo: emette turn_end mentre l’utente intende continuare.
  • Falso negativo: l’utente ha finito, ma il sistema continua ad aspettare.

Una bassa precisione di turn_end può interrompere l’utente dopo una pausa per pensare, correggere una frase o respirare. Un basso richiamo crea silenzio dopo che l’utente ha finito.

Per entrambi gli eventi, definisci cosa conta come corrispondenza tra un timestamp previsto e uno annotato. Definisci il parlante di riferimento, come annotare sovrapposizioni e audio di fondo e cosa significa “finito” prima di calcolare i punteggi.

Scegli la metrica in base alla modalità di errore

  • Riporta separatamente precisione e richiamo di turn_start e turn_end.
  • Scegli la soglia in base all’errore più costoso nel prodotto.
  • Esamina esempi di falsi positivi e falsi negativi, oltre ai punteggi aggregati.
  • Usa l’accuratezza come contesto, non come intera valutazione.

La prossima volta che un modello dichiara un’accuratezza del 90%, chiedi cosa ha rilevato, quanto spesso si verificava quell’evento e quali errori nasconde il punteggio.