Ética en IA y aplicaciones reales

"Un sistema de IA que no entendemos, no podemos corregir. Un sistema que no es justo, no deberíamos usar."

Qué vas a aprender en este capítulo

Los modelos de ML no son neutros — reflejan los sesgos de los datos con que se entrenaron y de quienes los diseñaron. Un sistema de crédito que discrimina por zona geográfica, un sistema de contratación que favorece a hombres, un algoritmo de vigilancia que identifica incorrectamente a personas de ciertas etnias. Este capítulo explora qué hace que un sistema de IA sea ético y cómo medirlo.


5.1 Sesgo algorítmico

💡 Intuición

Un modelo aprende de datos históricos. Si los datos históricos reflejan discriminación pasada (ej: históricamente se contrataron menos mujeres en tecnología), el modelo aprende esa discriminación y la perpetúa — o la amplifica.

El modelo no "decide" discriminar. Simplemente optimiza la función de costo con los datos que recibió. La responsabilidad es del equipo que diseñó y desplegó el sistema.

📐 Fundamento

Fuentes de sesgo en sistemas de IA:

1. Sesgo en los datos de entrenamiento:

# Ejemplo: dataset de contrataciones históricas
# Si históricamente se contrató más a hombres en ingeniería...
df = pd.DataFrame({
    'genero': ['M','M','F','M','M','F','M','M','F','M'],
    'experiencia': [5, 3, 7, 4, 6, 8, 2, 5, 6, 3],
    'contratado': [1, 1, 0, 1, 1, 0, 1, 1, 1, 0]  # sesgo histórico
})

# El modelo aprenderá que ser hombre es predictivo del éxito
# aunque la causa real sea la discriminación, no la competencia
modelo = DecisionTreeClassifier()
modelo.fit(df[['genero', 'experiencia']], df['contratado'])
# → el árbol probablemente coloca 'genero' cerca de la raíz

2. Sesgo de representación: algunos grupos están subrepresentados en el training set.

3. Sesgo de medición: el proxy que usamos no mide lo que queremos medir. Ejemplo: usar el código postal como proxy de riesgo crediticio → proxy para raza o nivel socioeconómico.

4. Sesgo de confirmación en el diseño: el equipo diseña el sistema con supuestos no examinados.

5. Feedback loops: el modelo toma decisiones que afectan los datos futuros, reforzando el sesgo. Ejemplo: un sistema que envía más policías a barrios pobres → más arrestos en esos barrios → más datos de crimen en esos barrios → el modelo los clasifica como más peligrosos.

Casos reales:

Sistema Sesgo detectado
COMPAS (recidivismo criminal) 2x más probable clasificar a personas negras como alto riesgo
Amazon hiring tool (2018) Penalizaba CVs con la palabra "mujeres" (ej: "capitana del equipo femenino")
Reconocimiento facial Tasa de error hasta 35% en mujeres de tez oscura vs 1% en hombres de tez clara
GPT-3 (2020) Asociaciones estereotipadas entre género y profesiones

5.2 Fairness — ¿cómo medir justicia?

💡 Intuición

La justicia parece obvia, pero existen definiciones matemáticas que a veces son incompatibles entre sí. No podés tener todas las definiciones de fairness simultáneamente — tenés que elegir cuál es más importante para tu contexto.

¿Es justo que el modelo tenga la misma tasa de error para todos los grupos? ¿O es justo que prediga la misma proporción de positivos para todos? No siempre es posible tener las dos cosas al mismo tiempo.

📐 Fundamento

Definiciones de fairness:

1. Demographic Parity (paridad demográfica): La tasa de predicciones positivas es igual para todos los grupos:

P(Y^=1A=0)=P(Y^=1A=1)P(\hat{Y}=1 | A=0) = P(\hat{Y}=1 | A=1)

donde AA es el atributo sensible (género, raza, etc.)

2. Equal Opportunity: La tasa de verdaderos positivos (recall) es igual para todos los grupos:

