Visualization for Machine Learning

Autumn 2025

Model Assessment

Agenda

  1. Confusion Matrices y ROC Curves

  2. Sistemas de Visual Analytics para Model Performance

  3. Calibration

Confusion Matrices, ROC Curves

Escenario: Predicción de Enfermedad

  • Considera un modelo de predicción de enfermedad. Supongamos que la hipotética enfermedad tiene una prevalencia del 5% en la población

  • El modelo dado converge en la solución de predecir que nadie tiene la enfermedad (es decir, el modelo predice “0” para cada observación)

  • Nuestro modelo tiene un accuracy del 95%

  • Sin embargo, los funcionarios de salud pública están desconcertados

Escenario: Dígitos Manuscritos

  • Considera un modelo para identificar dígitos manuscritos. Todos los dígitos son igualmente probables e igualmente representados en los training y test datasets.

  • El modelo identifica correctamente todos los dígitos, excepto el dígito \(5\), clasificando la mitad de las muestras de \(5\) como \(6\), y la otra mitad se identifica correctamente

  • El accuracy de este modelo es \(95\%\). ¿Es esta información suficiente para determinar si el modelo es bueno o no?

Extended Confusion Matrix

Confusion Matrices en sklearn

import matplotlib.pyplot as plt
from sklearn.metrics import ConfusionMatrixDisplay

clf.fit(X_train, y_train)

ConfusionMatrixDisplay.from_estimator(clf, X_test, y_test, cmap=plt.cm.Blues)
plt.show()

Confusion Matrices

Pros

  • Muchas métricas derivadas
  • Fácil de implementar
  • El resumen de los errores del modelo es claro

Contras

  • Difícil de escalar
  • Difícil de evaluar el output probabilístico
  • Difícil de ver errores individuales

Neo: Hierarchical Confusion Matrix

Receiver Operating Characteristic (ROC)

  • El análisis ROC es otra forma de evaluar el output de un classifier

  • El análisis ROC se desarrolló a partir de la operación de radar en la Segunda Guerra Mundial, donde los operadores estaban interesados en detectar señal (aviones enemigos) versus ruido

  • Creamos una ROC curve graficando el true positive rate (TPR) contra el false positive rate (FPR) en varios thresholds

ROC Curve

ROC Curve

ROC Curve

Area under an ROC curve (AUC)

ROC curve en sklearn

import matplotlib.pyplot as plt
from sklearn.metrics import RocCurveDisplay

clf.fit(X_train, y_train)

RocCurveDisplay.from_estimator(clf, X_test, y_test, plot_chance_level=True)
plt.show()

Multiclass ROC curve

Micro-average: Agrega las contribuciones de todas las classes para calcular la métrica. Útil si hay class imbalance.

Macro-average: Calcula la métrica para cada class por separado, luego toma el promedio (trata a todas las classes por igual)

Sistemas de Visual Analytics para Model Performance

Squares (2016)

Alsallakh et. al. (2014)

Alsallakh et. al. (2014)

Beauxis-Aussalet and Hardman (2014)

Beauxis-Aussalet and Hardman (2014)

EnsembleMatrix (2009)

Calibration

¿Qué es calibration?

  • Al hacer classification, a menudo nos interesa no solo predecir la class label, sino también la probability del output

  • Esta probability nos da una especie de confidence score sobre la predicción

  • Sin embargo, un modelo puede separar bien las classes (teniendo un buen accuracy/AUC), pero estar mal calibrated. En este caso, las estimated class probabilities están lejos de las true class probabilities

  • Podemos calibrar el modelo, cambiando la scale de las predicted probabilities

Calibration - Ejemplo de Pronóstico

Los pronosticadores del clima empezaron a pensar en calibration hace mucho tiempo (Brier, 1950): un pronóstico de “70% de probabilidad de lluvia” debería ir seguido de lluvia el 70% de las veces. Consideremos un pequeño ejemplo de juguete:

Así le va a este pronóstico prediciendo la lluvia:

  • “10% de probabilidad de lluvia” fue una ligera sobreestimación: \((\bar{y} = 0/2 = 0\%)\)
  • “40% de probabilidad de lluvia” fue una ligera subestimación: \((\bar{y} = 1/2 = 50\%)\)
  • “70% de probabilidad de lluvia” fue una ligera sobreestimación: \((\bar{y} = 2/3 = 67\%)\)
  • “90% de probabilidad de lluvia” fue una ligera subestimación: \((\bar{y} = 1/1 = 100\%)\)

Visualizando pronósticos - El Reliability Diagram

Reliability diagram - Cambiando valores

Reliability diagram - Cambiando el agrupamiento

Reliability Diagram en sklearn

from sklearn.calibration import CalibrationDisplay

fig = plt.figure()
ax = fig.add_subplot(111)

CalibrationDisplay.from_estimator(lg, X_test, y_test, n_bins=10, ax=ax,
                                  label='Logistic Regression')
