1. Skip to content

1. Ética y Gobernanza de IA

Ética, sesgos, fairness, explicabilidad y gobernanza en sistemas de IA.


1.1 ⚖️ Introducción

Qué: Principios y prácticas para construir sistemas de IA éticos, justos y transparentes.

Por qué: IA sin ética puede amplificar sesgos, discriminar y causar daño a escala. Regulaciones (GDPR, AI Act) exigen responsabilidad.

Cómo: Detectar y mitigar bias, medir fairness, explicar decisiones, proteger privacy, documentar modelos.

1.1.1 Principios Fundamentales

Principio Explicación
Fairness El modelo no debe discriminar por raza, género, edad, etc.
Transparency Las decisiones del modelo deben ser explicables
Privacy Proteger datos personales y sensibles
Accountability Responsabilidad clara por decisiones del modelo
Safety El modelo no debe causar daño

1.2 🎯 Bias en Machine Learning

1.2.1 Tipos de Bias

Tipo Descripción Ejemplo
Historical Bias Bias en datos históricos refleja discriminación pasada Dataset de contrataciones con más hombres en tech → modelo aprende a preferir hombres
Representation Bias Grupos subrepresentados en datos de entrenamiento Dataset de reconocimiento facial con 90% personas blancas → peor performance en personas de color
Measurement Bias Features usadas como proxies para atributos protegidos Usar código postal como proxy para raza/ingresos
Aggregation Bias Modelo único para grupos diversos con necesidades diferentes Modelo de diagnóstico médico entrenado solo en adultos, usado en niños
Evaluation Bias Benchmark no representa población real Evaluar modelo de NLP solo en inglés formal, usar en slang

1.3 👮‍♂️ Gestión de Riesgo y Auditoría Humana

1.3.1 Clasificación de Riesgo (EU AI Act)

Nivel Descripción Ejemplos Requisito de Auditoría
Riesgo Inaceptable Amenaza a seguridad o derechos Social scoring, manipulación subliminal 🛑 Prohibido
Alto Riesgo Infraestructura crítica, empleo, servicios esenciales Auth, Crypto, Hiring, Crédito 👮 Auditoría Humana Obligatoria
Riesgo Limitado Chatbots, deepfakes Customer service, generación de contenido ⚠️ Transparencia (avisar que es IA)
Riesgo Mínimo Filtros de spam, juegos Videojuegos, filtros de correo Libre (sin requisitos extra)

1.3.2 Protocolo de Auditoría Humana (Human-in-the-loop)

Para componentes de Alto Riesgo (ej: Autenticación, Cifrado, Pagos):

  1. Prohibición de Commit Directo: IA no puede commitear a main sin review humano.
  2. Review de Seguridad: Experto humano debe validar línea por línea (no "LGTM" rápido).
  3. Sandboxing: Código generado corre en entorno aislado primero.
  4. Firma Digital: El humano firma que revisó y asume responsabilidad (Accountability).

[!IMPORTANT] Nunca delegues decisiones arquitectónicas críticas o de seguridad a la IA. La IA es un copiloto, el humano es el capitán.


1.3.3 Detección de Bias

1.3.3.1 1. Análisis de Datos

import pandas as pd

# Verificar balance de clases por grupo protegido
df.groupby(['protected_attribute', 'target']).size()

# Ejemplo: Dataset de crédito
#                    approved
# gender  age_group          
# female  <30           1200
#         50         3400
#         >50           2100
# male    <30           1800
#         50         4200
#         >50           2500

# ⚠️ Warning: Mujeres <30 subrepresentadas

1.3.3.2 2. Fairness Metrics (ver sección siguiente)


1.3.3.3 3. Feature Importance por Grupo

from sklearn.inspection import permutation_importance

# Calcular feature importance por grupo
for group in df['protected_attribute'].unique():
    group_data = df[df['protected_attribute'] == group]
    importance = permutation_importance(model, group_data[features], group_data['target'])
    print(f"Group {group}: {importance.importances_mean}")

# ⚠️ Si features diferentes son importantes para diferentes grupos → posible bias

1.3.4 Mitigación de Bias

Técnica Cuándo Usar Ejemplo
Pre-processing Antes de entrenar modelo Rebalancear dataset (oversampling, undersampling, SMOTE)
In-processing Durante entrenamiento Agregar fairness constraints (adversarial debiasing, reweighting)
Post-processing Después de entrenar modelo Ajustar thresholds por grupo para igualar métricas de fairness