P(Y^=1Y=1,A=0)=P(Y^=1Y=1,A=1)P(\hat{Y}=1 | Y=1, A=0) = P(\hat{Y}=1 | Y=1, A=1)

3. Equalized Odds: Tanto recall como false positive rate son iguales para todos los grupos.

4. Individual Fairness: Individuos similares en features relevantes reciben predicciones similares.

from sklearn.metrics import confusion_matrix

def metricas_fairness(y_true, y_pred, atributo_sensible, grupo_0, grupo_1):
    mask_0 = atributo_sensible == grupo_0
    mask_1 = atributo_sensible == grupo_1
    
    # Tasa de positivos predichos
    ppr_0 = y_pred[mask_0].mean()
    ppr_1 = y_pred[mask_1].mean()
    print(f"Tasa predicciones positivas — {grupo_0}: {ppr_0:.2%}, {grupo_1}: {ppr_1:.2%}")
    print(f"  Disparate Impact: {ppr_1/ppr_0:.2f} (ideal: 1.0, alerta si <0.8)")
    
    # Equal Opportunity (TPR por grupo)
    for mask, nombre in [(mask_0, grupo_0), (mask_1, grupo_1)]:
        tn, fp, fn, tp = confusion_matrix(y_true[mask], y_pred[mask]).ravel()
        tpr = tp / (tp + fn)
        fpr = fp / (fp + tn)
        print(f"  {nombre}: TPR={tpr:.2%}, FPR={fpr:.2%}")

# Usar con nuestro dataset:
metricas_fairness(y_test, y_pred, df_test['genero'], 'F', 'M')

Disparate Impact: Si la tasa de predicciones positivas para el grupo desfavorecido dividida entre la del grupo favorecido es < 0.8, hay evidencia legal de discriminación (regla del 80% del EEOC en EE.UU.).

El teorema de imposibilidad (Chouldechova, 2017):

Si hay desbalance en la prevalencia real entre grupos (diferente proporción de positivos verdaderos), no es posible tener simultáneamente:

  • Paridad en PPV (Positive Predictive Value)
  • Paridad en FPR
  • Paridad en FNR

La elección de qué métrica priorizar es un juicio de valor, no técnico.


5.3 Explicabilidad

💡 Intuición

Un árbol de decisión de profundidad 3 podés leerlo y entenderlo. Una red neuronal con 175 mil millones de parámetros (GPT-3) — no. Pero cuando el sistema toma una decisión que afecta tu vida (si te dan el crédito, si pasás la entrevista), tenés derecho a saber por qué.

La explicabilidad es una obligación legal en muchos contextos (EU GDPR) y una necesidad práctica para detectar sesgos.

📐 Fundamento

Técnicas de explicabilidad:

Feature importance del árbol de decisión:

import pandas as pd
import matplotlib.pyplot as plt

importancias = pd.Series(
    modelo.feature_importances_,
    index=X.columns
).sort_values(ascending=False)

importancias.plot.bar()
plt.title('Importancia de features')
plt.ylabel('Importancia (Gini)')

SHAP (SHapley Additive exPlanations):

Basado en teoría de juegos — calcula la contribución de cada feature a cada predicción individual.

import shap

# Para árbol de decisión o random forest
explainer = shap.TreeExplainer(modelo)
shap_values = explainer.shap_values(X_test)

# Gráfico de impacto de features globalmente
shap.summary_plot(shap_values[1], X_test)

# Explicación de una predicción individual
shap.force_plot(
    explainer.expected_value[1],
    shap_values[1][0],  # primera instancia del test set
    X_test.iloc[0]
)
# Muestra: "El gasto_total (+2.3) y la frecuencia (+1.1) 
#           fueron los factores principales para predecir 'postre: sí'"

LIME (Local Interpretable Model-Agnostic Explanations):

Aproxima el modelo complejo con un modelo simple (lineal) en el vecindario del punto a explicar.

from lime import lime_tabular

explainer = lime_tabular.LimeTabularExplainer(
    X_train.values,
    feature_names=X.columns,
    class_names=['No postre', 'Sí postre'],
    mode='classification'
)

