# M2 · Ingeniería y Gestión de Datos para IA **Máster en Inteligencia Artificial, Automatización y Agentes Digitales** · Next Educación · Próxima edición **6 ECTS · 12 sesiones de una hora · Responsable de producción y coordinación: Sami Halawa Ribas** ## Descripción Construcción del sustrato de datos: extracción de fuentes heterogéneas, calidad, features y preparación de corpus para IA generativa, con pipelines documentados y reproducibles. ## Competencias del módulo 1. Extraer datos de fuentes heterogéneas. 2. Aplicar técnicas de limpieza y validación. 3. Diseñar features útiles para modelos. 4. Preparar corpus para IA generativa. 5. Documentar un pipeline de datos. ## Evaluación | Instrumento | Peso | |---|---:| | Prácticas de sesión | 35% | | Pipeline de módulo entregado y ejecutable | 45% | | Documentación y defensa | 20% | ## Mapa de sesiones | # | Sesión | Entregable | |---:|---|---| | 1 | Fuentes de datos y estrategias de extracción | Script de extracción reanudable y verificado. | | 2 | Ingesta desde bases de datos y SQL para IA | Consulta, extracto y comprobaciones ejecutadas. | | 3 | Calidad de datos y validación automática | Suite ejecutable y informe de validación. | | 4 | Limpieza, nulos y valores atípicos | Cuaderno comparativo con recomendación. | | 5 | Ingeniería de variables | Conjunto de variables documentado y auditado. | | 6 | Pipelines reproducibles y orquestación | Pipeline ejecutable con backfill demostrado. | | 7 | Datos no estructurados: texto y documentos | Corpus normalizado con informe de calidad. | | 8 | Preparación de corpus para IA generativa | Corpus versionado listo para indexar. | | 9 | Almacenamiento, formatos y catálogo | Dataset publicado y ficha de catálogo. | | 10 | Datos sintéticos y aumento | Cuaderno con comparación y conclusión. | | 11 | Taller integrador: pipeline documentado | Pipeline verificado por un tercero. | | 12 | Evaluación del módulo y defensa | Prueba resuelta y defensa realizada. | --- ## Programación sesión a sesión ### Sesión 01 — Fuentes de datos y estrategias de extracción **Objetivos** - Inventariar las fuentes disponibles para un caso. - Elegir la estrategia de extracción adecuada. - Anticipar los límites técnicos y legales de cada fuente. **Contenidos** - **Tipología de fuentes** - Bases relacionales y no relacionales - APIs REST y GraphQL - Ficheros, hojas de cálculo y correo - Web y documentos no estructurados - **Estrategias** - Carga completa frente a carga incremental - Marcas de agua y detección de cambios - Idempotencia y reintentos - Paginación, límites de tasa y backoff - **Límites** - Condiciones de uso y licencias - Datos personales en la fuente - Coste de extracción - Fragilidad de la fuente y plan B **Práctica — Extractor incremental contra una API** Implementación de un extractor con paginación, control de tasa y reanudación. 1. Explorar la API y su paginación. 2. Implementar la extracción con marca de agua. 3. Añadir reintentos con backoff. 4. Verificar idempotencia ejecutando dos veces. - *Stack:* Python, requests, pandas - *Entregable:* Script de extracción reanudable y verificado. **Lecturas** - Reis & Housley, Fundamentals of Data Engineering, cap. 7 *Materiales:* `teoria/M2_S01_Fuentes_de_datos_y_estrategias_de_extraccion.html` · `code/M2_S01_Fuentes_de_datos_y_estrategias_de_extraccion.ipynb` --- ### Sesión 02 — Ingesta desde bases de datos y SQL para IA **Objetivos** - Escribir consultas eficientes para extracción analítica. - Evitar sobrecargar el sistema origen. - Materializar conjuntos reproducibles. **Contenidos** - **SQL analítico** - Joins, agregaciones y funciones de ventana - CTEs y legibilidad - Filtrado temprano y proyección mínima - Lectura de un plan de ejecución - **Extracción responsable** - Réplicas de lectura y ventanas horarias - Particionado de la extracción - Consistencia y transacciones largas - Volcado a formatos columnares - **Reproducibilidad** - Consulta versionada junto al código - Sellado temporal del extracto - Comprobaciones de recuento y suma - Almacenamiento del extracto crudo **Práctica — Extracto analítico versionado** Consulta SQL con funciones de ventana volcada a Parquet con comprobaciones. 1. Escribir la consulta con ventanas. 2. Volcar a Parquet particionado. 3. Añadir comprobaciones de recuento y nulos. 4. Versionar consulta y metadatos. - *Stack:* SQL, DuckDB, pyarrow - *Entregable:* Consulta, extracto y comprobaciones ejecutadas. **Lecturas** - DuckDB: documentación de funciones de ventana *Materiales:* `teoria/M2_S02_Ingesta_desde_bases_de_datos_y_SQL_para_IA.html` · `code/M2_S02_Ingesta_desde_bases_de_datos_y_SQL_para_IA.ipynb` --- ### Sesión 03 — Calidad de datos y validación automática **Objetivos** - Definir expectativas explícitas sobre los datos. - Automatizar la validación dentro del pipeline. - Decidir qué hacer cuando la validación falla. **Contenidos** - **Dimensiones de calidad** - Completitud, unicidad, validez, consistencia y actualidad - Reglas de negocio como reglas de datos - Perfilado como punto de partida - Umbrales tolerables y umbrales bloqueantes - **Validación automática** - Suites de expectativas - Validación en ingesta y en salida - Cuarentena de registros inválidos - Alertas útiles frente a ruido - **Gestión del fallo** - Bloquear, degradar o continuar - Trazabilidad del registro rechazado - Reproceso y corrección de histórico - Registro de incidencias de calidad **Práctica — Suite de validación del dataset del proyecto** Definición y ejecución de una batería de expectativas sobre el dataset propio. 1. Perfilar y derivar expectativas. 2. Implementar la suite. 3. Introducir un error deliberado y comprobar la detección. 4. Definir política de fallo. - *Stack:* pandas, pandera o Great Expectations - *Entregable:* Suite ejecutable y informe de validación. **Lecturas** - Documentación de pandera: schemas y checks *Materiales:* `teoria/M2_S03_Calidad_de_datos_y_validacion_automatica.html` · `code/M2_S03_Calidad_de_datos_y_validacion_automatica.ipynb` --- ### Sesión 04 — Limpieza, nulos y valores atípicos **Objetivos** - Tratar nulos y atípicos con criterio y no por costumbre. - Documentar el impacto de cada decisión. - Evitar introducir sesgo durante la limpieza. **Contenidos** - **Nulos** - Mecanismos de pérdida: MCAR, MAR, MNAR - Eliminación, imputación simple e imputación por modelo - El nulo como información - Imputación dentro del pipeline, nunca antes de partir - **Atípicos** - Detección univariante y multivariante - Atípico frente a error de registro - Winsorización, transformación y exclusión - Efecto sobre el modelo posterior - **Trazabilidad** - Registro de decisiones de limpieza - Comparación antes y después - Sensibilidad del resultado a la limpieza - Reversibilidad **Práctica — Estudio de sensibilidad a la limpieza** Tres estrategias de tratamiento de nulos y su impacto medido sobre una métrica. 1. Implementar tres estrategias. 2. Medir el impacto en la métrica objetivo. 3. Elegir y justificar. 4. Documentar en el registro de decisiones. - *Stack:* pandas, scikit-learn - *Entregable:* Cuaderno comparativo con recomendación. **Lecturas** - van Buuren, Flexible Imputation of Missing Data, cap. 1 *Materiales:* `teoria/M2_S04_Limpieza_nulos_y_valores_atipicos.html` · `code/M2_S04_Limpieza_nulos_y_valores_atipicos.ipynb` --- ### Sesión 05 — Ingeniería de variables **Objetivos** - Construir variables que aporten señal real. - Aplicar codificaciones adecuadas a cada tipo. - Evitar la fuga de información en la construcción. **Contenidos** - **Construcción** - Agregados temporales y ventanas móviles - Ratios, diferencias e interacciones - Variables de dominio aportadas por el experto - Recuentos y frecuencias - **Codificación** - One-hot, ordinal y de alta cardinalidad - Target encoding y su riesgo - Escalado y transformaciones - Discretización con criterio - **Fuga de información** - Variables que no existirán en inferencia - Uso indebido del futuro - Fuga a través de la partición - Detección: métricas demasiado buenas **Práctica — Batería de variables con validación anti-fuga** Construcción de variables temporales verificando la ausencia de fuga. 1. Construir agregados con ventanas correctas. 2. Codificar categóricas de alta cardinalidad. 3. Auditar cada variable frente a fuga. 4. Medir aportación individual. - *Stack:* pandas, scikit-learn - *Entregable:* Conjunto de variables documentado y auditado. **Lecturas** - Kuhn & Johnson, Feature Engineering and Selection, caps. 5-6 *Materiales:* `teoria/M2_S05_Ingenieria_de_variables.html` · `code/M2_S05_Ingenieria_de_variables.ipynb` --- ### Sesión 06 — Pipelines reproducibles y orquestación **Objetivos** - Convertir cuadernos en pipelines ejecutables. - Orquestar dependencias y reintentos. - Dejar el pipeline operable por otra persona. **Contenidos** - **De cuaderno a pipeline** - Separación de configuración, código y datos - Funciones puras y pasos idempotentes - Parametrización y ejecución por lotes - Registro estructurado - **Orquestación** - Grafos de dependencias - Programación, reintentos y alertas - Herramientas: cron, Airflow, Prefect, Dagster - Cuándo no hace falta un orquestador - **Operabilidad** - Documentación mínima para operar - Reejecución de un día concreto - Backfill controlado - Coste de operación **Práctica — Pipeline del proyecto orquestado** Conversión del trabajo de las sesiones anteriores en un pipeline parametrizado y reejecutable. 1. Refactorizar a pasos idempotentes. 2. Definir el grafo de dependencias. 3. Parametrizar por fecha. 4. Ejecutar un backfill de tres días. - *Stack:* Python, Prefect o Dagster - *Entregable:* Pipeline ejecutable con backfill demostrado. **Lecturas** - Documentación de Dagster: assets y particiones *Materiales:* `teoria/M2_S06_Pipelines_reproducibles_y_orquestacion.html` · `code/M2_S06_Pipelines_reproducibles_y_orquestacion.ipynb` --- ### Sesión 07 — Datos no estructurados: texto y documentos **Objetivos** - Extraer texto utilizable de formatos heterogéneos. - Normalizar y segmentar documentos. - Evaluar la calidad de la extracción. **Contenidos** - **Extracción** - PDF nativo frente a PDF escaneado - OCR: cuándo, con qué coste y con qué error - HTML, correo y ofimática - Tablas dentro de documentos - **Normalización** - Codificaciones, saltos y artefactos - Deduplicación y detección de casi-duplicados - Idioma y segmentación - Metadatos que conviene conservar - **Calidad** - Medición del error de extracción - Muestreo manual de control - Umbral de aceptación por tipo de documento - Reproceso selectivo **Práctica — Corpus limpio a partir de PDFs reales** Extracción, normalización y control de calidad sobre un lote heterogéneo de documentos. 1. Extraer texto de PDFs nativos y escaneados. 2. Normalizar y deduplicar. 3. Muestrear y medir el error. 4. Documentar la calidad alcanzada. - *Stack:* pypdf, pdfplumber, tesseract, pandas - *Entregable:* Corpus normalizado con informe de calidad. *Materiales:* `teoria/M2_S07_Datos_no_estructurados_texto_y_documentos.html` · `code/M2_S07_Datos_no_estructurados_texto_y_documentos.ipynb` --- ### Sesión 08 — Preparación de corpus para IA generativa **Objetivos** - Segmentar documentos de forma útil para recuperación. - Enriquecer los fragmentos con metadatos. - Preparar el corpus que se usará en el Módulo 5. **Contenidos** - **Segmentación** - Tamaño de fragmento y solapamiento - Segmentación por estructura frente a por longitud - Preservación de tablas y encabezados - Impacto de la segmentación en la recuperación - **Enriquecimiento** - Metadatos de origen, fecha y permisos - Títulos y jerarquía como contexto - Resúmenes de fragmento - Identificadores estables para citación - **Preparación operativa** - Versionado del corpus - Reindexación incremental - Datos que no deben indexarse - Métricas del corpus **Práctica — Corpus segmentado y enriquecido** Producción del corpus definitivo con metadatos y identificadores estables. 1. Aplicar dos estrategias de segmentación. 2. Enriquecer con metadatos y jerarquía. 3. Asignar identificadores estables. 4. Comparar ambas estrategias con consultas de prueba. - *Stack:* Python, langchain-text-splitters o equivalente - *Entregable:* Corpus versionado listo para indexar. *Materiales:* `teoria/M2_S08_Preparacion_de_corpus_para_IA_generativa.html` · `code/M2_S08_Preparacion_de_corpus_para_IA_generativa.ipynb` --- ### Sesión 09 — Almacenamiento, formatos y catálogo **Objetivos** - Elegir formato y particionado adecuados. - Publicar los datos con metadatos localizables. - Controlar el coste de almacenamiento. **Contenidos** - **Formatos** - CSV, Parquet, Avro y ORC - Compresión y tipos - Esquema y su evolución - Tablas abiertas: Iceberg y Delta - **Particionado** - Claves de partición y cardinalidad - Ficheros pequeños: el problema y su compactación - Lecturas selectivas - Coste de escaneo - **Catálogo** - Metadatos técnicos y de negocio - Linaje del dato - Propiedad y contacto responsable - Búsqueda y descubrimiento **Práctica — Publicación catalogada del dataset** Reescritura del dataset en formato columnar particionado con ficha de catálogo. 1. Elegir formato y clave de partición justificados. 2. Reescribir y medir tiempo y tamaño. 3. Compactar ficheros pequeños. 4. Redactar la ficha de catálogo. - *Stack:* pyarrow, DuckDB - *Entregable:* Dataset publicado y ficha de catálogo. *Materiales:* `teoria/M2_S09_Almacenamiento_formatos_y_catalogo.html` · `code/M2_S09_Almacenamiento_formatos_y_catalogo.ipynb` --- ### Sesión 10 — Datos sintéticos y aumento **Objetivos** - Decidir cuándo los datos sintéticos son legítimos. - Generar datos sintéticos con control de calidad. - Reconocer sus límites. **Contenidos** - **Motivos legítimos** - Escasez, desbalanceo y privacidad - Pruebas y entornos no productivos - Casos raros y escenarios extremos - Cuándo no usarlos - **Técnicas** - Muestreo condicionado y reglas - SMOTE y variantes - Modelos generativos para datos tabulares - Generación de texto sintético con LLM - **Control** - Fidelidad estadística - Utilidad para el modelo posterior - Riesgo de reidentificación - Documentación del origen sintético **Práctica — Aumento controlado de una clase minoritaria** Generación sintética y medición de su efecto real sobre el rendimiento. 1. Medir la línea base con clase desbalanceada. 2. Generar datos sintéticos por dos métodos. 3. Medir el efecto en validación real. 4. Concluir si aporta. - *Stack:* imbalanced-learn, SDV - *Entregable:* Cuaderno con comparación y conclusión. *Materiales:* `teoria/M2_S10_Datos_sinteticos_y_aumento.html` · `code/M2_S10_Datos_sinteticos_y_aumento.ipynb` --- ### Sesión 11 — Taller integrador: pipeline documentado **Objetivos** - Entregar el pipeline completo del proyecto. - Documentarlo para que un tercero lo opere. - Someterlo a prueba por otro alumno. **Contenidos** - **Entregable** - Código, configuración y documentación - Comprobaciones de calidad integradas - Instrucciones de ejecución y de reproceso - Registro de decisiones - **Prueba cruzada** - Otro alumno ejecuta el pipeline desde cero - Registro de fricciones encontradas - Corrección y segunda ejecución - **Cierre** - Dataset listo para el Módulo 3 - Corpus listo para el Módulo 5 **Práctica — Ejecución cruzada del pipeline** Cada pipeline debe ejecutarlo íntegramente otro alumno partiendo solo de la documentación. 1. Entregar pipeline y documentación. 2. Ejecutar el pipeline de un compañero. 3. Registrar fricciones. 4. Corregir y volver a entregar. - *Stack:* Entorno del máster - *Entregable:* Pipeline verificado por un tercero. *Materiales:* `teoria/M2_S11_Taller_integrador_pipeline_documentado.html` · `code/M2_S11_Taller_integrador_pipeline_documentado.ipynb` --- ### Sesión 12 — Evaluación del módulo y defensa **Objetivos** - Demostrar competencia en construcción de pipelines. - Justificar las decisiones de datos tomadas. - Cerrar con el dataset y el corpus definitivos. **Contenidos** - **Prueba práctica** - Depuración de un pipeline con fallo introducido - Diseño de una expectativa de calidad - Consulta analítica cronometrada - **Defensa** - Presentación del pipeline en siete minutos - Preguntas sobre decisiones de limpieza y features - Rúbrica - **Cierre** - Devolución individual - Transición al Módulo 3 **Práctica — Prueba práctica y defensa** Evaluación sumativa del módulo. 1. Resolver la prueba. 2. Defender el pipeline. 3. Recibir devolución. - *Stack:* Entorno del máster - *Entregable:* Prueba resuelta y defensa realizada. *Materiales:* `teoria/M2_S12_Evaluacion_del_modulo_y_defensa.html` · `code/M2_S12_Evaluacion_del_modulo_y_defensa.ipynb` ---