Salta el contingut

Demostració: identificació i mitigació de biaix amb Amazon SageMaker Clarify

El cas

Una enginyera de Machine Learning rep l'encàrrec de fer un informe de biaix per al dataset de la seva empresa. L'empresa desenvolupa un model per avaluar nivells d'ingressos, i volen comprovar que el model no conté biaix per gènere ni per edat. Per identificar i avaluar possibles biaixos al dataset, l'enginyera decideix fer servir SageMaker Clarify per generar un informe de biaix.

L'objectiu del model és determinar si una persona guanya 50.000 USD anuals o més, on el resultat positiu (guanyar ≥ 50.000 USD) es considera el resultat favorable.

Sobre l'entrenament del model

En aquest punt del flux de treball, l'enginyera ja hauria d'haver entrenat i avaluat el model. Aquest mòdul (M5074) se centra en l'enginyeria de dades per a Big Data, no en l'entrenament de models —això es treballa amb més profunditat als mòduls M5071-M5073 del cicle. Per tant, aquesta demostració no cobreix la configuració ni l'entrenament del model: se centra exclusivament en els passos de configuració i avaluació de l'informe de biaix, donant per fet que el model ja existeix i està desplegat.

Com avalua el biaix SageMaker Clarify

SageMaker Clarify avalua els models segons diferents dimensions de biaix. En particular, comprova:

  • Paritat demogràfica: si determinats grups tenen més probabilitat de rebre prediccions positives o negatives que d'altres, amb independència de si això es correspon amb la realitat de les dades.
  • Igualtat de valor predictiu: si el model és igual de predictiu (igual de fiable) en tots els grups, és a dir, si els seus errors es reparteixen de manera similar entre grups en lloc de concentrar-se en un de concret.

El procés complet inclou dues tasques principals:

  1. Crear un informe de biaix amb la configuració per a l'anàlisi prèvia (pre-training) i posterior (post-training) a l'entrenament.
  2. Avaluar l'informe de biaix considerant, com a mínim, el desequilibri de classes (CI) i la diferència en les proporcions d'etiquetes (DPL).

Pas 1 — Configurar les dades i els facets a analitzar

El primer pas defineix on són les dades, quina és l'etiqueta objectiu i quins facets (grups demogràfics) cal vigilar. En aquest cas, els facets són sexe i grup_edat.

from sagemaker import clarify

session = sagemaker.Session()
rol_iam = sagemaker.get_execution_role()

clarify_processor = clarify.SageMakerClarifyProcessor(
    role=rol_iam,
    instance_count=1,
    instance_type="ml.m5.xlarge",
    sagemaker_session=session,
)

# On són les dades i quina és l'etiqueta objectiu
data_config = clarify.DataConfig(
    s3_data_input_path="s3://bucket-empresa/dades/ingressos_train.csv",
    s3_output_path="s3://bucket-empresa/informes-biaix/ingressos/",
    label="ingressos_50k",   # 1 = guanya >= 50.000 USD, 0 = guanya < 50.000 USD
    headers=["edat", "grup_edat", "sexe", "nivell_estudis", "hores_setmanals",
              "sector", "ingressos_50k"],
    dataset_type="text/csv",
)

# Els grups (facets) que es volen vigilar i el resultat que es considera favorable
bias_config = clarify.BiasConfig(
    label_values_or_threshold=[1],                 # 1 = resultat positiu (favorable)
    facet_name=["sexe", "grup_edat"],
    facet_values_or_threshold=[["dona"], ["50+"]],  # grups potencialment desafavorits
)

Per què cal indicar el grup \"desafavorit\" explícitament?

SageMaker Clarify necessita saber quin valor de cada facet vols tractar com a grup d'interès per calcular les mètriques de forma direccional (per exemple, DPL és positiu si el grup de referència té una taxa de resultats positius més alta que el grup indicat, i negatiu en cas contrari). Triar "dona" i "50+" reflecteix la hipòtesi de partida de l'enginyera: sospita que aquests grups podrien estar en desavantatge.

Pas 2 — Configurar el model i executar l'informe complet

Per calcular les mètriques posteriors a l'entrenament cal indicar a Clarify com obtenir les prediccions del model ja entrenat (per exemple, desplegant-lo temporalment com a endpoint de SageMaker durant el job d'anàlisi):

# Com Clarify ha d'invocar el model per obtenir prediccions
model_config = clarify.ModelConfig(
    model_name="model-ingressos-v1",
    instance_type="ml.m5.xlarge",
    instance_count=1,
    accept_type="text/csv",
)

# Com interpretar la sortida del model (llindar de classificació)
predictions_config = clarify.ModelPredictedLabelConfig(
    probability_threshold=0.5,
)

# Executar l'anàlisi de biaix previ I posterior a l'entrenament en un sol job
clarify_processor.run_bias(
    data_config=data_config,
    bias_config=bias_config,
    model_config=model_config,
    model_predicted_label_config=predictions_config,
    pre_training_methods="all",
    post_training_methods="all",
)

