Catálogo
Tuxpas S.A.C / AJE Group / Pedido Sugerido MLOps

Métricas y criterios del modelo

Métricas de calidad de recomendación, umbrales de promoción de modelo y framework de detección de drift para el Nivel 3
Código
DOC-AF-04
Fase
Análisis Funcional · sem 1 (18 → 22 may)
Fecha
2026-05-15
Autor
Adrian Ulloa · Squad Lead Tuxpas

Resumen

Este documento define qué se mide, cómo se mide y qué umbrales aplican para evaluar la calidad de los modelos de recomendación del proyecto Pedido Sugerido. Cubre tres dimensiones independientes:

  1. Métricas de calidad — evalúan qué tan buenas son las recomendaciones del modelo (Nivel 1-2).
  2. Métricas de drift — detectan cuándo los datos o el comportamiento del modelo cambian en producción (Nivel 3).
  3. Criterios de aprobación — definen cuándo un modelo nuevo se puede promover a producción (Nivel 2-3).

Hallazgo importante del inventario: el pipeline canónico actual (cicd/src/PS_MP_*.py) no computa métricas de calidad de modelo. La función calcular_metricas_y_ensamblar en PS_MP_3_reglas_negocio.py calcula segmentación de clientes (irregularidad, antigüedad), no métricas de recomendación (NDCG, Precision, etc.).

Implicación: la implementación de este framework de métricas es parte del alcance del Nivel 2 del proyecto. El AF define el qué/cómo/cuánto; la implementación efectiva entra en el RTM (DOC-AF-07) con criterio testeable.


Métricas de calidad de recomendación

Las tres métricas que la propuesta v2 establece como criterio de éxito:

1. NDCG@10 · Normalized Discounted Cumulative Gain

Atributo Valor
Definición Métrica de ranking que valora más las recomendaciones relevantes en las primeras posiciones del top-K. Normaliza al rango [0, 1] · valor más alto = mejor ranking.
Fórmula NDCG@K = DCG@K / IDCG@K · donde DCG@K = Σ rel_i / log₂(i+1) para i=1..K
K usado 10 (top-10 productos recomendados por cliente)
Cómo se mide Comparar las recomendaciones del modelo contra las compras reales del cliente en una ventana posterior (holdout temporal · típicamente 30 días).
Relevancia (rel_i) Binaria · 1 si el cliente compró el producto en el holdout, 0 si no. Alternativa: ponderada por cant_cajafisicavta.
Baseline a obtener Por país, computado durante el Desarrollo Nivel 1 al deployar el modelo actual. Documentado en DT-N2.
Umbral de promoción a producción Modelo nuevo debe tener NDCG@10 ≥ baseline + 0.01 (según propuesta v2)
Frecuencia de cómputo Semanal (matchea cadencia del pipeline de entrenamiento del Nivel 2)

2. Precision@K

Atributo Valor
Definición Fracción de productos en el top-K recomendado que el cliente efectivamente compró en el holdout.
Fórmula Precision@K = #relevantes_en_top-K / K
K usado 5 y 10 (dos valores reportados)
Cómo se mide Igual que NDCG@10 · holdout temporal de 30 días.
Baseline a obtener Por país · DT-N2
Umbral de promoción Precision@5 ≥ baseline · Precision@10 ≥ baseline (empate aceptable; el criterio fuerte es NDCG@10)
Frecuencia de cómputo Semanal

3. Coverage

Atributo Valor
Definición Fracción del catálogo de SKUs que el modelo efectivamente recomienda al menos una vez en el conjunto de clientes evaluados.
Fórmula Coverage =
Cómo se mide Sobre la unión de todas las recomendaciones top-10 generadas en un run del pipeline.
Baseline a obtener Por país · DT-N2
Umbral mínimo Coverage ≥ 30% (propuesto · validar con AJE en Sesión 2)
Razón del umbral Coverage bajo (< 30%) sugiere que el modelo está sesgado hacia los SKUs más populares y deja sin exposición a long-tail · riesgo de comoditización
Frecuencia de cómputo Semanal

Métricas complementarias (consideradas pero fuera del scope del Nivel 2)

