Verifica di un modello
Tutti i parametri per verificare le performances di un modello
Parametri per le performance di un modello
Per verificare se un modello di machine learning è efficace, si utilizzano diversi parametri e metriche che permettono di valutarne la qualità e le prestazioni in modo oggettivo. Questi parametri dipendono dal tipo di modello e dal tipo di problema (classificazione, regressione, ecc.), ma alcuni dei più comuni sono:Accuratezza (Accuracy)
- Definizione: La percentuale di previsioni corrette rispetto al numero totale di previsioni.
- Applicazione: È utile nei problemi di classificazione, specialmente quando le classi sono equilibrate.
- Formula:
\[ \text{Accuracy} = \frac{\text{Numero di previsioni corrette}}{\text{Numero totale di esempi}} \]
Precisione (Precision)
- Definizione: La frazione di veri positivi rispetto al numero totale di positivi predetti dal modello.
- Applicazione: Utilizzata quando il costo di un falso positivo è elevato, ad esempio nei problemi di rilevamento di spam o diagnosi mediche.
- Formula:
\[ \text{Precision} = \frac{\text{Vero Positivo (TP)}}{\text{Vero Positivo (TP)} + \text{Falso Positivo (FP)}} \]
Richiamo (Recall) o Sensibilità
- Definizione: La frazione di veri positivi rispetto al numero totale di esempi che appartengono effettivamente alla classe positiva.- Applicazione: Importante quando è cruciale non perdere i veri positivi, come nei casi di malattie gravi.
- Formula:
\[ \text{Recall} = \frac{\text{Vero Positivo (TP)}}{\text{Vero Positivo (TP)} + \text{Falso Negativo (FN)}} \]
F1-Score
- Definizione: La media armonica di precisione e richiamo. È una metrica utile quando si cerca un equilibrio tra precisione e richiamo.
- Applicazione: Utile quando le classi sono sbilanciate e si vuole evitare di concentrarsi su una sola metrica.
- Formula:
\[ F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \]
Matrice di Confusione (Confusion Matrix)
- Definizione: Una tabella che descrive le performance di un modello di classificazione. Mostra i veri positivi (TP), veri negativi (TN), falsi positivi (FP), e falsi negativi (FN).
- Applicazione: Utile per visualizzare come il modello commette errori e dove si verificano.
Area sotto la curva ROC (AUC-ROC)
- Definizione: L'area sotto la curva della Receiver Operating Characteristic (ROC), che traccia il tasso di veri positivi (recall) contro il tasso di falsi positivi. L'AUC fornisce una misura complessiva delle prestazioni del modello.
- Applicazione: Utile quando le classi sono sbilanciate o quando si vuole un modello che funzioni bene in vari livelli di threshold.
Errore Quadratico Medio (MSE) e Radice dell'Errore Quadratico Medio (RMSE)
- Definizione: La media degli errori quadrati tra i valori predetti e quelli reali. Il RMSE è semplicemente la radice quadrata del MSE.
- Applicazione: Utilizzato nei modelli di regressione per misurare la distanza tra i valori predetti e quelli effettivi.
- Formula:
\[ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i})^2 \]
Errore Assoluto Medio (MAE)
- Definizione: La media degli errori assoluti tra i valori predetti e quelli reali.
- Applicazione: È meno sensibile agli outliers rispetto al MSE e può essere utile quando si vogliono evitare errori amplificati dai valori estremi.
- Formula:
\[ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y_i}| \]
R^2 (Coefficiente di Determinazione)
- Definizione: Una misura di quanto i dati osservati siano spiegati dal modello. Varia tra 0 e 1, dove 1 significa che il modello spiega perfettamente i dati.
- Applicazione: Utilizzato nei modelli di regressione per misurare la bontà del modello.
Codice Python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix, roc_auc_score, mean_squared_error, mean_absolute_error, r2_score
import numpy as np
# Dati di esempio (valori reali vs predetti)
y_true = [0, 1, 1, 1, 0, 1, 0, 0, 1, 0] # Valori reali
y_pred = [0, 1, 0, 1, 0, 1, 0, 1, 1, 0] # Valori predetti
y_scores = [0.1, 0.9, 0.3, 0.8, 0.2, 0.85, 0.05, 0.6, 0.95, 0.4] # Probabilità predette per ROC-AUC
# Accuratezza
accuracy = accuracy_score(y_true, y_pred)
# Precisione
precision = precision_score(y_true, y_pred)
# Richiamo (Recall)
recall = recall_score(y_true, y_pred)
# F1-score
f1 = f1_score(y_true, y_pred)
# Matrice di confusione
conf_matrix = confusion_matrix(y_true, y_pred)
# Area sotto la curva ROC (AUC-ROC)
auc_roc = roc_auc_score(y_true, y_scores)
# Dati di esempio per la regressione
y_true_reg = np.array([3.0, -0.5, 2.0, 7.0])
y_pred_reg = np.array([2.5, 0.0, 2.0, 8.0])
# Errore Quadratico Medio (MSE)
mse = mean_squared_error(y_true_reg, y_pred_reg)
# Radice dell'Errore Quadratico Medio (RMSE)
rmse = np.sqrt(mse)
# Errore Assoluto Medio (MAE)
mae = mean_absolute_error(y_true_reg, y_pred_reg)
# Coefficiente di Determinazione (R²)
r2 = r2_score(y_true_reg, y_pred_reg)
# Output dei risultati
print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1 Score: {f1:.2f}")
print(f"Confusion Matrix:\n{conf_matrix}")
print(f"AUC-ROC: {auc_roc:.2f}")
print(f"MSE: {mse:.2f}")
print(f"RMSE: {rmse:.2f}")
print(f"MAE: {mae:.2f}")
print(f"R² Score: {r2:.2f}")