1.3.4.1 Ejemplo: Rebalanceo con SMOTE

from imblearn.over_sampling import SMOTE

# Rebalancear dataset por grupo protegido
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X, y)

# Verificar balance
pd.Series(y_resampled).value_counts()

1.3.4.2 Ejemplo: Fairness Constraints

from aif360.algorithms.inprocessing import AdversarialDebiasing

# Entrenar modelo con fairness constraint
debiased_model = AdversarialDebiasing(
    privileged_groups=[{'gender': 1}],  # Hombres
    unprivileged_groups=[{'gender': 0}],  # Mujeres
    scope_name='debiased_classifier',
    debias=True
)
debiased_model.fit(dataset)

1.4 📊 Fairness Metrics

1.4.1 Demographic Parity

Definición: Probabilidad de outcome positivo debe ser igual para todos los grupos.

Fórmula:

P(Y_pred=1 | A=0) = P(Y_pred=1 | A=1)

Ejemplo:

# Calcular demographic parity
def demographic_parity(y_pred, protected_attr):
    groups = protected_attr.unique()
    rates = {}
    for group in groups:
        mask = protected_attr == group
        rates[group] = y_pred[mask].mean()
    return rates

# Ejemplo: Aprobación de crédito
# Group 0 (mujeres): 0.65
# Group 1 (hombres): 0.70
# Diferencia: 0.05 → ⚠️ Posible bias

Cuándo usar:

  • Cuando queremos igualdad de oportunidades (ej: contratación, admisiones)

Limitación:

  • Puede forzar igualdad de outcomes incluso si hay diferencias legítimas en inputs

1.4.2 Equalized Odds

Definición: True positive rate y false positive rate deben ser iguales para todos los grupos.

Fórmula:

P(Y_pred=1 | Y_true=1, A=0) = P(Y_pred=1 | Y_true=1, A=1)  # TPR
P(Y_pred=1 | Y_true=0, A=0) = P(Y_pred=1 | Y_true=0, A=1)  # FPR

Ejemplo:

from sklearn.metrics import confusion_matrix

def equalized_odds(y_true, y_pred, protected_attr):
    groups = protected_attr.unique()
    metrics = {}
    for group in groups:
        mask = protected_attr == group
        tn, fp, fn, tp = confusion_matrix(y_true[mask], y_pred[mask]).ravel()
        tpr = tp / (tp + fn)
        fpr = fp / (fp + tn)
        metrics[group] = {'TPR': tpr, 'FPR': fpr}
    return metrics

# Ejemplo: Predicción de reincidencia
# Group 0: TPR=0.75, FPR=0.20
# Group 1: TPR=0.80, FPR=0.25
# ⚠️ Diferencias en TPR y FPR → posible bias

Cuándo usar:

  • Cuando queremos igualdad en accuracy para todos los grupos (ej: diagnóstico médico, predicción de riesgo)

1.4.3 Calibration

Definición: Entre individuos con misma probabilidad predicha, la fracción de outcomes positivos debe ser igual para todos los grupos.

Fórmula:

P(Y_true=1 | Y_pred=p, A=0) = P(Y_true=1 | Y_pred=p, A=1)

Cuándo usar:

  • Cuando las probabilidades predichas se usan para tomar decisiones (ej: scoring de crédito)

1.4.4 Trade-offs entre Fairness Metrics

[!WARNING] Es matemáticamente imposible satisfacer todas las fairness metrics simultáneamente (excepto en casos triviales).

Ejemplo:

  • Demographic parity vs Equalized odds: Si hay diferencias reales en base rates entre grupos, no se pueden satisfacer ambas.

Solución:

  • Elegir la métrica más apropiada para el contexto de negocio y regulaciones aplicables.

1.5 🔍 Explicabilidad (XAI)

1.5.1 ¿Por Qué Explicabilidad?

Razón Ejemplo
Regulaciones GDPR "derecho a explicación"
Trust Usuarios confían más en decisiones explicables
Debugging Detectar errores en modelo
Fairness Verificar que modelo no usa features discriminatorias

1.5.2 SHAP (SHapley Additive exPlanations)

Qué hace: Explica contribución de cada feature a la predicción.