Métrica Descripción Cuándo evaluar
Recall@K Fracción de los productos relevantes que aparecen en el top-K Si AJE solicita medir "no perdimos oportunidades"
MAP (Mean Average Precision) Promedio de precisiones a cada relevante en el ranking Útil para comparar variantes en grid de hiperparámetros (Nivel 3)
Diversity Distancia promedio entre SKUs recomendados al mismo cliente Si AJE quiere combatir homogeneización del catálogo
Novelty Inversa de la popularidad promedio de SKUs recomendados Complementaria a Coverage
Serendipity Combinación Novelty × Relevancia Avanzada · raramente trackeada en producción

Métricas de drift · Nivel 3

El Nivel 3 incluye reentrenamiento automático por drift. Esto requiere distinguir tres tipos de drift, cada uno con su propio detector y umbral.

1. Schema drift

Atributo Valor
Detector SageMaker Model Monitor (Data Quality Monitor)
Qué observa Columnas faltantes · columnas nuevas · tipos cambiados · cardinalidad anormal de categóricos
Threshold Cualquier cambio en el schema vs baseline registrado en Model Monitor
Acción al disparar Alerta crítica SNS · halt del pipeline hasta revisión humana. No se reentrenamiento automático · el equipo debe validar si es un cambio legítimo del upstream o un bug
Frecuencia de cómputo Cada ejecución del pipeline diario

2. Data drift (distribuciones de features)

Atributo Valor
Detector SageMaker Model Monitor (Data Quality Monitor con estadísticas custom)
Pruebas estadísticas Por variable:
Continuous — Kolmogorov-Smirnov (KS) test · p-value < 0.05 indica drift
Categorical — Chi-square test · p-value < 0.05 indica drift
Múltivariada — Population Stability Index (PSI) · PSI > 0.25 indica drift fuerte
Baseline Estadísticas computadas sobre los datos del último entrenamiento aprobado (stored en S3 como JSON)
Threshold PSI > 0.25 en 2+ features clave (features definidas en DT-N2) dispara reentrenamiento
Frecuencia de cómputo Diaria (en el pipeline de inferencia)

3. Concept drift / Model performance drift

Atributo Valor
Detector Cálculo offline de NDCG@10 vs baseline, semanal
Qué observa Degradación de la métrica de calidad sin cambio en schema/data drift
Threshold NDCG@10 cae > 5% vs el último baseline aprobado durante 2 semanas consecutivas
Acción al disparar Reentrenamiento automático (Nivel 3 retraining pipeline)
Frecuencia de cómputo Semanal

Trigger consolidado de reentrenamiento

El pipeline de retraining se dispara cuando al menos una condición se cumple:

Cooldown

Tras un reentreno exitoso, no se dispara otro reentreno por al menos 14 días (evita oscilación en escenarios borderline).


Criterios de aprobación de modelo

Cuando un modelo nuevo entra al Model Registry (Nivel 2), pasa por una secuencia de gates antes de promoverse a producción.

Gate 1 · Tests de regresión automáticos

Test Criterio Bloqueo
Schema del output Output tiene las columnas esperadas con tipos correctos
Distribución de Coverage Coverage ≥ 30%
Volumen de recomendaciones Genera recomendaciones para ≥ 95% de los clientes elegibles
Latencia de inferencia p99 ≤ 200ms por cliente Solo Nivel 3
Cost guard Costo total del run estimado ≤ 1.5× del run baseline Solo Nivel 3

Gate 2 · Métricas de calidad vs baseline

Métrica Criterio Bloqueo
NDCG@10 ≥ baseline + 0.01
Precision@5 ≥ baseline (suave)
Precision@10 ≥ baseline (suave)
Coverage ≥ baseline · acepta delta -2% si NDCG mejora ≥ 0.02 (con override)

Si las métricas no superan, el modelo se marca Rejected automáticamente y queda en el Registry como referencia histórica.

Gate 3 · Aprobación humana

Cuándo se requiere (propuesta del AF, a confirmar con AJE en Sesión 2):

Mecanismo de aprobación:

Workflow visual

Modelo entrenado
       │
       ▼
[ Gate 1 · Tests regresión ]
       │
   ✓   │   ✗ → Rejected
       ▼