exp = explainer.explain_instance(X_test.iloc[0].values, modelo.predict_proba, num_features=4)
exp.show_in_notebook()

Modelos inherentemente explicables vs caja negra:

Modelo Explicabilidad Precisión típica
Regresión logística Alta (coeficientes) Baja-media
Árbol de decisión Alta (reglas if/else) Media
Random Forest Media (feature importance) Alta
Red neuronal profunda Baja (requiere SHAP/LIME) Muy alta
LLMs Muy baja Muy alta

El tradeoff explicabilidad-precisión: En contextos de alto riesgo (medicina, justicia criminal, crédito), la regulación puede requerir modelos explicables aunque sean menos precisos.


5.4 Marco regulatorio

📐 Fundamento

EU AI Act (2024) — primera ley de IA del mundo:

Clasifica los sistemas de IA por nivel de riesgo:

Nivel Ejemplos Requisitos
Inaceptable Puntuación social estilo China, biometría en tiempo real en espacios públicos Prohibido
Alto riesgo IA en contratación, crédito, justicia, medicina, infraestructura crítica Evaluación de riesgo, datos de calidad, logs auditables, supervisión humana
Riesgo limitado Chatbots, deepfakes Transparencia (el usuario debe saber que habla con IA)
Mínimo riesgo Filtros de spam, videojuegos con IA Sin requisitos adicionales

GDPR y derecho a la explicación: Los ciudadanos de la UE tienen derecho a no ser sujetos de decisiones completamente automatizadas que les afecten significativamente, y derecho a recibir una explicación.

Principios de la IA responsable (NIST AI RMF, IEEE, Google, Microsoft):

  1. Equidad (Fairness): No discriminar por características protegidas.
  2. Confiabilidad y seguridad (Reliability & Safety): Funcionar correctamente y sin dañar.
  3. Privacidad (Privacy): Respetar y proteger los datos personales.
  4. Inclusión (Inclusiveness): Considerar a todos los grupos.
  5. Transparencia (Transparency): Ser comprensible y auditable.
  6. Responsabilidad (Accountability): Que haya humanos responsables de las decisiones.

5.5 IA aplicada — panorama de herramientas

🛠️ En la práctica

Checklist de IA responsable para La Esquina

Antes de desplegar el sistema de recomendación de platillos:

Sesgo y fairness:

  • [ ] ¿El sistema recomienda de forma diferente a clientes por zona (un proxy de nivel socioeconómico)?
  • [ ] ¿Tenemos suficientes datos de todos los grupos de clientes, o solo de los más frecuentes?
  • [ ] ¿El sistema puede aprender a no recomendar opciones vegetarianas a ciertos grupos porque "históricamente no las pidieron"?

Explicabilidad:

  • [ ] ¿Podemos explicarle al cliente por qué le recomendamos un platillo?
  • [ ] ¿El dueño puede auditar por qué ciertos platillos nunca son recomendados?

Privacidad:

  • [ ] ¿El historial de pedidos se guarda de forma que no se pueda re-identificar a un cliente si la BD se filtra?
  • [ ] ¿Los clientes saben que usamos sus datos para recomendaciones?
  • [ ] ¿Pueden optar por no participar?

Supervisión humana:

  • [ ] ¿El sistema hace recomendaciones automáticas sin revisión humana, o el mozo puede override?
  • [ ] ¿Hay un mecanismo para reportar cuando una recomendación parece incorrecta?

Código de ejemplo: recomendación con explicación:

def recomendar_con_explicacion(cliente_id, modelo, datos):
    """Retorna recomendación + razón legible por humanos."""
    recomendacion = modelo.predict(datos.loc[[cliente_id]])
    
    # SHAP para explicar
    shap_vals = explainer.shap_values(datos.loc[[cliente_id]])
    top_feature = datos.columns[np.argmax(np.abs(shap_vals[1][0]))]
    
    explicacion = {
        'platillo': recomendacion[0],
        'razon': f"Clientes que piden frecuentemente {top_feature} "
                 f"también tienden a pedir este platillo.",
        'confianza': modelo.predict_proba(datos.loc[[cliente_id]])[0].max()
    }
    return explicacion