Aquest job processa el dataset, desplega temporalment el model per obtenir-ne les prediccions, calcula totes les mètriques disponibles (pre i post-training) per a cada facet, i genera un informe a la ruta S3 indicada a s3_output_path, en format JSON i HTML (report.html, llest per obrir directament al navegador).

Pas 3 — Avaluar les mètriques prèvies a l'entrenament

L'informe generat inclou, per a cada facet, els valors de totes les mètriques de la pàgina Biaix en les dades. Aquesta demostració se centra en les dues més bàsiques: CI i DPL.

Exemple (fictici, però versemblant) de resultats per al facet sexe:

Mètrica Valor Interpretació
CI (Class Imbalance) 0,42 El grup de referència (homes) està molt més representat al dataset que el grup dona. Un valor proper a +1 indicaria un desequilibri extrem.
DPL (Difference in Proportions of Labels) 0,28 Els homes tenen una taxa de resultats positius (ingressos ≥ 50.000 USD) un 28% més alta que les dones al dataset original, abans de cap entrenament.
import json

with open("report.json") as f:
    informe = json.load(f)

# Extreure les mètriques pre-training del facet "sexe"
metriques_sexe = informe["pre_training_bias_metrics"]["facets"]["sexe"]
for metrica in metriques_sexe[0]["metrics"]:
    print(f"{metrica['name']}: {metrica['value']:.3f}")

Interpretació: un CI de 0,42 i un DPL de 0,28 indiquen que, ja a les dades en brut, hi ha tant un problema de representació (menys dones al dataset) com un problema d'etiquetatge (les dones que sí hi són tenen una taxa de resultats positius més baixa). Aquests dos problemes es poden combinar i reforçar mútuament durant l'entrenament.

Pas 4 — Avaluar les mètriques posteriors a l'entrenament i concloure

Les mètriques post-training comparen les prediccions del model (no les etiquetes originals) entre grups. Dues de les més habituals:

  • DPPL (Difference in Positive Proportions in Predicted Labels): l'equivalent post-training del DPL, però sobre les prediccions del model en lloc de les etiquetes reals.
  • DI (Disparate Impact): la ràtio entre la proporció de resultats positius predits per al grup desafavorit i la del grup de referència. Un valor inferior a 0,8 s'interpreta sovint, seguint el criteri de la regla del 80% (four-fifths rule) usat en context legal als EUA, com a indici d'impacte discriminatori.

Exemple (fictici) de resultats post-training per al facet sexe:

Mètrica Valor Interpretació
DPPL 0,31 El model prediu un resultat positiu per als homes amb una freqüència un 31% més alta que per a les dones — un valor fins i tot lleugerament superior al DPL original (0,28): el model no ha corregit el biaix de les dades, sinó que l'ha mantingut.
DI 0,61 Per cada 100 prediccions positives per a homes, només n'hi ha 61 per a dones en proporció equivalent. Per sota del llindar de 0,8, aquest valor és un indici clar d'impacte discriminatori que cal investigar i corregir.

Conclusió de la demostració: el model no s'hauria de desplegar tal com està

Amb un CI i un DPL elevats a les dades, i un DPPL i un DI que confirmen que el model reprodueix (i no corregeix) aquest desequilibri a les seves prediccions, l'enginyera ha de aturar el desplegament i aplicar mesures de mitigació abans de continuar. Aquest és exactament el tipus de decisió que un informe de biaix ha de permetre prendre abans que el model arribi a producció.

Possibles accions de mitigació

A partir d'aquesta conclusió, l'enginyera té diverses opcions, moltes ja treballades en aquest bloc:

  1. Corregir el desequilibri a les dades abans de tornar a entrenar, amb les tècniques de Desequilibri de classes (remostreig, SMOTE) aplicades sobre el facet sexe.
  2. Revisar el procés de recollida de dades: si el dataset prové d'un sistema històric, pot ser que el propi procés de recollida ja introdueixi el biaix (per exemple, si històricament s'han concedit menys préstecs o llocs de feina ben remunerats a un grup, les dades "reals" ja arrosseguen aquesta discriminació passada).
  3. Tornar a entrenar i tornar a executar l'informe de biaix, comparant els valors de DPPL i DI abans i després de la correcció, per confirmar que la mitigació ha funcionat.
  4. Documentar la decisió i el procés, ja que la traçabilitat de les decisions de mitigació de biaix és un requisit creixent en regulacions com l'AI Act europeu.

AC5074/08/04 — Miniactivitat

A partir dels valors fictius d'aquesta demostració (CI = 0,42, DPL = 0,28, DPPL = 0,31, DI = 0,61 per al facet sexe), respon:

  1. El DPPL (0,31) és superior al DPL (0,28). Què significa això sobre el comportament del model respecte a les dades originals?
  2. Si després d'aplicar SMOTE sobre el facet sexe i reentrenar el model, el nou DI fos 0,87, què conclouries? Seria suficient per desplegar el model sense cap altra comprovació? Raona la resposta.
  3. Per què creus que cal calcular tant mètriques pre-training com post-training, en lloc de confiar només en una de les dues?

Bloc 8 | Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027