• 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
  • 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
Data Science, machine-learning

Confusion Matrix for Binary Classifier | Model Evaluation

Confusion Matrix for Binary Classifier | Model Evaluation

Un efficace sistema per valutare propriamente le performance di un sistema di machine learning è guardarne la confusion matrix.

In questo post capiamo cos’è e come funziona.

Confusion Matrix

Tra poco le cose inizieranno a diventare nebulose, sarà allora che apprenderai il motivo per cui la chiamano: matrice di confusione.

Prima però, facciamo un passo indietro ed esaminiamo un case study.

Una nota azienda, attiva nel settore energetico, ci ha contattato perché allertata dal crescente tasso di licenziamenti volontari registrati.

Evito di tediarti a lungo e giungo al punto: il problema è diminuire le dimissioni, prevedendo una possibile richiesta di allontanamento sulla base di alcune metriche raccolte dall’azienda e riferite ai singoli dipendenti.

Compiuta la fase di business understanding e definito l’analytic approach migliore, abbiamo raccolto i dati di cui avevamo bisogno e capito quali di questi fossero in nostro possesso.

Quindi abbiamo eseguito l’exploratory data analysis e finalmente siamo giunti allo sviluppo del modello.

Supervised classification model

Ora però dobbiamo valutarne le prestazioni. Ma che modello è?

E’ un modello di classificazione binaria, più tecnicamente un supervised classification model.

Trattasi di classificazione perché la variabile target, la nostra label, è discreta, e la definiamo binaria poiché assume uno dei due valori possibili:

  • left (abbandona l’azienda)
  • stay (resta nell’azienda)

Poiché gli algoritmi di machine learning gestiscono numeri, e non stringhe, dobbiamo mappare la binary label in formato numerico comprensibile.

Nei problemi di classificazione binaria, come questo, distinguiamo dunque tra i valori predetti:

  • una classe positiva (generalmente quella di nostro maggiore interesse)
  • una classe negativa (ovviamente, il valore restante)

Nel nostro caso left è la positve class e stay è la negative class.

e tra i valori reali:

  • True (generalmente quella di nostro maggiore interesse)
  • False (ovviamente, il valore restante)

Model Output

Un classificatore binario produce 4 possibili risultati:

  • un vero positivo
  • un falso positivo (type 1 Error)
  • un vero negativo
  • un falso negativo (type 2 Error)

Nel nostro modello usiamo un metodo di cross validation: una parte del dataset di training (con label nota) è usata come se fosse un dataset di testing.

Ti ricordo inoltre che la classse positiva è left.

Ora consideriamo che il dipendente con _id: A012-b1 ha lasciato l’azienda. Il suo status (noto) è left.

Il modello può prevedere che lo status dell’osservazione con _id: A012-b1 è:

  • left (vero positivo)
  • stay (falso negativo)

Ora consideriamo invece che lo status noto dell’osservazione con _id: A012-b2 è stay, metre il valore prodotto può essere:

  • left (falso positivo)
  • stay (vero negativo)

Ecco perché la definiamo confusionaria… ma aspetta, perché la parte intricata deve ancora venire.

Confusion Matrix in reality

Nella realtà una confusion matrix è meno esaltante di quanto tu possa credere:

Prima di procedere devi sapere che esistono differenti varianti di confusion matrix, a seconda di come si decida di costruirla.

In quest post ho scelto di descrivere la variante prodotta dalla funzione confusion_matrix() di Scikit-Learn.

In questa versione, ogni riga rappresenta una classe reale (actual class):

  • la prima [944, 27] è quella negativa,
  • la seconda [0, 29] è quella positiva

Potresti però trovare in rete altre fonti che definiscono la confusion marix inserendo sulle righe le classi predette (predicted class) anziché quelle reali (actual class) come nell’esempio qui riportato.

Ogni colonna costituisce poi una classe predetta (predicted class):

  • la prima [944, 0] è quella negativa,
  • la seconda [27, 29] è quella positiva

Come se non bastasse potresti trovare in rete altre fonti che definiscono la confusion marix invertendo l’ordine della natura delle classi, quindi potresti trovare una cosa simile a questa:

