Ganancias:
- Capacidad para reconocer tipos de fuga de datos (objetivo, tiempo, preprocesamiento, fila agrupada) y consultar la puntuación "demasiado buena para ser verdad" como alarma
- Capacidad de prevenir fugas con separación temprana del equipo de prueba, tubería y división correcta (cronológica/agrupada)
- Capacidad para hacer que el análisis sea reproducible con semillas fijas, control de versiones y eliminación de pasos manuales
Hay dos errores que desperdician la mayor parte del esfuerzo en la ciencia de datos, y ambos son insidiosos porque conducen al desastre justo cuando todo "parece estar bien". La primera es la fuga de datos: el modelo funciona muy bien en el conjunto de prueba pero falla en producción. El segundo es la irreproducibilidad: seis meses después se realiza un análisis y se obtiene un resultado completamente diferente. Esta unidad está dedicada a conocer y evitar estos dos escollos en profundidad. La IA puede aumentar ambos riesgos (se genera rápidamente, sugiere fugas ocultas, facilita la adopción de medidas manuales), pero también puede reducirlos si se usa correctamente. La diferencia está en la disciplina.
Fuga de datos: modelo clarividente
La fuga de datos ocurre cuando el modelo ve información durante el entrenamiento que no tendrá en el momento de la predicción real. El modelo "hace trampa" con esta información, luciendo muy bien en el conjunto de prueba, pero fallando en producción sin esa información. El síntoma de una fuga es casi siempre el mismo: demasiado bueno para ser verdad. Antes de alegrarse cuando vea una precisión del 99%, debe buscar fugas.
Los principales tipos de fugas son:
1. Fuga de objetivos: una característica es el resultado del objetivo. En el pronóstico "fue cancelado", las columnas "fecha de cancelación" o "monto del reembolso" son el resultado del objetivo; Sólo se rellenarán cuando el resultado sea claro.
2. Fuga de tiempo: Trayendo información futura al pasado. Al calcular el "promedio de los últimos 30 días", incluya los días posteriores al día previsto o divida la serie temporal al azar.
3. Fuga de preprocesamiento: transformaciones de aprendizaje como escalado, llenado y codificación de todos los datos antes de la partición de entrenamiento/prueba. El promedio de los datos de las pruebas interfiere con el entrenamiento.
4. Fuga de filas duplicadas/agrupadas: Las filas que pertenecen a la misma persona están presentes tanto en el entrenamiento como en las pruebas (dos visitas del mismo paciente en conjuntos diferentes). El modelo memoriza a la persona.
tipo de fuga
como nace
como prevenir
fuga de objetivo
Columna que es el resultado del objetivo.
Prueba "¿Lo tengo en el momento de la predicción?"
fuga de tiempo
Trayendo el futuro al pasado
División cronológica, control de ventanas.
Fuga de preprocesamiento
Conversión previa a la división
Pipeline, en forma sólo desde el entrenamiento
Fuga de fila agrupada
Misma unidad en dos juegos.
Dividir por grupo (GroupKFold)
La única disciplina para evitar fugas
La solución común para todo tipo de fugas se reduce a una frase: aislar el conjunto de prueba lo antes posible para imitar el futuro real y no "enseñarle" nada. En la práctica, esto significa: primero dividir, luego aprender todas las transformaciones solo de la capacitación y aplicarlas en una tubería (una estructura que reúne todos los pasos en una sola cadena). Para cada característica, haga la pregunta "¿tengo esta información en el momento de la predicción?" Si hay tiempo, divídelo cronológicamente; Si la misma unidad es repetitiva, dividir por grupo.
Precaución: El aspecto más peligroso de una filtración es que se presenta como un éxito. Un mal modelo obviamente producirá malos resultados y será notado; Un modelo filtrado funciona muy bien, agrada a todos y se pone en producción: ahí es donde comienza el colapso. Por eso un resultado "muy bueno" es motivo de alarma, no de celebración.
Reproducibilidad: obtener el mismo resultado dos veces
La reproducibilidad es la capacidad de obtener el mismo resultado cuando se ejecuta un análisis nuevamente en otro momento, en otra máquina. Sin esto, su análisis es incidental, no científico. Principales causas y soluciones que perjudican la reproducibilidad:
Pasos manuales: cambiar manualmente una celda en Excel, editar manualmente un gráfico. Solución: tenga cada paso en código.
Aleatoriedad no fijada: el entrenamiento, el muestreo y la división del modelo implican aleatoriedad. Solución: corrija la semilla aleatoria (el valor inicial del generador aleatorio) (random_state=42).
Cambios de versión: el resultado puede cambiar cuando cambia la versión de la biblioteca. Solución: corregir dependencias (requirements.txt, archivo de entorno).
Sin mantenimiento de registros: no está claro qué datos, qué código o qué parámetro se utilizaron. Solución: control de versiones (Git, el sistema que guarda todas las versiones del código) y control de versiones de datos.
"Solo funciona en mi máquina": Solución: documente el entorno, utilice contenedores (Docker) si es posible.
tres mini casos
Caso 1: Fuga del objetivo. Un análisis de salud incluyó la columna "medicación posterior al alta" para predecir "si el paciente será reingresado". Esta columna se llenó sólo después de que el paciente fue dado de alta. El modelo dio el 96%, en producción el 61%. El proyecto de 8 semanas fue basura. Lección: pregunte a cada característica "¿está presente en el momento de la predicción?"
Caso 2: fuga de preprocesamiento. Un equipo escaló todos los datos y luego los dividió. La media de los datos de prueba estuvo involucrada en la escala. Puntuación CV 89%, producción real 76%. El falso éxito desapareció cuando me mudé a Pipeline y aprendí sobre las transformaciones solo a través del entrenamiento. Lección: dividir primero, transformar después.
Caso 3: No reproducción. Un analista quería actualizar el gráfico que presentó a la dirección tres meses después, pero no recordaba cómo lo produjo; Muchos pasos se realizaron manualmente en Excel. El resultado no funcionó y la confianza se vio quebrantada. Lección: sin pasos manuales, todo está en código y Git.
Cuatro plantillas copiables
1) Inspección de fugas:
Su papel: inspector de fugas. Objetivo: "abandono" (0/1), fecha de referencia de previsión: fecha_registro. Te daré esta lista de características. Para CADA característica: (a) ¿es una consecuencia del objetivo, (b) está disponible para mí en el momento de la predicción, (c) la ventana de tiempo incluye el futuro? Márquelo como "inseguro/sospechoso/con fugas" y escriba el motivo. Características: [lista]
2) Tubería sin fugas:
Configure sklearn Pipeline: primero divida el tren/prueba (estratificado, semilla = 42), LUEGO ajuste todo el preprocesamiento (imputación, escala, codificación) en el pipeline SÓLO desde el entrenamiento. Explique por qué el código no tiene fugas, qué paso se aprendió y dónde.
3) Código de la lista de verificación de reproducibilidad:
Quiero que mi análisis sea reproducible. Sugiera código/estructura que agregue: (1) semilla dura para toda aleatoriedad, (2) versiones de biblioteca de impresión utilizadas, (3) etiqueta de fecha/versión para datos y resultados. También dame una lista de verificación para asegurarme de que no haya pasos manuales.
4) Partición agrupada (fuga de la misma unidad):
En los datos, existe el mismo customer_id en varias filas. Haga una división (GroupKFold o GroupShuffleSplit, grupo = customer_id) que EVITE que el mismo cliente esté tanto en capacitación como en prueba. Incluya código para verificar que no haya clientes en ambos conjuntos después de la división.
Aviso débil / Aviso fuerte
Aviso débil:
Mi modelo arrojó una precisión del 98%, ¿no es fantástico? Optimiza el código.
Celebrar el 98% esconde la filtración. Antes de optimizar, cabe preguntarse si esta puntuación es real o no.
Potente mensaje:
Su papel: inspector de fugas. Mi modelo arroja una precisión del 98% en el conjunto de prueba, lo que me parece "demasiado bueno para ser verdad". Verifique: (1) si alguna característica es el resultado del objetivo, (2) si las conversiones se realizaron antes de dividir, (3) si la misma unidad en dos conjuntos, (4) si hay fugas de tiempo. Enumere los puntos sospechosos; Concéntrese en encontrar la fuga, no en arreglar la puntuación.
Aquí, una puntuación alta se trata como una señal que debe cuestionarse, no que debe celebrarse.
Errores comunes
- Celebrando el "muy buen" resultado. Una puntuación demasiado buena para ser verdad es una alerta de fuga, no un logro.
- Aprender la transformación de todos los datos antes de la división. La fuga más común; Dividir primero con tubería.
- Dividir la serie temporal al azar. El modelo ve el futuro; La división cronológica es imprescindible.
- Saliendo de la misma unidad en dos sets. El modelo memoriza a la persona; Dividir por grupo.
- No intervenir manualmente y escribir en el código. El análisis se vuelve irreproducible; todo debería estar en código y Git.
Consejo: escriba una "promesa de honor" de dos oraciones al comienzo de su proyecto: "No he tocado el conjunto de prueba de ninguna manera antes de verlo en producción. Cada paso está en el código y la semilla está arreglada". Si no puedes firmar estas dos oraciones honestamente, tu resultado aún no es confiable.
En resumen
La fuga de datos y la no reproducibilidad son los dos errores silenciosos más costosos en la ciencia de datos. La fuga es la visión del futuro del modelo y se presenta como un falso éxito; La solución es dividir el conjunto de prueba temprano, aprender las transformaciones solo a partir del entrenamiento (canalización), hacer a cada característica la pregunta "¿La tengo en el momento de la predicción" y realizar la división correcta (cronológica/agrupada). La reproducibilidad es poder obtener el mismo resultado dos veces; Su solución es eliminar pasos manualmente, fijar la semilla, congelar las versiones y mantener todo en Git. La IA puede aumentar o reducir estos riesgos; Es tu disciplina la que determina.
Tarea de aplicación
Tome la lista de características de un modelo que haya creado (o uno hipotético) y haga la pregunta a cada característica "¿tengo esta información en el momento de la predicción?" escrito; Encuentre al menos un candidato a fuga. Luego complete una lista de verificación para que su análisis sea reproducible: ¿la semilla es fija?, ¿hay pasos manuales?, ¿las versiones están registradas?, ¿están en Git? Corregir las deficiencias.
lista de verificación
- [] ¿Consulté la puntuación "demasiado buena para ser verdad" como alerta de fuga?
- [] ¿Aprendí todas las transformaciones posteriores a la separación, solo con el entrenamiento?
- [ ] ¿He dividido según la estructura temporal/grupal (cronológica/GroupKFold)?
- [] ¿He hecho que toda la aleatoriedad sea repetible con semilla fija?
- [] ¿Eliminé los pasos manuales y mantuve todo en código y control de versiones?