logo

Curva di richiamo di precisione | M.L

Esistono numerosi modi per valutare le prestazioni di un classificatore. In questo articolo, introduciamo la curva di richiamo di precisione ed esaminiamo ulteriormente la differenza tra due metodi di reporting delle prestazioni popolari: curva di richiamo di precisione (PR) e Caratteristiche operative del ricevitore (ROC) Curva. La curva ROC è già discussa nel articolo . Cerchiamo di capire brevemente cos'è una curva Precision-Recall.

Cos'è Precisione e Richiamo?

Precisione

  • Il rapporto tra le osservazioni positive previste correttamente e tutti i positivi previsti è noto come precisione.
  • Misura quanto bene il modello prevede i risultati positivi.
  • La formula di precisione è:

Precision = frac{True Positives}{True Positives + False Positives}



  • La precisione riguarda la qualità delle previsioni positive. Un'elevata precisione indica che il modello ha un basso tasso di falsi positivi.

Richiamare

  • Il rapporto tra le osservazioni positive previste correttamente e il numero totale di osservazioni positive effettive è noto come ricordo.
  • Misura la capacità del modello di catturare ogni istanza pertinente.
  • Il richiamo viene calcolato utilizzando questa formula:

Precision = frac{True Positives}{True Positives + False Negatives}

confrontare con Java
  • Il richiamo riguarda la quantità di istanze rilevanti catturate dal modello. Un richiamo elevato indica che il modello ha un basso tasso di falsi negativi.

In termini di interpretazione empirica, una matrice di confusione comprendente quattro termini essenziali è lo strumento più utile per comprendere precisione e richiamo:

  • True Positive (TP): il numero di istanze di classi positive identificate accuratamente
  • Falso positivo (FP): il numero di istanze di classi negative erroneamente identificate come istanze di classi positive è noto come falso positivo (FP).
  • Vero negativo (TN): il numero di istanze di classi negative identificate accuratamente
  • False negative (FN): conteggio di istanze di classi positive erroneamente classificate come istanze di classi negative (false negative o FN)

Curva di precisione-richiamo (PR) nell'apprendimento automatico

Precisione è la proporzione di corretto classificazioni positive (veri positivi) divise per il numero totale di previsto classificazioni positive effettuate (vero positivo + falso positivo). Richiamare è la proporzione di corretto classificazioni positive (veri positivi) divise per il numero totale dei veramente classificazioni positive (vero positivo + falso negativo).



Una curva PR è semplicemente un grafico con valori di precisione sull'asse y e valori di richiamo sull'asse x. In altre parole, la curva PR contienefrac{TP}{TP+FP} sull'asse y efrac{TP}{TP+FN} sull'asse x.

  • È importante notare che la precisione è anche chiamata valore predittivo positivo (PPV).
  • Il richiamo è anche chiamato sensibilità, tasso di successo o tasso di vero positivo (TPR).

La figura seguente mostra un confronto tra le curve PR e ROC del campione.

Interpretazione di una curva di richiamo di precisione

È auspicabile che l'algoritmo abbia sia un'elevata precisione che un elevato richiamo. Tuttavia, la maggior parte degli algoritmi di machine learning spesso implica un compromesso tra i due. Una buona curva PR è maggiore AUC (area sotto la curva) . Nella figura sopra, il classificatore corrispondente alla linea blu ha prestazioni migliori rispetto al classificatore corrispondente alla linea verde. È importante notare che il classificatore che ha un AUC più alto su Curva ROC avrà sempre un’AUC più alta anche sulla curva PR. Consideriamo un algoritmo che classifica se un documento appartiene o meno alla categoria Notizie sportive. Supponiamo che ci siano 12 documenti, con le seguenti etichette di verità di base (effettive) e di classi di output del classificatore.



ID documentoRealtà di baseUscita del classificatore
D1Gli sportGli sport
D2Gli sportGli sport
D3Non SportGli sport
D4Gli sportNon Sport
D5Non SportNon Sport
D6Gli sportNon Sport
D7Non SportGli sport
D8Non SportNon Sport
D9Non SportNon Sport
D10Gli sportGli sport
D11Gli sportGli sport
D12Gli sportNon Sport

Ora troviamo i valori TP, TN, FP e FN.

Usiamo un esempio che coinvolge documenti classificati come Sport o Non sport per spiegare meglio le definizioni di Veri Positivi (TP), Veri Negativi (TN), Falsi Positivi (FP) e Falsi Negativi (FN) nel contesto della classificazione:

Veri positivi (TP): Documenti accuratamente classificati come Sport e che in realtà riguardavano lo sport. I documenti D1, D2, D10 e D11 in questo scenario sono istanze di TP.