Ejemplo:

import shap

# Entrenar modelo
model = XGBClassifier()
model.fit(X_train, y_train)

# Calcular SHAP values
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

# Visualizar
shap.summary_plot(shap_values, X_test)

Interpretación:

  • Features con SHAP values positivos → aumentan probabilidad de clase positiva
  • Features con SHAP values negativos → disminuyen probabilidad

1.5.3 LIME (Local Interpretable Model-agnostic Explanations)

Qué hace: Explica predicciones individuales aproximando modelo complejo con modelo simple local.

Ejemplo:

from lime.lime_tabular import LimeTabularExplainer

# Crear explainer
explainer = LimeTabularExplainer(
    X_train.values,
    feature_names=X_train.columns,
    class_names=['rejected', 'approved'],
    mode='classification'
)

# Explicar predicción individual
exp = explainer.explain_instance(
    X_test.iloc[0].values,
    model.predict_proba
)
exp.show_in_notebook()

1.5.4 Feature Importance

Qué hace: Ranking de features por importancia global.

Ejemplo:

from sklearn.inspection import permutation_importance

# Calcular permutation importance
result = permutation_importance(model, X_test, y_test, n_repeats=10)

# Visualizar
import matplotlib.pyplot as plt
sorted_idx = result.importances_mean.argsort()
plt.barh(X_test.columns[sorted_idx], result.importances_mean[sorted_idx])
plt.xlabel("Permutation Importance")

1.6 🔐 Privacy

1.6.1 Differential Privacy

Qué es: Garantía matemática de que agregar/remover un individuo del dataset no cambia significativamente el output.

Ejemplo:

from diffprivlib.models import LogisticRegression

# Entrenar modelo con differential privacy
model = LogisticRegression(epsilon=1.0)  # Privacy budget
model.fit(X_train, y_train)

# Modelo entrenado sin ver datos individuales directamente

Trade-off:

  • ✅ Privacy garantizada matemáticamente
  • ❌ Accuracy reducida (más privacy → menos accuracy)

1.6.2 Federated Learning

Qué es: Entrenar modelo sin centralizar datos (modelo viaja a los datos, no al revés).

Ejemplo:

# Pseudocódigo
# Servidor central
global_model = initialize_model()

for round in range(num_rounds):
    # Enviar modelo a clientes
    for client in clients:
        local_model = client.train(global_model, local_data)
        send_to_server(local_model.weights)

    # Agregar pesos locales
    global_model.weights = average(all_local_weights)

Ventajas:

  • ✅ Datos nunca salen del dispositivo del usuario
  • ✅ Compliance con GDPR, HIPAA

Desafíos:

  • ❌ Heterogeneidad de datos entre clientes
  • ❌ Comunicación costosa

1.6.3 Data Anonymization

Técnicas:

Técnica Descripción Ejemplo
K-anonymity Cada registro es indistinguible de al menos k-1 otros Generalizar edad (25 → 30)
L-diversity Cada grupo de k registros tiene al menos L valores distintos en atributos sensibles Grupo de 5 personas con 3 diagnósticos diferentes
T-closeness Distribución de atributos sensibles en cada grupo es similar a distribución global Distribución de salarios en grupo similar a distribución general

1.7 📋 Gobernanza

1.7.1 Model Cards

Qué es: Documentación estandarizada de modelos ML.

Contenido:

  • Model Details: Tipo, arquitectura, versión
  • Intended Use: Para qué fue diseñado, limitaciones
  • Factors: Variables que afectan performance (demografía, contexto)
  • Metrics: Accuracy, fairness metrics
  • Training Data: Descripción, fuentes, bias conocidos
  • Ethical Considerations: Riesgos, mitigaciones

Ejemplo:

# Model Card: Credit Approval Model

## Model Details
- Type: XGBoost Classifier
- Version: 2.1.0
- Trained: 2015

## Intended Use
- Primary use: Approve/reject credit applications
- Out-of-scope: Not for use in countries with different regulations

## Factors
- Evaluated across gender, age, income brackets
- Performance varies by age group (lower accuracy for <25)

## Metrics
- Overall Accuracy: 0.87
- Demographic Parity Difference: 0.03
- Equalized Odds Difference: 0.05

## Training Data
- Source: Internal credit applications 202023
- Size: 500K applications
- Known bias: Underrepresentation of applicants <25

