WWWH Ciencia de Datos: ¿Cómo hacer ciencia de datos?

En los artículos anteriores, aprendimos una definición de ciencia de datos y por qué tantas empresas están invirtiendo en este campo. También aprendimos sobre algunos de los escenarios más comunes donde la ciencia de datos es la herramienta correcta para el trabajo.

En este artículo (el último de la serie) aprenderemos un framework básico para organizar las tareas en un proyecto de ciencia de datos. Sin importar qué problema estés enfrentando, involucrará la mayoría de los pasos que discutiremos a continuación.

Tener una referencia te ayudará a planear un proyecto organizándolo en etapas. Es importante saber que el ciclo de vida de la mayoría de los proyectos de ciencia de datos es cíclico: usualmente realizarás varias iteraciones del proceso para mejorar la calidad de tus modelos y hallazgos. Los proyectos de ciencia de datos son esfuerzos complejos, y la información que aprendas en cada iteración te permitirá mejorar la calidad del producto final.

Pasos comunes para crear una solución de ciencia de datos

Podrías estar tratando de crear un modelo que prediga la probabilidad de abandono de clientes, o tratando de encontrar segmentos de usuarios con algunas cosas en común. Sin importar qué problema estés abordando, siempre es posible dividir las tareas por etapas. Ten en cuenta que estas no son las únicas etapas para un proyecto, dependiendo de tus necesidades podrías necesitar pasos más especializados. No obstante, tener una hoja de ruta simplificada es una buena forma de empezar.

Paso 1: Define el problema

Este es un paso crucial en el proyecto, así que podría sorprenderte que muchos científicos de datos se apresuren a pasar por (o se salten) la etapa de definición del problema. Involucra aclarar las siguientes preguntas:

  • ¿Cuál es el objetivo principal del proyecto?: Necesitarás hablar con los stakeholders para entender sus necesidades y cómo la ciencia de datos puede proporcionar valor. Es importante hacer todas las preguntas aclaratorias que necesites porque tus modelos serán inútiles si resuelven el problema equivocado.
  • ¿Qué tipo de problema estoy enfrentando?: Una vez que entiendas las necesidades de los stakeholders estarás en una posición mucho mejor para reformular el problema como una tarea estándar de ciencia de datos. ¿Es un problema de clasificación multiclase? ¿o tal vez es un problema simple de regresión? ¿es la detección de valores atípicos la mejor opción para este proyecto, o tal vez estamos hablando de segmentación? Estas son las preguntas que necesitas responder antes de proceder.
  • ¿Cuáles serán los datos de entrada y qué estoy tratando de descubrir?: Este paso es crucial, ya que necesitas definir qué datos se necesitan para el proyecto y cómo obtenerlos. Algunas veces la empresa tiene suficientes datos relevantes disponibles, pero en situaciones donde esto no es cierto, necesitarás idear un plan para recopilar esos datos. Es importante hablar con expertos del dominio, ya que podrían proporcionar insights muy valiosos sobre qué datos podrían ser más útiles y cuáles podrían no ser necesarias.
  • ¿Cómo se ve el éxito y cómo lo mido?: Necesitarás definir qué significa el éxito en este proyecto particular y cómo medirlo. Hay diferentes métricas que puedes recopilar para tus modelos, y definir el éxito te ayudará a elegir a cuál necesitas prestar más atención. Podrías querer medir precisión/recall, el área bajo una curva ROC, el RMSE o MAE, solo por mencionar algunas métricas comunes. Esta elección te permitirá decidir cómo optimizar el modelo.

Pasar tiempo en esta etapa es muy importante porque las decisiones que tomes tendrán un impacto enorme en el proyecto. Hasta que todas estas cosas estén definidas no deberías avanzar.

Es importante recordar que en el caso de tareas predictivas, se hacen dos suposiciones:

  • Los outputs pueden ser predichos usando las entradas disponibles.
  • Nuestros datos son lo suficientemente informativos para crear un modelo que aprenda la relación entre entradas y salidas.

