Buenas prácticas en Ciencia de datos

24 Apr 2023 - Simon

Reproducibilidad

La reproducibilidad en ciencia de datos es un tema crucial en la actualidad para validar la calidad de nuestros resultados. Cuando hablamos de reproducibilidad, nos referimos a la habilidad de obtener los mismos resultados utilizando los mismos datos y métodos de un estudio anterior. Esta capacidad es fundamental para verificar la exactitud de los hallazgos y confirmar que los resultados no son producto de errores o sesgos. Si no podemos replicar los resultados, es imposible saber si son válidos o si se deben a errores en la recolección o el análisis.

Por otro lado, la reproducibilidad también nos permite comparar entre diversos experimentos y detectar posibles errores en los métodos de investigación. Para alcanzar estos resultados es necesario una sintonía entre las versiones de los datos, el entorno y el código. Docker es una herramienta útil que controla las dependencias necesarias para la ejecución de los análisis.

El control del ambiente conduce a la reproducibilidad a través de contenedores.

Pruebas unitarias

En nuestra práctica dentro del equipo, utilizamos la técnica de pruebas unitarias para asegurarnos de que cada componente individual de nuestro sistema funcione adecuadamente. En lugar de probar todo el modelo completo, nos enfocamos en probar cada componente individual como la limpieza, transformación, selección de características y evaluación. Al probar cada componente por separado, podemos corregir errores específicos antes de afectar a todo el modelo en conjunto. El proceso consta de tres pasos: Primero, definimos los requisitos que debe cumplir el código de producción, luego creamos las pruebas y finalmente comprobamos si los resultados son correctos o incorrectos. La aplicación de esta técnica mejora la calidad y reproducibilidad de nuestros modelos, también aumenta nuestra confianza en los resultados del análisis.

Además, teniendo la seguridad de que cada componente individual funcione adecuadamente, podemos identificar errores específicos y corregirlos antes de implementarlo en un entorno de producción.

Desarrollo Guiado por Pruebas (TDD)

Es una técnica de desarrollo de software que se ha popularizado en los últimos años por su eficacia y cambio en la arquitectura que presenta. Se escriben las pruebas antes de escribir el código, asegurando que el análisis se ha diseñado para cumplir con los requisitos establecidos por el usuario. Hemos encontrado que esta técnica es efectiva en la prevención de errores y en la creación de análisis más robustos y mantenibles. Programación Pimpón (PPP) es una variante del TDD donde dos analistas trabajan en el mismo proyecto, alternándose para escribir pruebas y código.

Esta técnica promueve la colaboración y comunicación constante entre los miembros del equipo, lo que puede llevar a un mejor diseño del análisis. Las pruebas verifican la calidad de los datos, la efectividad del modelo y la precisión en resultados, conduciendo a modelos más sólidos y confiables.

La colaboración entre los miembros del equipo en PPP también ha promovido una mejor comprensión del modelo y los datos subyacentes. La aplicación en conjunto de TDD y PPP en nuestro equipo ha llevado a una mayor calidad y mantenibilidad de nuestros análisis. Además, los miembros del equipo han mejorado su comunicación y colaboración gracias a estas técnicas.

Entrega Continua

Hace referencia a una serie de prácticas utilizadas en el desarrollo de software para asegurar que nuestros análisis sean entregados rápidamente y con alta calidad. Este enfoque implica la ejecución de una serie de prácticas que abarcan el desarrollo, entrega, retroalimentación y gestión de calidad de manera simultánea y constante. Con ello, logramos ser más eficientes y satisfacer las necesidades de manera más rápida. El pipeline de Continuous Delivery comienza con la integración continua (CI) de los cambios realizados en el modelo y sus datos correspondientes. Posteriormente, realizamos una fase de pruebas automatizadas para evaluar la calidad del modelo, asegurándonos de que cumpla con los criterios definidos.

Si el modelo pasa estas pruebas, se implementa automáticamente en producción para que los usuarios finales puedan utilizarlo. Gracias a la implementación de Continuous Delivery se ha mejorado la calidad de nuestros análisis y hemos acelerado el proceso de entrega de resultados. La retroalimentación constante que obtenemos a través de las pruebas automatizadas nos permite corregir cualquier problema rápidamente manteniendo nuestros modelos actualizados y eficientes.

Integración

El producto final de las diversas prácticas previamente mencionadas traen como resultado una arquitectura distinta, en contraste al no aplicar este enfoque centrado en reproducibilidad. No adoptar estas prácticas y herramientas puede tener consecuencias negativas en el desarrollo de modelos en ciencia de datos. La falta de reproducibilidad, la introducción de errores, la dificultad para colaborar en equipo y la lentitud en el proceso de desarrollo son obstáculos. Sin embargo, hay que tener en cuenta que estas técnicas pueden requerir más tiempo y esfuerzo al principio del proceso de desarrollo.

Para lograr la reproducibilidad, hemos establecido un flujo de trabajo que incluye la definición de un ambiente virtual con las dependencias necesarias para ejecutarlo. La implementación de resultados en un informe, la documentación detallada de los pasos y la separación clara entre código-datos mejoran el entendimiento del producto final. El uso de pruebas unitarias y el TDD nos ha permitido garantizar que nuestro código funcione correctamente y cumpla con los requisitos del equipo. A través de la implementación de pruebas, podemos detectar errores de manera temprana y asegurarnos de que cualquier cambio no cause efectos secundarios no deseados. En cuanto a la colaboración, hemos adoptado la técnica de PPP, en la que dos desarrolladores trabajan juntos en el mismo proyecto. Lo anterior fomenta la comunicación constante entre el equipo y mejorando la comprensión del modelo. Estas técnicas nos conducen hacia un mejor entendimiento de nuestros datos. Sin discusión, estos resultados sopesan las dificultades para implementar estás técnicas.