## Ethical Considerations
- Risk: May perpetuate historical bias in credit approval
- Mitigation: Applied SMOTE rebalancing, fairness constraints

1.7.2 Datasheets for Datasets

Qué es: Documentación estandarizada de datasets.

Contenido:

  • Motivation: Por qué se creó el dataset
  • Composition: Qué contiene, cuántos ejemplos, missing data
  • Collection Process: Cómo se recolectaron los datos
  • Preprocessing: Qué transformaciones se aplicaron
  • Uses: Para qué se puede/no se puede usar
  • Distribution: Cómo se distribuye, licencia
  • Maintenance: Quién mantiene, cómo reportar errores

1.7.3 AI Ethics Boards

Qué es: Comité que revisa proyectos de IA para identificar riesgos éticos.

Composición:

  • Técnicos (ML engineers, data scientists)
  • Expertos en ética
  • Legal/compliance
  • Representantes de grupos afectados

Proceso:

  1. Submission: Equipo envía propuesta de proyecto de IA
  2. Review: Ethics board evalúa riesgos (bias, privacy, safety)
  3. Decision: Aprobar, aprobar con condiciones, rechazar
  4. Monitoring: Seguimiento post-deployment

1.8 📋 Artefactos

1.8.1 Bias Detection Checklist

  • [ ] Representatividad: ¿Todos los grupos están representados proporcionalmente?
  • [ ] Balance: ¿Las clases están balanceadas por grupo protegido?
  • [ ] Proxies: ¿Hay features que son proxies para atributos protegidos? (ej: código postal → raza)
  • [ ] Historical bias: ¿Los datos históricos reflejan discriminación pasada?
  • [ ] Measurement bias: ¿Las features se miden de forma consistente para todos los grupos?
  • [ ] Evaluation: ¿El benchmark representa la población real?

1.8.2 Model Card Template

# Model Card: [Model Name]

## Model Details
- **Type**: [Classification/Regression/etc]
- **Architecture**: [XGBoost/Neural Network/etc]
- **Version**: [1.0.0]
- **Trained**: [YYYY-MM-DD]
- **Owner**: [Team/Person]

## Intended Use
- **Primary use**: [Description]
- **Out-of-scope uses**: [What NOT to use for]
- **Users**: [Who should use this model]

## Factors
- **Groups**: [Demographic groups evaluated]
- **Instrumentation**: [How data was collected]
- **Environment**: [Deployment environment]

## Metrics
- **Overall Accuracy**: [0.XX]
- **Precision/Recall**: [0.XX / 0.XX]
- **Fairness Metrics**:
  - Demographic Parity Difference: [0.XX]
  - Equalized Odds Difference: [0.XX]

## Training Data
- **Source**: [Where data came from]
- **Size**: [N examples]
- **Timeframe**: [YYYY-MM to YYYY-MM]
- **Known Bias**: [Describe bias]

## Ethical Considerations
- **Risks**: [Potential harms]
- **Mitigations**: [What was done to reduce risks]
- **Limitations**: [Known limitations]

## Caveats and Recommendations
- [Caveat 1]
- [Caveat 2]

1.8.3 Ethical Review Template

# Ethical Review: [Project Name]

## Project Overview
- **Description**: [What the AI system does]
- **Stakeholders**: [Who is affected]
- **Impact**: [Expected impact]

## Risk Assessment

### Bias Risk
- **Risk Level**: [Low/Medium/High]
- **Description**: [Potential bias]
- **Mitigation**: [How to address]

### Privacy Risk
- **Risk Level**: [Low/Medium/High]
- **Description**: [Privacy concerns]
- **Mitigation**: [How to protect privacy]

### Safety Risk
- **Risk Level**: [Low/Medium/High]
- **Description**: [Potential harm]
- **Mitigation**: [Safety measures]

### Fairness Risk
- **Risk Level**: [Low/Medium/High]
- **Description**: [Fairness concerns]
- **Mitigation**: [Fairness interventions]

## Decision
- [ ] Approved
- [ ] Approved with conditions: [List conditions]
- [ ] Rejected: [Reason]

## Monitoring Plan
- **Metrics to track**: [Fairness metrics, performance metrics]
- **Frequency**: [Weekly/Monthly]
- **Responsible**: [Team/Person]

1.9 📚 Recursos