Esta hipótesis será probada creando y ajustando diferentes modelos y probándolos en datos reales. Algunas veces, la hipótesis se prueba incorrecta porque no tenemos datos con suficiente información para predecir los resultados que necesitamos. En este caso, tenemos dos opciones: encontrar mejores datos o concluir el proyecto.

También necesitas aclarar algo específico a proyectos que tratan de predecir el futuro basándose en datos históricos: la suposición de que el futuro se comportará como el pasado. Si esta suposición no es cierta para la(s) variable(s) que estamos tratando de predecir, entonces sin importar cuántos datos reunamos y cuántos modelos entrenemos, el proyecto nunca podrá proporcionar los resultados que queremos.

Una vez que discutimos todas las preguntas y encontramos sus respuestas, estamos listos para la siguiente etapa.

Paso 2: Define un protocolo de validación.

El objetivo de este paso es definir cómo validarás el rendimiento de tus modelos.

Construirás muchos modelos diferentes y ajustarás sus hiperparámetros para tratar de encontrar el que dé los mejores resultados, así que es importante decidir una forma de validar el modelo. En esta etapa, apartarás un subconjunto de los datos para usar como conjunto de prueba final, y los datos restantes se usarán para entrenar y validar diferentes modelos.

Dos opciones populares para protocolos de validación son:

  • Conjunto de validación hold-out: Si tienes montones de datos para entrenamiento, puedes apartar una parte de ellos para validar los modelos. Necesitas seleccionar un subconjunto representativo de los datos de entrenamiento para que la validación sea efectiva.

Holdout validation

  • Validación K-fold: Seleccionarás k diferentes subconjuntos de datos como conjuntos de validación y entrenarás k modelos en los datos restantes. Después de eso, evaluarás el rendimiento de los modelos y promediarás sus resultados. Esta técnica es especialmente útil si no tienes tantos datos disponibles para entrenamiento. Lo siguiente es un ejemplo cuando k es igual a 4.

4-fold validation

Paso 3: Prepara los datos

Esta es una de las tareas que más tiempo consume en la mayoría de los proyectos de ciencia de datos.

Es muy poco probable que tus datos estén listos para servir como entrada a algoritmos de machine learning desde el principio. Usualmente, necesitarás agregar juntos datos que vienen de diferentes bases de datos u otras fuentes. Después de que la agregación esté hecha y tengas un solo repositorio de datos es hora de realizar algunas transformaciones en los datos.

Algunos algoritmos pueden manejar datos categóricos, mientras que otros solo pueden trabajar con números en formatos específicos. Podrías necesitar realizar algunas transformaciones a los datos disponibles como usar codificación one-hot o transformar enteros a números de punto flotante. El rendimiento de algunos algoritmos es pobre a menos que las entradas estén en un rango similar, así que también necesitarás escalar los valores dentro del rango entre 0 y 1.

Otra tarea común es manejar valores faltantes. Algunos ejemplos de tu conjunto de datos pueden tener valores faltantes o incorrectos, y necesitas decidir qué hacer con ellos o afectará la calidad de tu modelo. Puedes deshacerte de esos ejemplos, o llenar los datos faltantes con valores promedio. Hay muchas técnicas diferentes usadas para manejar valores faltantes/incorrectos, decidir cuál usar depende de las especificidades del proyecto.

Esta es también la etapa donde se realiza la mayoría de la ingeniería de características con la esperanza de mejorar el rendimiento de los algoritmos creados en las siguientes etapas. Se pasa mucho tiempo en esta etapa, así que es importante desarrollar buenas habilidades de manejo de datos.

Paso 4: Entrena tus modelos

En esta etapa, seleccionamos diferentes algoritmos para construir modelos y evaluamos su rendimiento. Lo más importante es crear un modelo inicial que supere la línea base: un modelo que funcione mejor que el más ingenuo de los enfoques.

Por ejemplo, si estás construyendo un modelo para clasificar fotos como naranjas o manzanas, entonces la línea base a superar sería un modelo ingenuo que prediga que cada foto es una naranja.