5.6 Ejercicios

✏️ Ejercicio 5.1 — Identificar sesgos

Para cada sistema de IA, identificá: (a) la posible fuente de sesgo, (b) qué grupo podría verse perjudicado, (c) qué metrica de fairness aplicarías.

  1. Un banco usa IA para decidir si aprueba préstamos, entrenado con datos históricos de los últimos 20 años.
  2. Una app de delivery predice cuánto tiempo tardará el pedido, basándose en datos de entregas anteriores.
  3. Un hospital usa IA para priorizar pacientes en urgencias, entrenado con datos de 10 hospitales privados.

✏️ Ejercicio 5.2 — Diseño ético

Diseñá un sistema de IA para asignación de becas universitarias con consideraciones éticas integradas desde el inicio:

a. ¿Qué features usarías? ¿Cuáles excluirías y por qué? b. ¿Qué definición de fairness priorizarías? c. ¿Qué mecanismo de supervisión humana implementarías? d. ¿Cómo auditarías el sistema cada semestre?


5.7 Cierre del libro

Este libro recorrió el paisaje completo de la IA moderna:

  1. Búsqueda y heurística — los fundamentos algorítmicos: BFS, DFS, A*.
  2. Aprendizaje supervisado — KNN, árboles de decisión, el tradeoff sesgo-varianza.
  3. Redes neuronales — de la neurona al deep learning y CNNs.
  4. Aprendizaje no supervisado — K-means, PCA, sistemas de recomendación.
  5. Ética — sesgo, fairness, explicabilidad, regulación.

La IA no es magia ni ciencia ficción — es matemática, datos, y decisiones humanas. Las decisiones más importantes no son cuál algoritmo usar, sino qué datos recoger, qué optimizar, y quién responde cuando el sistema se equivoca.


5.8 Para profundizar

5.X Mini-proyecto integrador

🏗️ Proyecto final — Clasificador con auditoría de sesgo

Alcance: entrenás un modelo de ML práctico y le hacés auditoría completa de sesgo y explicabilidad. No es solo accuracy: es producción responsable.

Datasets sugeridos (todos públicos):

  • UCI Adult (predecir si una persona gana > 50k) — clásico para auditoría de fairness.
  • COMPAS (riesgo de reincidencia, ProPublica) — demuestra sesgos raciales fuertes.
  • Propio: clasificación de mensajes de la pupusería como pedido vs. consulta.

Entregables (Jupyter notebook + reporte):

  1. EDA (cap. 2) — distribución de variables, valores faltantes, balance de clases.
  2. Modelo base (cap. 2-3) — KNN, árbol, random forest o red neuronal simple. Métricas: accuracy, precision, recall, F1, AUC.
  3. Validación cruzada + tuning de hiperparámetros (cap. 2).
  4. Explicabilidad (cap. 5) — SHAP o LIME sobre 5 predicciones individuales: ¿por qué predijo lo que predijo?
  5. Auditoría de sesgo (cap. 5) — calculá demographic parity y equal opportunity por subgrupo (género, raza, edad, según el dataset). ¿Hay disparidad? ¿Cómo la mitigarías?
  6. Card del modelo estilo Hugging Face: data sources, intended use, limitations, fairness considerations.

Criterio de éxito: un revisor que no sabe ML puede leer la sección de auditoría y entender los riesgos de poner el modelo en producción.

Tiempo estimado: 3 semanas. Es portafolio fuerte para ML/data science roles.


Definiciones nuevas: sesgo algorítmico, sesgo de representación, sesgo de medición, feedback loop, fairness, demographic parity, equal opportunity, equalized odds, disparate impact, SHAP, LIME, explicabilidad, caja negra, EU AI Act, GDPR, derecho a la explicación, IA responsable.