Práctica 7
Práctica 7: Desenmascarando sesgos algorítmicos
- Autores: Joaquín Batista, Milagros Cancela, Valentín Rodríguez, Alexia Aurrecoechea, Nahuel López (G1)
- Fecha: Septiembre 2025
- Entorno: Python + Fairlearn + Scikit-learn + Pandas
- Datasets: Boston Housing, Titanic, Ames Housing
🎯 Objetivo
El propósito de esta práctica es realizar un análisis ético completo de sesgos algorítmicos en datasets históricos utilizando Fairlearn. A través de casos reales, exploramos la detección, análisis y corrección de sesgos en modelos de machine learning.
- DETECTAR sesgo histórico en datasets reales (Boston Housing + Titanic)
- ANALIZAR impacto del sesgo en predicciones de modelos
- COMPARAR estrategias: detección (regresión) vs corrección (clasificación)
- EVALUAR cuándo detectar vs cuándo intentar corregir automáticamente
- DESARROLLAR criterios éticos para deployment responsable
🔍 Análisis de Sesgo Racial en Boston Housing
Visualización del Sesgo Histórico
La siguiente visualización muestra la distribución de precios de vivienda agrupada por proporción de población afroamericana, revelando patrones claros de sesgo histórico:
Código de Análisis
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_boston
# Cargar dataset Boston Housing
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['price'] = boston.target
# Crear grupos raciales basados en variable B (proporción afroamericana)
df['grupo_racial'] = pd.cut(df['B'],
bins=[0, df['B'].median(), df['B'].max()],
labels=['Baja_prop_afroam', 'Alta_prop_afroam'])
# Análisis estadístico del sesgo
print("=== ANÁLISIS DE SESGO RACIAL ===")
print(f"Precio promedio - Alta proporción afroam: ${df[df['grupo_racial']=='Alta_prop_afroam']['price'].mean():.1f}k")
print(f"Precio promedio - Baja proporción afroam: ${df[df['grupo_racial']=='Baja_prop_afroam']['price'].mean():.1f}k")
brecha = df[df['grupo_racial']=='Baja_prop_afroam']['price'].mean() - df[df['grupo_racial']=='Alta_prop_afroam']['price'].mean()
brecha_pct = (brecha / df[df['grupo_racial']=='Alta_prop_afroam']['price'].mean()) * 100
print(f"Brecha absoluta: ${brecha:.1f}k")
print(f"Brecha relativa: {brecha_pct:.1f}%")
print(f"Correlación B-precio: {df['B'].corr(df['price']):.3f}")
Interpretación Crítica
🔍 Hallazgos Clave:
- Sesgo sistemático: Las áreas con mayor proporción afroamericana muestran precios consistentemente menores
- Distribución sesgada: El grupo de "alta proporción afroamericana" se concentra en el rango de precios bajos
- Correlación negativa: Variable B muestra correlación negativa con precios (-0.385)
⚠️ Implicaciones Éticas:
- Este sesgo refleja discriminación histórica en políticas habitacionales
- La variable B actúa como proxy racial problemático para predicciones
- No es apropiado intentar "corregir" este sesgo automáticamente sin abordar las causas estructurales
🚢 Análisis de Sesgo en Titanic Dataset
Detección de Sesgo de Género y Clase
Brecha de género: 54.8% diferencia en supervivencia (mujeres vs hombres) Brecha de clase: 41.3% diferencia entre primera y tercera clase
Aplicación de Fairlearn para Corrección
Resultados de la corrección:
- Performance loss: 6.2%
- Mejora en Demographic Parity: 0.051
- Recomendación: Evaluar caso por caso el trade-off precisión vs equidad
🏠 Análisis de Sesgo en Ames Housing
Sesgos Geográficos y Socioeconómicos
Brecha geográfica: 45% entre barrios más y menos caros Brecha temporal: 28% diferencia entre casas nuevas vs antiguas Riesgo: Alto potencial de perpetuar desigualdades en contextos hipotecarios
⚖️ Framework Ético Desarrollado
Cuándo DETECTAR únicamente
- Sesgo histórico complejo (Boston racial bias)
- Contexto de aprendizaje/investigación
- Variables proxy inevitables (neighborhood effects)
Cuándo DETECTAR + CORREGIR
- Sesgo sistemático claro (Titanic gender bias)
- Contexto de producción con riesgo moderado
- Herramientas de fairness aplicables
Cuándo RECHAZAR el modelo
- Alto impacto socioeconómico (lending, hiring)
- Sesgo severo no corregible
- Falta de transparencia en decisiones
🧠 Insights Técnicos
Detección vs Corrección
- Detección: Cada estrategia es apropiada para diferentes contextos
- Sesgo histórico: Más complejo de corregir que el sesgo sistemático
- Context matters: El dominio determina la tolerancia al sesgo
- Fairlearn limitations: No todas las situaciones de sesgo son corregibles automáticamente
Herramientas Utilizadas
- Fairlearn: Biblioteca principal para detección y corrección de sesgo
- ExponentiatedGradient: Algoritmo de corrección in-processing
- DemographicParity: Constraint de equidad demográfica
- MetricFrame: Análisis de métricas por grupos sensibles
💡 Reflexiones Éticas Críticas
¿Cuándo es más valioso detectar que corregir automáticamente?
Cuando el sesgo proviene de factores históricos profundos. La corrección automática puede ocultar la raíz del problema o generar resultados artificiales. La detección permite visibilizar y documentar el sesgo sin introducir ruido.
¿Cómo balancear transparencia vs utilidad?
La transparencia debe priorizarse frente a la utilidad. Un modelo con sesgo conocido y documentado es preferible a uno "ajustado" pero opaco, ya que los usuarios pueden comprender sus limitaciones.
¿Qué responsabilidades tenemos con sesgos históricos no corregibles?
Debemos identificarlos, explicarlos y advertir sobre sus implicancias. Si no se pueden eliminar, corresponde evitar su uso en contextos sensibles. La responsabilidad del data scientist es también social, no solo técnica.
🚀 Extensiones y Próximos Pasos
Algoritmos Adicionales de Fairness
- GridSearch: Búsqueda exhaustiva de parámetros justos
- ThresholdOptimizer: Post-processing para optimizar umbrales
- CorrelationRemover: Pre-processing para eliminar correlaciones
Constraints Alternativos
- EqualizedOdds: Igualdad de oportunidades
- TruePositiveRateParity: Paridad en True Positive Rate
- FalsePositiveRateParity: Paridad en False Positive Rate
📈 Impacto y Aplicaciones
Esta práctica demuestra la importancia crítica de:
- Auditoría ética en modelos de ML
- Documentación transparente de limitaciones
- Evaluación contextual de trade-offs
- Responsabilidad social en data science
El framework desarrollado es aplicable a cualquier dominio donde la equidad sea una consideración importante, especialmente en sectores como finanzas, recursos humanos, justicia y salud.
🛠️ Herramientas y Tecnologías
Librerías Utilizadas
- Fairlearn: Detección y corrección de sesgo algorítmico
- scikit-learn: Modelos base para análisis de sesgo
- pandas: Manipulación y análisis de datos
- matplotlib/seaborn: Visualizaciones de sesgo
- numpy: Operaciones numéricas
Datasets Utilizados
- Boston Housing: Sesgo racial histórico (uso educativo únicamente)
- Titanic: Sesgo de género y clase social
- Ames Housing: Sesgo geográfico y socioeconómico
📚 Conclusiones y Aprendizajes
Hallazgos Principales
- Sesgo es ubicuo: Presente en la mayoría de datasets históricos
- Contexto importa: La corrección automática no siempre es apropiada
- Transparencia es clave: Documentar sesgos es más importante que ocultarlos
- Responsabilidad social: Los data scientists tienen obligaciones éticas
Lecciones Aprendidas
- Detección primero: Siempre identificar sesgos antes de intentar corregirlos
- Múltiples perspectivas: Considerar diferentes grupos afectados
- Trade-offs reales: Equidad vs precisión requiere decisiones conscientes
- Documentación exhaustiva: Registrar todas las decisiones éticas
🔗 Recursos y Referencias
- Fairlearn Documentation: fairlearn.org
- Boston Housing Dataset: UCI ML Repository
- Titanic Dataset: Kaggle Titanic
- Ética en ML: ACM Code of Ethics