Occhio, questa immagine è a titolo illustrativo e la logica differisce da quella descritta nel post nonché da quella implementata nella libreria Scikit-Learn. Quindi è normale che tu possa trovare i possibili output in posizioni apparentemente scorrette, ma logicamente corrette.

Tornando al nostro esempio, inoltre:

  • 944 sono le classi true negative (predette negative ed effettivamente lo sono. Stay for Stay)
  • 27 sono le classi false positive(predette positive invece che negative. Left for Stay)
  • 0 sono le classi false negative(predette negative invece che positive. Stay for Left)
    29 sono le classi true positive(predette positive ed effettivamente lo sono. Left for Left)

Un consiglio per imparare bene la logica della confusion matrix è ripetere ad alta voce ragionando sul valore delle parole e tenendo, perlomeno inizialmente, un foglio con su scritto quale sia la classe positiva e quale quella negativa

Un classificatore perfetto avrebbe solamente true negative e true positive, e la sua confusion matrix apparirebbe riempita sulla diagonale top left bottom right.

Abbiamo quindi visto che una confusion matrix fornisce molte informazioni. Spesso sono però utili metriche più concise: la precisione e il recupero (precision recall).

In questo post, trovi una visione d’insieme sulle tecniche di model evaluation

Un caldo abbraccio, Andrea.

Written by Andrea Provino - Settembre 27, 2019
Tags | teoria

You Might Also Like

avdersarial-attacks-privacy-preserving-machine-learning-italiano-attacchi-avversari

Adversarial Attacks | Pericoli e Minacce al Machine Learning

Settembre 5, 2020

DBSCAN: Density-based spatial clustering of applications with noise

Novembre 13, 2019
privacy-preserving-data-mining-differential-privacy-guida-machine-learning-italia

Privacy Preserving Data Mining (PPDM)

Maggio 29, 2020

2 Comments

  • One Versus All (OvA) vs One Versus One (OvO) | Multiclass Classifiers - Machine Learning & Data Science Blog Settembre 30, 2019 at 19:50

    […] Confusion Matrix for Binary Classifier | Model Evaluation […]

    Reply
  • Precision vs Accuracy: Precisione e accuratezza - Machine Learning Italia Aprile 19, 2020 at 19:56

    […] di avere un classificatore binario che determina se un sospetto è vittima o carnefice e di dover interpretare la matrice di […]

    Reply
  • Please Post Your Comments & Reviews
    Annulla risposta

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

    Next Post
    Previous Post

    Una pubblicità che non vedi se usi AdBlock

    EXPAND YOUR KNOWLEDGE

    • Blockchain

      Patricia Merkle Trie

      Maggio 30, 2023
    • Artistic representation of a tree Blockchain

      Tree Data Structure: cos’è un Merkle Tree

      Maggio 26, 2023
    • Cover image for Bitcoin UTXO explanation post Blockchain

      UTXO: come funziona il modello Unspent Transaction Outputs

      Maggio 23, 2023
    • Blockchain

      Cos’è Ethereum

      Maggio 15, 2023
    • Blockchain Developer

      Circuito aritmetico

      Novembre 1, 2022
    • machine-learning

      Un nuovo inizio

      Settembre 4, 2021
    • Zero Knwoledge Proof Article Privacy Preserving

      Zero Knowledge Proof: zk-SNARK e zk-STARK | Prova a conoscenza zero

      Luglio 8, 2021
    • oblivious-transfer-spiegazione-italiano-ot-explanation Privacy Preserving

      Oblivious Transfer (OT)

      Luglio 6, 2021
    • Aleo Studio Website Preview machine-learning

      Aleo Studio: un IDE per Zero-Knowledge Proofs Applications

      Luglio 1, 2021
    • privacy-enhancing-technologies-data-machine-learning-data-science Privacy Preserving

      Perché il Privacy Tech è un vantaggio competitivo micidiale

      Giugno 17, 2021

    Quello che Google pensa ti possa piacere

    Prodotti che i Cookie dicono potresti trovare interessanti

    AI Blog - © 2019-2021 Andrea Provino