
El Clásico de la Injusticia
Introducción
La ciudad costera de Puerto Bruma vive su temporada de fútbol con estadios llenos y un clásico que paraliza todo: los Albatros del Muelle contra los Búhos de la Ribera.
Luego de incidentes aislados y mucha presión mediática, el Ministerio de Convivencia Pública implementó un sistema de IA llamado Centinela Delta para gestionar el derecho de admisión en los estadios: el Templo de la Almeja (localía de los Albatros) y el Fortín de la Bruma (localía de los Búhos).
Para cada persona que intenta ingresar, Centinela Delta asigna un score de riesgo \(S\in(0,100)\) y se instruyó a la policía y al gobierno que consideren que \(S\) es la probabilidad estimada de que la persona cometa un incidente en la cancha.
La regla de decisión es simple:
- Si \(S>T\) (umbral fijo \(T\)), se prohíbe el acceso del simpatizante, es decir, predicción: “violento”
- Si \(S\leq T\), se permite el acceso, es decir, predicción: “pacífico”
La empresa proveedora, NebulaGuard Analytics, sostiene que su score está perfectamente calibrado: “un score del 80% es una probabilidad del 80%, sin importar el color de la camiseta”.
Tras unos meses del sistema funcionando, la ONG Gradas en Paz presenta una denuncia ante la Defensoría del Pueblo. Su argumento es:
“Históricamente hubo mayor vigilancia y controles alrededor del Fortín de la Bruma. Eso hizo que, incluso entre gente pacífica, los hinchas de Búhos tengan más registros y más fricción con el sistema.”
En términos estadísticos, la denuncia contra el sistema es la siguiente:
“A los hinchas pacíficos (inocentes) de los Búhos les prohíben entrar más seguido que a los pacíficos del Albatros.”
Nos pondremos en el rol de consultores de ciencia de datos contratados por la Defensoría del Pueblo para auditar el sistema. Nos entregan un conjunto de datos anonimizado de la temporada anterior para realizar el análisis (datos/tp1_hinchas.csv).
El dataset corresponde a la temporada anterior a la implementación de Centinela Delta, cuando no existían restricciones de admisión. Para cada hincha se registró si participó en incidentes (\(Y\)). NebulaGuard entrenó su modelo con estos datos y ahora la Defensoría quiere auditar qué habría pasado si el sistema se hubiera aplicado.
Los objetivos del trabajo son:
- Determinar si hay evidencia de disparidad en los errores usando estadística bayesiana.
- Explicar el resultado en términos comprensibles para un organismo público.
- Conectar el resultado con el trade-off de fairness entre calibración e igualdad de tasas de error.
- Estudiar mediante simulación la posibilidad de generar un sistema más justo.
Actividades
Primera parte
- ¿Cuál es la prevalencia de hinchas violentos en cada equipo?
- ¿Qué sesgos puede presentar el conjunto de datos retrospectivo entregado?
- Verifique que los scores de Centinela Delta están calibrados. Para ello, realice un calibration plot, un gráfico que agrupa los puntajes de riesgo (\(S\)) en intervalos (digamos 10) para comparar la probabilidad predicha por el algoritmo (eje x) contra la proporción de casos que resultaron realmente violentos (eje y).
- Consideremos un umbral \(T=50\), ¿cuál es la accuracy del modelo?
- Con \(T=50\), para cada grupo, calcule el número de falsos negativos, verdaderos negativos, falsos positivos y verdaderos positivos.
Consideremos que la tasa de falsos positivos de cada grupo (\(FPR_g\)) es un parámetro desconocido sobre el que queremos hacer inferencia.
- ¿Qué representa la tasa de falsos positivos?
- ¿Qué supuestos son necesarios para modelar el número de falsos positivos como una variable binomial?
- ¿Cuál es un prior razonable para el \(FPR\) de cada grupo? Escriba el modelo bayesiano y encuentre la distribución a posteriori de \(FPR_g\).
- Halle la distribución a posteriori de la diferencia entre \(FPR_B\) y \(FPR_A\). ¿Cuál es la probabilidad de que \(FPR_B > FPR_A\)? ¿Qué puede concluirse en relación a la denuncia de la ONG Gradas en Paz?
NebulaGuard sostiene que su algoritmo es justo porque la interpretación del score es independiente del equipo: un score de 80 se interpreta como una probabilidad del 80% de ser violento, independientemente de si se trata de un hincha de Albatros o de Búhos. La ONG Gradas en Paz sostiene que el algoritmo es injusto porque, entre los hinchas pacíficos, a los de Búhos se les prohíbe la entrada con mayor frecuencia que a los de Albatros: si sos inocente, tu probabilidad de ser rechazado no debería depender de tu camiseta.
Para satisfacer el criterio de la ONG, una opción es utilizar un umbral \(T_g\) diferente para cada grupo.
- Construya una grilla de valores de \(T_A\) y \(T_B\) y calcule, para cada combinación, la probabilidad de que la diferencia entre las tasas de falsos positivos sea menor al 5%. ¿Cuáles son los valores de \(T_A\) y \(T_B\) que “igualan” \(FPR_A\) y \(FPR_B\)?
- ¿Considera que esta modificación del mecanismo de decisión es justa?
En lugar de utilizar un umbral diferente para cada grupo, otra opción es transformar los scores de cada grupo mediante una función lineal por tramos. Esta función debe satisfacer \(f_g(0) = 0\), \(f_g(100) = 100\) y \(f_g(T_g) = 50\).
- Construya las funciones \(f_A\) y \(f_B\), convierta los scores y compare las distribuciones a posteriori de \(FPR_A\) y \(FPR_B\).
- Para los scores transformados, realice nuevamente el calibration plot y construya también un calibration plot por grupo.
Segunda parte
Realizaremos ahora un estudio por simulación para observar el comportamiento de las métricas analizadas y las decisiones tomadas.
Una forma de simular scores calibrados con diferentes prevalencias por grupo es la siguiente:
N1 <- 50
N2 <- 50
s1 <- rbeta(N1, 2, 5)
s2 <- rbeta(N2, 4, 2)
y_true <- rbinom((N1 + N2), rep(1, N1 + N2), c(s1, s2))
data <- data.frame(
G = c(rep("Albatros", N1), rep("Búhos", N2)),
Score = c(s1,s2) * 100,
Y = y_true
)- ¿Por qué los scores
s1ys2resultan calibrados?
Repita \(N=1000\) veces el proceso de generar un conjunto de datos.
- Construya un calibration plot global y uno por grupo que incluya barras de error de acuerdo a las simulaciones.
- Realice un gráfico que permita comparar las distribuciones a posteriori \(FPR_A\) y \(FPR_B\) a lo largo de las simulaciones.
- Para los valores de \(T_A\) y \(T_B\) que encontró para igualar los \(FPR_g\), compare las distribuciones a posteriori de \(FPR_A\) y \(FPR_B\).
- Con las funciones \(f_A\) y \(f_B\), ajuste los scores y repita el punto 15.
- A partir del análisis realizado, reflexione: ¿el sistema Centinela Delta es injusto? ¿Qué opciones existen para mitigar la disparidad? ¿Qué se gana o se pierde?