La matrice di confusione è utilizzata per valutare le metriche dei modelli di classificazione (molto popolari nel data mining). Mette in evidenza il confronto tra le classi predette e quelle reali per fare una stima dell’affidabilità del classificatore stesso. Inoltre, permette di identificare il tipo di errore di classificazione.

Se ti va di sostenere il blog, unisciti al canale Telegram dove puoi trovare un sacco di offerte sulla tecnologia interessanti, con sconti fino all'80%. Manchi solo tu: unisciti subito al canale per non perderti le prossime occasioni!

Come è fatta la matrice di confusione?

Se prendiamo in considerazione un modello di classificazione binaria, ovvero un modello che può predire due classi, la matrice ha dimensione 2×2. Nel caso di classificazione binaria, la classe rara è anche chiamata classe positiva, mentre la classe che include la maggioranza dei record è detta classe negativa.

Esempio di matrice di confusione

Esempio di matrice di confusione

In dettaglio:

    • True Positive (TP): il numero di casi positivi correttamente identificati dal modello;
    • False Negative (FN): il numero di casi positivi erroneamente classificati come negativi dal modello;
    • False Positive (FP): il numero di casi negativi erroneamente classificati come positivi dal modello;
    • True Negative (TN): il numero di casi negativi correttamente identificati dal modello.
    Predetto True Predetto False
    Reale True True Positive (TP) False Negative (FN)
    Reale False False Positive (FP) True Negative (TN)

    Dalla matrice di confusione è possibile derivare altre metriche chiave da utilizzare nella valutazione di un modello di classificazione:

    Accuratezza

    L’accuratezza rappresenta la percentuale totale di predizioni corrette (sia positive che negative) rispetto al totale delle predizioni fatte. Questa è la misura più intuitiva delle prestazioni generali del modello. L’accuratezza non è una metrica adeguata nel caso in cui le classi siano sbilanciate.

    Accuratezza = (TP + TN) / (TP + TN + FP + FN)

    Precision

    La precisione prende in considerazione solo gli esempi positivi. È calcolata come il rapporto tra i veri positivi e la somma dei veri positivi e dei falsi positivi. Misura la frazione di record risultati effettivamente positivi tra tutti quelli sono stati classificati come tali.

    Precisione = TP / TP + FP

    Recall

    La metrica recall misura la capacità del modello di identificare tutti i casi rilevanti all’interno di un dataset, calcolando il rapporto tra i veri positivi e la somma dei veri positivi e dei falsi negativi. Misura la frazione di record positivi correttamente classificati.

    Recall = TP / TP + FN

    F1-Score

    L’F1-score è la media armonica di precisione e recall. Questa metrica è particolarmente utile quando si vuole trovare un equilibrio tra precisione e recall, soprattutto se la distribuzione delle classi è sbilanciata.

    F1-Score = 2 × ((PrecisionexRecall) / (Precisione+Recall))

    Esempio di utilizzo della matrice di confusione

    Per esempio, supponiamo di fare classificazione binaria per identificare se un email è spam o no. Dopo aver addestrato il modello su training set, lo valutiamo sul test set per determinare la sua efficacia. Utilizziamo una matrice di confusione per visualizzare le prestazioni del modello.

    Ipotizziamo che il set di test contenga 1.000 email:

    • 800 non spam;
    • 200 spam.

    In particolare, risultano:

    • True Positive (TP): 160 – Il modello ha correttamente identificato 160 email come spam;
    • False Negative (FN): 40 – Il modello ha mancato di identificare 40 email spam come tali.
    • False Positive (FP): 40 – Il modello ha erroneamente classificato 40 email non spam come spam;
    • True Negative (TN): 760 – Il modello ha correttamente identificato 760 email come non spam;
    Predetto True Predetto False
    Reale True 160 (TP) 40 (FN)
    Reale False 40 (FP) 760 (TN)

    Utilizziamo la matrice di confusione per calcolare alcune metriche chiave:

    • Accuratezza: (TP + TN) / (TP + TN + FP + FN) = (160 + 760) / (160 + 760 + 40 + 40) = 0.92
    • Precisione: TP / TP + FP = 160 / 160 + 40 = 0.8
    • Recall: TP / TP + FN = 160 / 160 + 40 = 0.8
    • F1-score: 2 × ((PrecisionxRecall) / (Precision+Recall)) = 2 × (( 0.8 x 0.8 ) / ( 0.8 + 0.8 )) = 0.8

    Esempio di matrice di confusione in Python

    Ecco adesso un esempio di come realizzare una matrice di confusione in Python, in particolare per valutare i risultati di un albero decisionale (ma applicabile a qualsiasi altro classificatore).

    
    from sklearn.model_selection import train_test_split
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import confusion_matrix
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # Modello di classificazione = albero di decisione
    model = DecisionTreeClassifier()
    model.fit(X_train, y_train)
    
    # Effettua le previsioni sul set di test
    y_pred = model.predict(X_test)
    
    # Genera la matrice di confusione
    cm = confusion_matrix(y_test, y_pred)
    
    # Visualizza la matrice di confusione
    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
    plt.xlabel('Predicted')
    plt.ylabel('True')
    plt.title('Confusion Matrix for Decision Tree Classifier')
    plt.show()
    
    
    Categorie: informatica