Cómo depurar sus proyectos de ciencia de datos y aprendizaje automático

Aquí hay un modelo de varias capas (juego de palabras) para garantizar que la configuración del experimento sea correcta:

  1. Aprende bien las matemáticas. Las arquitecturas neuronales generalmente se describen en términos de transformaciones no lineales generalizadas (piense en algo como [math] h (x; \ theta) [/ math]. Es imprescindible comprender claramente cada función dentro de las formas de los tensores de entrada y salida).
  2. La verificación de tipo y la verificación de la forma de los datos de entrenamiento deben realizarse después del preprocesamiento. Es una fuente muy frecuente de errores. La rutina de capacitación generalmente consta de varios métodos pequeños para la generación de lotes, el cálculo de objetivos, el muestreo, etc. Cada uno de ellos es fácil de probar durante el desarrollo.
  3. Durante el entrenamiento, muchas cosas pueden salir mal, así que si no está seguro, controle no solo la pérdida, sino también las normas de gradiente, la variación de gradiente estocástico por elementos, etc. Si está seguro, vigílelas también.
  4. Ve por la simplicidad. Haga su código claro, compacto y modular para que pueda probar todo por separado.

Hacer un prototipo en una computadora portátil Jupyter es una buena práctica, ya que le permite ver todo paso a paso y ver la salida de depuración cuando lo desee.

No puedo decir que escribo un código excelente, pero hago todo lo posible para no dispararme en el pie haciendo demasiadas cosas.

Leí en alguna parte que “en teoría, no hay mucha diferencia entre teoría y práctica, pero en la práctica sí.” Ser teóricamente correcto es irrelevante si los resultados son, en la práctica, incorrectos.

Entonces, si bien hago un gran esfuerzo para hacer que la teoría sea correcta, el proceso que sigo para validar mis modelos es totalmente empírico: obtengo un nuevo conjunto de datos y ejecuto las predicciones en el nuevo conjunto de datos. Si el modelo generalizó, estoy feliz, si no, de vuelta al tablero de dibujo.

Sin embargo, utiliza una palabra en particular: depurar. La depuración supone que hay un error de código y que no está relacionado con el proyecto como uno de datos. Es ingeniería y desarrollo de software, como cualquier otro proyecto de software. Es por eso que defiendo que aprender a escribir código limpio y fácil de mantener es relevante para cualquier científico de datos y parte de las habilidades de “comunicación”.

Si bien mi código de análisis suele ser rápido y sucio, mi código que evolucionará a entornos de producción tiene el estándar más alto que pueda escribir. El código está completamente estructurado, dependiendo del tipo de proyecto, tiene su propia batería de pruebas. En el caso específico de los proyectos de ciencia de datos y aprendizaje automático, el código es modular, a menudo dividido en funciones especializadas que pueden usarse tanto para modelar como para predecir, por ejemplo, las funciones para adquirir los datos son las mismas.

Corrección: Compare la solución producida por su algoritmo con la solución producida por otros algoritmos para los mismos datos. Si su problema tiene una solución única (por ejemplo, el problema puede caracterizarse usando convexidad), entonces las soluciones deberían ser bastante similares. En otras palabras, verifique la solución producida por su algoritmo en un problema con una solución conocida.

Generalización: en un problema de aprendizaje supervisado, ¿qué tan bien se compara su desempeño fuera de la muestra (error de prueba) con su error de capacitación? La validación cruzada debería darle algunos buenos consejos para evitar un ajuste excesivo. Los mecanismos reales para evitar el ajuste excesivo pueden depender de problemas / algoritmos (árboles de decisión – poda, regresión – regularización, etc.).

Mi respuesta puede o no ser particularmente útil para usted, pero los proyectos de DS y ML no son tan diferentes de cualquier otro desarrollo de software complejo: prueba de unidad, prueba de usuario y prueba de regresión. La principal diferencia es que con cualquiera de estos proyectos más complejos que una tarea, debe hacer una prueba doble ciego. Los sesgos del desarrollador se mostrarán en los datos de muestra, incluso con algoritmos diseñados correctamente, y no podrá verlos. Si bien los datos de entrenamiento y prueba muestreados al azar son estándar, generalmente no son suficientes, ya que el universo del que se eligen está sujeto a sesgos de los experimentadores. Siempre que sea posible, use conjuntos de datos que no haya elegido y asegúrese de que sus verdades básicas sean lo más completas posible.

La ciencia de datos es un campo multidisciplinario. ¡Por lo tanto, hay miles de paquetes y cientos de funciones de programación en el mundo de la ciencia de datos! Un aspirante a entusiasta de los datos no necesita saberlo todo. Una hoja de trucos o una tarjeta de referencia es una compilación de comandos utilizados principalmente para ayudarlo a aprender la sintaxis de ese idioma a un ritmo más rápido. Estos son los más importantes que se han generado y capturado en algunas páginas compactas.

Dominar la ciencia de los datos implica la comprensión de las estadísticas, las matemáticas, el conocimiento de la programación, especialmente en R, Python y SQL, y luego desplegar una combinación de todos estos para obtener información utilizando la comprensión empresarial y un instinto humano que impulsa las decisiones.

Además de otras respuestas (aplicables a cualquier proyecto de ingeniería / informática), los proyectos de aprendizaje automático pueden beneficiarse de la depuración del proceso de aprendizaje en sí. Por lo general, este proceso implica al menos depurar su conjunto de datos (por ejemplo, para identificar variables con fugas o problemas en la fase de recopilación de datos) y depurar su elección de optimizador y espacio de hipótesis (por ejemplo, identificar soluciones subóptimas).

Hal Daumé III describió 4 fuentes teóricas de error que deben observarse y proporciona un buen ejemplo de cómo estos errores pueden aparecer en diferentes etapas de la construcción de un modelo de predicción: depuración del aprendizaje automático