Si no puedes encontrar un modelo que supere esta línea base, necesitarás regresar algunas etapas para asegurar que tienes los datos y suposiciones correctas. Si obtener mejores datos y realizar algo de ingeniería de características no produce resultados, podría ser hora de reformular el problema y encontrar alternativas.

Es útil entrenar diferentes modelos y comparar sus resultados iniciales, solo para tener una idea aproximada sobre cómo diferentes algoritmos funcionan en tus datos. Después de que tengas algunos modelos que den resultados razonables, ¡es hora de ajustarlos!

Paso 5: Ajusta tus modelos

Los modelos tienen hiperparámetros que puedes ajustar para regular su proceso de aprendizaje. En esta etapa, ejecutarás montones de experimentos con diferentes valores de hiperparámetros para tratar de encontrar el modelo que proporcione los mejores resultados.

Necesitas tener cuidado con el sobreajuste (overfitting), que es lo que sucede cuando un modelo aprende cómo funcionar muy bien en datos de entrenamiento, pero lo hace mal en datos de prueba. Esto sucede porque tu modelo podría estar aprendiendo a imitar los detalles de tu conjunto de entrenamiento, en lugar de generalizar reglas más generales.

Es útil monitorear la pérdida/precisión de entrenamiento y validación de los modelos que estás construyendo para entender su comportamiento. Recuerda que este es un proceso cíclico: evaluar un modelo -> ajustar hiperparámetros -> evaluar en datos de validación. Repites este proceso hasta que obtienes buenos resultados.

También debes tener cuidado con el sobre-ajuste de tu modelo en datos de validación. Si tu modelo funciona genial en los datos de validación pero lo hace mal en datos de prueba puedes estar seguro de que tus modelos están aprendiendo particularidades del conjunto de validación en lugar de reglas generales. El ajuste de hiperparámetros debe hacerse con el máximo cuidado y usando tanta validación cruzada como sea posible para asegurar que tus modelos se mantengan lo suficientemente generales.

Finalmente, después de ajustar los hiperparámetros, es hora de probar el modelo en los datos de prueba que apartaste en etapas anteriores. Dependiendo de los resultados puedes presentar tus hallazgos a los stakeholders o necesitarás regresar a etapas anteriores.

Ahora repite

Los proyectos de ciencia de datos son cíclicos por naturaleza: repetirás muchas de esas etapas varias veces durante el curso de un proyecto. La primera iteración te dará información valiosa para mejorar los resultados de las siguientes iteraciones. Tal vez aprenderás algunos detalles subyacentes de los datos que pueden usarse para crear un mejor conjunto de entrenamiento, o quizás descubriste que el problema necesita ser reformulado.

Sin importar qué, ejecutar varias iteraciones del proceso te ayudará a acercarte a un producto que resuelva el problema correcto de la manera más eficiente.

Eso es todo, por ahora

Y con este artículo, concluimos nuestro pequeño viaje explorando los elementos básicos de la ciencia de datos. Aprendimos qué es, cuándo usarla, por qué usarla y cómo se hace.

La ciencia de datos es un campo multidisciplinario con aplicaciones infinitas, y hay un lugar para todos. Desde analistas de datos hasta ingenieros de machine learning y estadísticos, personas de diferentes disciplinas pueden aprovechar sus habilidades para producir grandes productos de datos y proporcionar insights valiosos. Si estás interesado en el campo, este es el momento perfecto para unirte a la revolución de datos.

Espero que esta serie te haya enseñado algo nuevo y te haya ayudado a decidir si la ciencia de datos es el campo correcto para ti.

¡Gracias de nuevo por leer!

Qué hacer después

  • Comparte este artículo con amigos y colegas. Gracias por ayudarme a llegar a personas que podrían encontrar útil esta información.
  • Esta serie está basada en los libros de la serie MIT Essential Knowledge sobre ciencia de datos y machine learning.
  • Envíame un email con preguntas, comentarios o sugerencias (está en la página Autor)

Juan Luis Orozco Villalobos

¡Hola! Soy Juan, ingeniero de software y consultor en Budapest. Me especializo en computación en la nube e IA, y me encanta ayudar a otros a aprender sobre tecnología e ingeniería