Veri negativi (TN): I veri negativi sono quei casi in cui il documento è stato opportunamente etichettato come Non sportivo anche se non aveva nulla a che fare con lo sport. In questo caso, la TN è dimostrata dai documenti D5, D8 e D9.

Falsi positivi (FP): Documenti erroneamente classificati come Sport anche se non avevano nulla a che fare con lo sport. Ecco alcuni esempi di FP, documenti D3 e D7.

Falsi negativi (FN): Esempi di documenti erroneamente etichettati come Non sportivi, ma in realtà riguardavano lo sport. I documenti D4, D6 e D12 in questo caso sono esempi di FN.

è

Dati questi conteggi: Città =4, TN =3, FP =2, FN =3

Infine, precisione e richiamo vengono calcolati come segue:

Precision = frac{TP}{TP+FP} = frac{4}{6} = frac{2}{3}

Recall = frac{TP}{TP+FN} = frac{4}{7}

Ne consegue che il richiamo è 4/7 quando la precisione è 2/3. In altre parole, di tutti i casi che si prevedeva fossero positivi, due terzi sono stati accuratamente classificati (precisione) e di tutti i casi che erano effettivamente positivi, il modello è stato in grado di catturarne quattro settimi (richiamo).

Impostando soglie diverse, otteniamo molteplici coppie di richiamo di tale precisione. Tracciando più di queste coppie PR con un valore compreso tra 0 e 1, otteniamo una curva PR.

Necessità di una curva PR quando esiste la curva ROC?

La curva PR è particolarmente utile nel riportare i risultati del recupero delle informazioni.
Il recupero delle informazioni implica la ricerca in un pool di documenti per trovare quelli rilevanti per una particolare query dell'utente. Ad esempio, supponiamo che l'utente inserisca la query di ricerca Pink Elephants. Il motore di ricerca sfoglia milioni di documenti (utilizzando alcuni algoritmi ottimizzati) per recuperare una manciata di documenti rilevanti. Possiamo quindi tranquillamente supporre che il n. di documenti rilevanti sarà molto inferiore rispetto al n. di documenti non rilevanti.

In questo scenario,

  • TP = N. di documenti recuperati rilevanti (buoni risultati).
  • FP = N. di documenti recuperati non pertinenti (risultati di ricerca fasulli).
  • TN = N. di documenti non recuperati che non sono rilevanti.
  • FN = N. di documenti non recuperati che sono rilevanti (documenti buoni che abbiamo perso).

La curva ROC è un grafico contenente Recall = TPR =frac{TP}{TP+FN}sull'asse x e FPR =frac{FP}{FP+TN}sull'asse y. Dal momento che il n. dei veri negativi, cioè documenti non recuperati che non sono rilevanti, è un numero così elevato che l'FPR diventa insignificantemente piccolo.

Inoltre, l'FPR non ci aiuta a valutare bene un sistema di recupero perché vogliamo concentrarci maggiormente sui documenti recuperati e non su quelli non recuperati. La curva PR aiuta a risolvere questo problema. La curva PR ha il valore di richiamo (TPR) sull'asse x e precisione =frac{TP}{TP+FP}sull'asse y. La precisione aiuta a evidenziare quanto sono rilevanti i risultati recuperati , che è più importante quando si giudica un sistema IR. Pertanto, una curva PR è spesso più comune in caso di problemi che coinvolgono il recupero delle informazioni.

Quando utilizzare la ROC rispetto alle curve di richiamo di precisione?

ROC (Caratteristica operativa del ricevitore) sono adatte quando la distribuzione delle classi è bilanciata e i falsi positivi e i falsi negativi hanno conseguenze simili. Descrivono il compromesso tra sensibilità e specificità. Al contrario, le curve Precision-Recall sono preferibili quando si ha a che fare con set di dati sbilanciati, concentrandosi su prestazioni di previsione di classe positive.

Precision-Recall fornisce approfondimenti sulla capacità del modello di classificare correttamente le istanze positive. La scelta tra ROC e Precision-Recall dipende dalle esigenze specifiche del problema, sottolineando l'importanza di comprendere la distribuzione dei dati e le conseguenze dei diversi tipi di errori.

Implementazione del codice di base per la curva di richiamo di precisione

Importazione delle librerie necessarie

Queste righe di codice importano il file Librerie Python e moduli necessari per generare una curva di richiamo di precisione con sci-kit-impara e visualizzare i risultati con Matplotlib . Matplotlib è una popolare libreria di grafici Python e pyplot fornisce un'interfaccia semplice per creare vari tipi di grafici e grafici. Regressione logistica è un popolare algoritmo di classificazione per attività di classificazione binaria e multiclasse. La curva di richiamo di precisione e l'AUC sono parametri di valutazione popolari per classificazione binaria problemi, in particolare quando si ha a che fare con set di dati sbilanciati.

