É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:
donde es el atributo sensible (género, raza, etc.)
2. Equal Opportunity: La tasa de verdaderos positivos (recall) es igual para todos los grupos:
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):
- Equidad (Fairness): No discriminar por características protegidas.
- Confiabilidad y seguridad (Reliability & Safety): Funcionar correctamente y sin dañar.
- Privacidad (Privacy): Respetar y proteger los datos personales.
- Inclusión (Inclusiveness): Considerar a todos los grupos.
- Transparencia (Transparency): Ser comprensible y auditable.
- 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.
- Un banco usa IA para decidir si aprueba préstamos, entrenado con datos históricos de los últimos 20 años.
- Una app de delivery predice cuánto tiempo tardará el pedido, basándose en datos de entregas anteriores.
- Un hospital usa IA para priorizar pacientes en urgencias, entrenado con datos de 10 hospitales privados.
Solución
1. Banco — préstamos:
- Fuente de sesgo: Datos históricos reflejan discriminación crediticia pasada (menos préstamos aprobados en ciertos códigos postales, correlacionados con etnia).
- Grupo perjudicado: Minorías étnicas, zonas rurales, mujeres (históricamente menos capital).
- Métrica: Equal Opportunity (mismo recall para todos los grupos) + Disparate Impact (≥ 0.8).
2. App de delivery — tiempo de entrega:
- Fuente de sesgo: Si los repartidores priorizaron ciertas zonas (las más seguras/rentables), los datos de tiempo de entrega para otras zonas son escasos o peores. El modelo aprenderá a predecir tiempos más altos para esas zonas → profecía autocumplida.
- Grupo perjudicado: Clientes en zonas de menor ingreso o más alejadas.
- Métrica: MAE (Mean Absolute Error) comparado por zona geográfica. Igual precisión en todas las zonas.
3. Hospital — priorización en urgencias:
- Fuente de sesgo: 10 hospitales privados tienen pacientes con mejor acceso a atención preventiva → el "típico" paciente del training set es diferente al de un hospital público. El modelo puede subestimar la gravedad de enfermedades crónicas mal manejadas.
- Grupo perjudicado: Pacientes de bajos recursos con patologías crónicas avanzadas.
- Métrica: Equal Opportunity (mismo recall = misma tasa de detección de urgencias reales) por nivel socioeconómico.
✏️ 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?
Solución
a. Features:
- Incluir: Promedio académico, créditos aprobados, situación económica (documentada), primera generación universitaria, participación en actividades extracurriculares.
- Excluir: Género, etnia, municipio de origen, nombre (proxies para discriminación), foto, estado civil.
- Cuidado: Municipio de origen puede ser proxy de etnia → evaluar correlación antes de incluirlo.
b. Fairness: Equal Opportunity — misma tasa de éxito (beca otorgada) para estudiantes de distintos géneros y etnias que cumplen los requisitos académicos. Esto prioriza no excluir a quienes merecen la beca sobre no incluir a quienes no la merecen.
c. Supervisión humana:
- El sistema asigna tres categorías: aprobado automático, rechazado automático, revisión humana (la zona gris).
- Casos de revisión humana: comité de 3 personas con criterios documentados.
- Cualquier estudiante puede apelar con documentación adicional.
d. Auditoría semestral:
- Medir Disparate Impact por género, etnia, municipio.
- Comparar tasa de becas otorgadas vs tasa de graduación exitosa por grupo (¿el modelo predice bien quién aprovechará la beca?).
- Revisión externa independiente cada 2 años.
- Publicar métricas de fairness anonimizadas.
5.7 Cierre del libro
Este libro recorrió el paisaje completo de la IA moderna:
- Búsqueda y heurística — los fundamentos algorítmicos: BFS, DFS, A*.
- Aprendizaje supervisado — KNN, árboles de decisión, el tradeoff sesgo-varianza.
- Redes neuronales — de la neurona al deep learning y CNNs.
- Aprendizaje no supervisado — K-means, PCA, sistemas de recomendación.
- É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
- Russell & Norvig, Artificial Intelligence: A Modern Approach (4ta ed.) — referencia completa.
- Géron, Hands-On Machine Learning — práctico con código.
- O'Neil, Weapons of Math Destruction — sesgos algorítmicos en el mundo real.
- Barocas, Hardt & Narayanan, Fairness and Machine Learning (fairmlbook.org) — gratis online.
- EU AI Act — texto oficial del marco regulatorio.
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):
- EDA (cap. 2) — distribución de variables, valores faltantes, balance de clases.
- Modelo base (cap. 2-3) — KNN, árbol, random forest o red neuronal simple. Métricas: accuracy, precision, recall, F1, AUC.
- Validación cruzada + tuning de hiperparámetros (cap. 2).
- Explicabilidad (cap. 5) — SHAP o LIME sobre 5 predicciones individuales: ¿por qué predijo lo que predijo?
- 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?
- 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.