CalibrationDisplay.from_estimator(nb, X_test, y_test, n_bins=10, ax=ax,
                                  label='Naive Bayes')

Fuentes comunes de miscalibration

  • Underconfidence: un classifier piensa que es peor separando classes de lo que realmente es.

    • Underconfidence típicamente produce distorsiones sigmoidales
    • Calibrar esto significa alejar las predicted probabilities del centro
  • Overconfidence: un classifier piensa que es mejor separando classes de lo que realmente es

    • Aquí, las distorsiones son inverse-sigmoidal
    • Calibrar esto significa empujar las predicted probabilities hacia el centro

Un classifier puede ser overconfident para una class y underconfident para la otra

Reliability Diagram en sklearn

Métricas de calibration

Sea \(N\) el total de samples, \(B\) el número de bins, \(n^b\) los samples en el bin \(b\), y \(conf(b)\) el average predicted probability en el bin \(b\).

  • Expected Calibration Error:

\[ECE = \sum_{b=1}^B \frac{n^b}{N}|acc(b) - conf(b)|\]

  • Maximum Calibration Error:

\[MCE = \underset{m \in \{1,2,\dots,|B|\}}{\text{max}} |acc(b) - conf(b)|\]

Calibration de modelos modernos

Calibration de modelos modernos

Proper Scoring Rules

  • Las proper scoring rules se calculan a nivel de observación, mientras que ECE está en bins

  • Piénsalo como poner cada item en su propio bin, y luego calcular el promedio de alguna loss para cada predicted probability y su corresponding observed label

Proper Scoring Rules

  • Brier Score/Quadratic error/Euclidean distance:

\[BS = \frac{1}{N} \sum_{i=1}^N (\hat{y}_i - y_i)^2\]

  • Log-loss/Cross entropy:

    • Frecuentemente usada como la training loss de métodos de machine learning, como las neural networks

    • Solo penaliza la probability dada a la true class

\[LL = -\frac{1}{N} \sum_{i=1}^N [y_i \text{log}(\hat{y}_i) + (1-y_i)\text{log}( 1 - \hat{y}_i)]\]

Proper Scoring Rules

Una forma intuitiva de descomponer las proper scoring rules es en refinement loss y calibration loss

  • Refinement loss: es la loss debida a producir la misma probability para instances de distintas classes

  • Calibration loss: es la loss debida a la diferencia entre las probabilities predichas por el modelo y la proporción de positives entre instances con el mismo output

Calibration Techniques

La calibration Parametric implica modelar las score distributions dentro de cada class

  • Platt scaling: La calibration logistic se puede derivar asumiendo que los scores dentro de ambas classes se distribuyen normalmente con la misma variance (Platt, 2000)

  • Beta calibration: emplea Beta distributions en su lugar, para lidiar con scores que ya están en una scale [0, 1] (Kull et al., 2017)

  • Dirichlet calibration para más de dos classes (Kull et al., 2019)

La calibration Non-parametric a menudo ignora los scores y emplea ranks

  • Isotonic regression ajusta un non-parametric isotonic regressor, que produce una función step-wise no decreciente

Platt scaling

  • Asume que la calibration curve se puede corregir aplicando una sigmoid a las raw predictions. Esto significa encontrar \(\mathbf{A}\) y \(\mathbf{b}\) vía MLE:

\[p(y_i = 1 | \hat{y}_i) = \frac{1}{1 + exp(\mathbf{A}\hat{y}_i + \mathbf{b})}\]

  • Funciona mejor si el calibration error es simétrico (el output del classifier para cada binary class se distribuye normalmente con la misma variance)

  • Esto puede ser un problema para problemas de classification muy imbalanced, donde los outputs no tienen igual variance

  • En general es más efectivo cuando el modelo sin calibrar es underconfident y tiene calibration errors similares tanto para outputs altos como bajos

Isotonic regression

  • Ajusta un non-parametric isotonic regressor, que produce una función step-wise no decreciente

  • Isotonic regression es más general comparada con Platt scaling, ya que la única restricción es que la mapping function sea monótonamente creciente

  • Es más powerful ya que puede corregir cualquier distorsión monotónica del modelo sin calibrar

  • Sin embargo, es más propensa al overfitting, especialmente en small datasets

Calibration en sklearn

Calibration en sklearn

Calibration Takeaways

  • Los reliability diagrams son una forma estándar de visualizar calibration

  • ECE es un resumen de lo que muestran los reliability diagrams

  • Las proper scoring rules (Log loss, Brier score) miden distintos aspectos de la probability correctness

  • Sin embargo, las proper scoring rules no pueden decirnos dónde un modelo está miscalibrated

Hyperparameters de los reliability diagrams

Calibrate (2023)

Calibrate (2023) - Learned Reliability Diagram

Calibrate (2023)

Smooth ECE (2023)

Smooth ECE (2023)

Visualizando Calibration para Multi-Class Problems

Literatura de Calibration Sugerida

Literatura de Calibration Sugerida