Machine Learning - Metriche delle prestazioni
Esistono varie metriche che possiamo utilizzare per valutare le prestazioni degli algoritmi ML, della classificazione e degli algoritmi di regressione. Dobbiamo scegliere con attenzione le metriche per valutare le prestazioni di ML perché:
Il modo in cui vengono misurate e confrontate le prestazioni degli algoritmi di machine learning dipenderà interamente dalla metrica scelta.
Il modo in cui ponderate l'importanza delle varie caratteristiche nel risultato sarà completamente influenzato dalla metrica scelta.
Metriche delle prestazioni per problemi di classificazione
Abbiamo discusso la classificazione e i suoi algoritmi nei capitoli precedenti. Qui, discuteremo varie metriche delle prestazioni che possono essere utilizzate per valutare le previsioni per i problemi di classificazione.
Matrice di confusione
È il modo più semplice per misurare le prestazioni di un problema di classificazione in cui l'output può essere di due o più tipi di classi. Una matrice di confusione non è altro che una tabella con due dimensioni. "Actual" e "Predicted" e inoltre, entrambe le dimensioni hanno "True Positives (TP)", "True Negatives (TN)", "False Positives (FP)", "False Negatives (FN)" come mostrato di seguito -
La spiegazione dei termini associati alla matrice di confusione è la seguente:
True Positives (TP) - È il caso in cui sia la classe effettiva che la classe prevista del punto dati sono 1.
True Negatives (TN) - È il caso in cui sia la classe effettiva che la classe prevista del punto dati sono 0.
False Positives (FP) - È il caso in cui la classe effettiva del punto dati è 0 e la classe prevista del punto dati è 1.
False Negatives (FN) - È il caso in cui la classe effettiva del punto dati è 1 e la classe prevista del punto dati è 0.
Possiamo usare la funzione confusion_matrix di sklearn.metrics per calcolare Confusion Matrix del nostro modello di classificazione.
Precisione della classificazione
È la metrica delle prestazioni più comune per gli algoritmi di classificazione. Può essere definito come il numero di previsioni corrette fatte come rapporto tra tutte le previsioni fatte. Possiamo facilmente calcolarlo dalla matrice di confusione con l'aiuto della seguente formula:
$$ Precisione = \ frac {TP + TN} {+++} $$Possiamo usare la funzione accuratezza_score di sklearn.metrics per calcolare l'accuratezza del nostro modello di classificazione.
Rapporto di classificazione
Questo rapporto è composto dai punteggi di Precisioni, Richiamo, F1 e Supporto. Sono spiegati come segue:
Precisione
La precisione, utilizzata nel recupero dei documenti, può essere definita come il numero di documenti corretti restituiti dal nostro modello ML. Possiamo facilmente calcolarlo dalla matrice di confusione con l'aiuto della seguente formula:
$$ Precisione = \ frac {TP} {TP + FP} $$Richiamo o sensibilità
Il richiamo può essere definito come il numero di positivi restituiti dal nostro modello ML. Possiamo facilmente calcolarlo dalla matrice di confusione con l'aiuto della seguente formula:
$$ Recall = \ frac {TP} {TP + FN} $$Specificità
La specificità, a differenza del richiamo, può essere definita come il numero di negativi restituiti dal nostro modello ML. Possiamo facilmente calcolarlo dalla matrice di confusione con l'aiuto della seguente formula:
$$ Specificità = \ frac {TN} {TN + FP} $$Supporto
Il supporto può essere definito come il numero di campioni della risposta vera che si trova in ciascuna classe di valori target.
Punteggio F1
Questa partitura ci darà la media armonica di precisione e richiamo. Matematicamente, il punteggio F1 è la media ponderata della precisione e del richiamo. Il miglior valore di F1 sarebbe 1 e il peggiore sarebbe 0. Possiamo calcolare il punteggio F1 con l'aiuto della seguente formula:
= ∗ (∗) / (+)
Il punteggio F1 sta avendo lo stesso contributo relativo di precisione e richiamo.
Possiamo usare la funzione classification_report di sklearn.metrics per ottenere il report di classificazione del nostro modello di classificazione.
AUC (area sotto la curva ROC)
AUC (Area Under Curve) -ROC (Receiver Operating Characteristic) è una metrica delle prestazioni, basata su valori di soglia variabili, per problemi di classificazione. Come suggerisce il nome, ROC è una curva di probabilità e AUC misura la separabilità. In parole semplici, la metrica AUC-ROC ci parlerà della capacità del modello di distinguere le classi. Maggiore è l'AUC, migliore è il modello.
Matematicamente, può essere creato tracciando TPR (Tasso Vero Positivo) cioè Sensibilità o Richiamo vs FPR (Tasso Falso Positivo) cioè 1-Specificità, a vari valori di soglia. Di seguito è riportato il grafico che mostra ROC, AUC con TPR sull'asse ye FPR sull'asse x -
Possiamo usare la funzione roc_auc_score di sklearn.metrics per calcolare AUC-ROC.
LOGLOSS (perdita logaritmica)
È anche chiamata perdita di regressione logistica o perdita di entropia incrociata. Fondamentalmente si definisce su stime di probabilità e misura le prestazioni di un modello di classificazione in cui l'input è un valore di probabilità compreso tra 0 e 1. Può essere compreso più chiaramente differenziandolo con accuratezza. Come sappiamo, l'accuratezza è il conteggio delle previsioni (valore previsto = valore effettivo) nel nostro modello mentre Log Loss è la quantità di incertezza della nostra previsione basata su quanto varia dall'etichetta effettiva. Con l'aiuto del valore Log Loss, possiamo avere una visione più accurata delle prestazioni del nostro modello. Possiamo usare la funzione log_loss di sklearn.metrics per calcolare la perdita di log.
Esempio
Quella che segue è una semplice ricetta in Python che ci darà un'idea di come possiamo usare le metriche delle prestazioni sopra spiegate sul modello di classificazione binaria -
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report
from sklearn.metrics import roc_auc_score
from sklearn.metrics import log_loss
X_actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
Y_predic = [1, 0, 1, 1, 1, 0, 1, 1, 0, 0]
results = confusion_matrix(X_actual, Y_predic)
print ('Confusion Matrix :')
print(results)
print ('Accuracy Score is',accuracy_score(X_actual, Y_predic))
print ('Classification Report : ')
print (classification_report(X_actual, Y_predic))
print('AUC-ROC:',roc_auc_score(X_actual, Y_predic))
print('LOGLOSS Value is',log_loss(X_actual, Y_predic))
Produzione
Confusion Matrix :
[
[3 3]
[1 3]
]
Accuracy Score is 0.6
Classification Report :
precision recall f1-score support
0 0.75 0.50 0.60 6
1 0.50 0.75 0.60 4
micro avg 0.60 0.60 0.60 10
macro avg 0.62 0.62 0.60 10
weighted avg 0.65 0.60 0.60 10
AUC-ROC: 0.625
LOGLOSS Value is 13.815750437193334
Metriche delle prestazioni per problemi di regressione
Abbiamo discusso della regressione e dei suoi algoritmi nei capitoli precedenti. Qui, discuteremo varie metriche delle prestazioni che possono essere utilizzate per valutare le previsioni per i problemi di regressione.
Errore assoluto medio (MAE)
È la metrica di errore più semplice utilizzata nei problemi di regressione. È fondamentalmente la somma della media della differenza assoluta tra i valori previsti e quelli effettivi. In parole semplici, con MAE, possiamo avere un'idea di quanto fossero sbagliate le previsioni. MAE non indica la direzione del modello, vale a dire nessuna indicazione sulla sottoperformance o sovraperformance del modello. La seguente è la formula per calcolare MAE -
$$ MAE = \ frac {1} {n} \ sum | Y - \ hat {Y} | $$Qui, = Valori di output effettivi
E $ \ hat {Y} $ = Valori di output previsti.
Possiamo usare la funzione mean_absolute_error di sklearn.metrics per calcolare MAE.
Errore quadratico medio (MSE)
MSE è come MAE, ma l'unica differenza è che quadrata la differenza tra i valori di output effettivi e previsti prima di sommarli tutti invece di utilizzare il valore assoluto. La differenza può essere notata nella seguente equazione:
$$ MSE = \ frac {1} {n} \ sum (Y - \ hat {Y}) $$Qui, = Valori di output effettivi
E $ \ hat {Y} $ = Valori di output previsti.
Possiamo usare la funzione mean_squared_error di sklearn.metrics per calcolare MSE.
R quadrato (R 2 )
R La metrica al quadrato viene generalmente utilizzata a scopo esplicativo e fornisce un'indicazione della bontà o dell'adattamento di un insieme di valori di output previsti ai valori di output effettivi. La seguente formula ci aiuterà a capirlo:
$$ R ^ {2} = 1 - \ frac {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ hat {Y_ {i}}) ^ 2} {\ frac {1} {n} \ sum_ {i {= 1}} ^ n (Y_ {i} - \ bar {Y_i) ^ 2}} $$Nell'equazione precedente, il numeratore è MSE e il denominatore è la varianza dei valori.
Possiamo usare la funzione r2_score di sklearn.metrics per calcolare il valore R quadrato.
Esempio
Quella che segue è una semplice ricetta in Python che ci darà un'idea di come possiamo utilizzare le metriche delle prestazioni sopra spiegate sul modello di regressione -
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error
X_actual = [5, -1, 2, 10]
Y_predic = [3.5, -0.9, 2, 9.9]
print ('R Squared =',r2_score(X_actual, Y_predic))
print ('MAE =',mean_absolute_error(X_actual, Y_predic))
print ('MSE =',mean_squared_error(X_actual, Y_predic))
Produzione
R Squared = 0.9656060606060606
MAE = 0.42499999999999993
MSE = 0.5674999999999999