Python3 import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import precision_recall_curve, auc>

Set di dati utilizzato

Questo codice genera un set di dati sintetico per un problema di classificazione binaria utilizzando la funzione 'make_classification' di sci-kit-learn.

Python3 # Generate a synthetic dataset X, y = make_classification( n_samples=1000, n_features=20, n_classes=2, random_state=42)>

Allena e prova la divisione

IL train_test_split La funzione in scikit-learn viene utilizzata in questo frammento di codice per dividere il set di dati sintetici precedentemente generato (X e y) in set di training e test. Questa suddivisione è un passaggio fondamentale nella valutazione dei modelli di machine learning. Il modello verrà addestrato sui dati X_train e y_train prima di essere testato sui dati X_test e y_test per vedere le sue prestazioni su campioni invisibili. La funzione train_test_split separa i set di training e test, garantendo che le prestazioni del modello riflettano la sua generalizzazione a dati nuovi e mai visti prima.

Python3 # Split the dataset into training and testing sets X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42)>

Costruzione di modelli

Qui stiamo utilizzando la regressione logistica per addestrare il modello sul set di dati di addestramento. Un algoritmo popolare per la classificazione binaria, la regressione logistica è implementata dalla classe sci-kit-learn LogisticRegression.

PD unire
Python3 # Train a logistic regression model (you can replace this with your own classifier) model = LogisticRegression() model.fit(X_train, y_train)>

Previsione del modello

Questi calcoli solitamente forniscono valori di precisione e richiamo per varie soglie decisionali, che è possibile utilizzare per disegnare una curva di richiamo precisione o esaminare l'importanza relativa della precisione e del richiamo in vari momenti nel tempo. E calcolando il Area sotto la curva (AUC) per la curva di richiamo di precisione.

Python3 # Predict probabilities for positive class y_scores = model.predict_proba(X_test)[:, 1] # Calculate precision and recall precision, recall, thresholds = precision_recall_curve(y_test, y_scores) # Calculate Area Under the Curve (AUC) for precision-recall curve auc_score = auc(recall, precision)>

Tracciare la curva PR

Questo blocco di codice fornisce un metodo standard per visualizzare la curva di precisione-richiamo e consente di valutare il compromesso tra precisione e richiamo a varie soglie decisionali. La prestazione complessiva del modello sulla curva di precisione-richiamo è riassunta dal punteggio AUC mostrato nella legenda.

Python3 # Plot precision-recall curve plt.figure(figsize=(8, 6)) plt.plot(recall, precision, label=f'Precision-Recall Curve (AUC = {auc_score:.2f})') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.legend() plt.show()>

Produzione :


Precision-Recall-Curve-Geeksforgeeks

Curva di richiamo di precisione


Domande frequenti (FAQ)

D. Cos'è la precisione?

Il rapporto tra le osservazioni positive previste con precisione e il numero totale di positivi previsti è noto come precisione. Misura quanto bene il modello prevede i risultati positivi. Quella che segue è la formula di precisione:

Precision = frac{True Positives}{True Positives + False Positives}

D. Cos'è il richiamo?

Il ricordo è il rapporto tra le osservazioni positive previste correttamente e il numero totale di positivi effettivi. Viene anche definito sensibilità o tasso vero positivo. Valuta la capacità del modello di catturare ogni istanza pertinente. Il richiamo viene calcolato utilizzando la seguente formula:

Precision = frac{True Positives}{True Positives + False Negatives}

D. Perché abbiamo bisogno di precisione e richiamo?

Per valutare le prestazioni di un classificatore nei problemi di classificazione binaria e multiclasse, vengono utilizzate due metriche di valutazione: precisione e richiamo. L'accuratezza della previsione positiva viene misurata dalla precisione e la completezza della previsione positiva viene misurata dal richiamo.

come controllare le dimensioni dello schermo del monitor

D. Qual è il compromesso tra richiamo e precisione?

Ricordo e precisione sono spesso compromessi. Il ricordo può risentirne con l'aumentare della precisione e viceversa. Modificando la barra per identificare un’istanza positiva, questo compromesso può essere gestito. Al contrario, una soglia più bassa si traduce in un richiamo inferiore ma in una maggiore precisione. La decisione tra richiamo e precisione si basa sui dettagli del problema dato.

D. Cos'è il punteggio F1 e come si relaziona con precisione e richiamo?

La media armonica di richiamo e precisione è nota come punteggio F1. Offre una misurazione corretta che tiene conto sia dei falsi positivi che dei falsi negativi. Il punteggio F1 viene calcolato utilizzando la seguente formula:

F1-Score = frac{2 imes Precision imes Recall}{Precision + Recall}

Il punteggio F1 è particolarmente utile quando precisione e richiamo non sono bilanciati e si desidera un equilibrio tra i due.