[ Gate 2 · Métricas vs baseline ]
       │
   ✓   │   ✗ → Rejected
       ▼
[ Gate 3 · Aprobación humana ]
       │
   ✓   │   ✗ → Rejected
       ▼
   Approved
       │
       ▼
Deploy a producción (endpoint o batch pipeline)

Storage de baselines y métricas

Item Ubicación
Baseline de schema y data quality s3://aje-dev-analytics-artifacts-s3/ps-pipeline/<PAIS>/baselines/data_quality/ (generado por SageMaker Model Monitor)
Baseline de model quality (NDCG, Precision, Coverage) s3://aje-dev-analytics-artifacts-s3/ps-pipeline/<PAIS>/baselines/model_quality/<fecha>.json
Histórico de métricas DynamoDB aje-dev-ps-modelmetrics-dynamodb (nueva, parte del Nivel 2)
Reportes de drift s3://aje-dev-analytics-artifacts-s3/ps-pipeline/<PAIS>/drift_reports/<fecha>/
Dashboards CloudWatch con métricas aje-dev-ps-modelquality-dashboard-cloudwatch (nuevo, parte del Nivel 2)

Esto se reconfirma en DOC-AF-08 (Catálogo de monitoring) con las alarmas correspondientes.


Métricas operacionales (complementarias a las de modelo)

Además de las métricas de calidad del modelo, el pipeline tiene métricas operacionales que también requieren tracking. Estas se cubren en detalle en DOC-AF-08 Catálogo de monitoring, pero se mencionan acá por completitud:

Métrica operacional Threshold Severity
ExecutionsFailed por hora > 0 Critical
ExecutionsStopped por hora > 0 Warning
Duración del step Limpieza > 15 min Warning
Duración del step Modelado > 30 min Warning
Duración total del pipeline por país > 60 min Warning
Latencia entre cron y disparo del SM pipeline > 5 min Warning
Costo mensual del pipeline > USD X (threshold a definir) Warning

Riesgos identificados

# Riesgo Probabilidad Impacto Mitigación
1 Baselines no disponibles al inicio del Nivel 2 porque el modelo actual no se ha evaluado nunca contra holdout temporal Alta Medio · retrasa la definición de umbrales hasta tener 2-3 semanas de datos Computar baselines durante la primera semana del Desarrollo Nivel 1 (antes de que arranque Nivel 2)
2 AJE no tiene baseline cuantitativo del modelo TEST de México · solo "sabe que funciona" Media Alto · sin baseline, "modelo nuevo supera al actual en ≥ 0.01" no se puede validar Documentar en RTM como acción preparatoria del Nivel 1: ejecutar el modelo canónico actual contra holdout para fijar baseline pre-Nivel 2
3 Umbral Coverage ≥ 30% puede ser arbitrario según el tipo de catálogo de cada país Media Bajo Validar el umbral por país durante DT-N2 (no asumir uno global)
4 Tests de regresión no especificados en el código actual Conocido Medio Parte del alcance del Nivel 1: agregar tests Python que validen schema y volumen del output
5 Notificaciones SNS de aprobación de modelo dependen de que AJE configure los suscriptores correctos Conocido Bajo DOC-AF-08 documenta la lista de suscriptores · AJE confirma los emails en Sesión 1

Próximos pasos

  1. Sesión 2 (Mié 20-may) · validar con AJE:
    • El umbral Coverage ≥ 30% (o ajustar por país)
    • El criterio de bloqueo de Gate 2 sobre Precision (suave vs duro)
    • La política de aprobación humana en Nivel 2 vs Nivel 3
    • La frecuencia de cómputo semanal de NDCG@10
  2. Durante Desarrollo Nivel 1 · computar baselines reales por país y poblar las tablas de este documento con valores concretos.
  3. Touchpoint Nivel 2 (Lun 15-jun) · confirmar el storage de baselines, el workflow de aprobación humana y los thresholds finales antes de implementar.
  4. Touchpoint Nivel 3 (Lun 6-jul) · confirmar los thresholds de drift con data observada de 4 semanas en Nivel 1+2 (no asumidos).