• 🏡 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.

No, questo contenuto è riservato.
Non ci puoi accedere

E’ destinato a una ristretta lista di persone motivate e intraprendenti.

E’ diritto esclusivo di sognatori e curiosi.

Come? Pensi di essere una di loro?

Dimostramelo…

accetto i noiosi termini e le condizioni

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

You Might Also Like

Multioutput, Multiclass e Multilabel Classification

Ottobre 2, 2019
mean-shift-clustering-guida-italiano-spiegazione-semplice-algoritmo-di-clustering-esempio

Mean-Shift Clustering

Dicembre 3, 2020
chatbot-dialogflow-tutorial-chatbot-tutorial-chatbot-case-studies-examples

Chatbot Case Studies PDF

Novembre 5, 2019
Next Post
Previous Post

Una pubblicità che non vedi se usi AdBlock

EXPAND YOUR KNOWLEDGE

  • 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
  • bloom-filter-spiegazione-italian Privacy Preserving

    Bloom Filter

    Giugno 3, 2021
  • trusted-execution-environment-tee-data-science-come-fuziona Data Science, Privacy Preserving

    Trusted Execution Environment | Cos’è un TEE?

    Giugno 2, 2021
  • Crypto Custody services machine-learning

    Crypto Custody: Guida alla custodia delle criptomonete

    Maggio 26, 2021
  • deep-q-learning-q-learning-reinforcement-learning machine-learning

    Deep Q-Learning

    Aprile 27, 2021

Quello che Google pensa ti possa piacere

Prodotti che i Cookie dicono potresti trovare interessanti

AI Blog - © 2019-2021 Andrea Provino