Un flujo de trabajo de aprendizaje automático es el proceso sistemático de desarrollo, entrenamiento, evaluación e implementación de modelos de aprendizaje automático. Abarca una serie de pasos que guían a los profesionales a través de todo el ciclo de vida de un proyecto de aprendizaje automático, desde la definición de problemas hasta el despliegue de soluciones.
¿Por qué son importantes los flujos de trabajo de aprendizaje automático?
Los flujos de trabajo de aprendizaje automático ayudan a:
- Claridad y enfoque: Un flujo de trabajo bien definido ayuda a definir claramente los objetivos, las funciones y las responsabilidades del proyecto, para que todos los miembros del equipo estén alineados y centrados en lograr los resultados deseados y previstos.
- Eficiencia y productividad: Un flujo de trabajo estructurado proporciona un enfoque sistemático para abordar proyectos complejos de aprendizaje automático. Esto mejora la eficiencia y la productividad, ya que ayuda a organizar las tareas, gestionar los recursos y realizar un seguimiento eficaz del progreso.
- Garantía de calidad: El uso de un flujo de trabajo estructurado le ayuda a ejecutar sistemáticamente cada fase del proceso de aprendizaje automático, lo que ayuda a identificar y abordar los posibles problemas al principio del ciclo de vida del proyecto.
- Reproducibilidad y escalabilidad: Un flujo de trabajo bien definido documenta todos los pasos tomados durante el proceso de desarrollo, lo que facilita la replicación de los resultados y proporciona un marco que puede adaptar y reutilizar para proyectos futuros.
- Gestión del riesgo: Los flujos de trabajo de aprendizaje automático mejoran la gestión del riesgo al identificar los posibles riesgos e incertidumbres al principio del ciclo de vida del proyecto, lo que le permite implementar estrategias de mitigación proactivas que reducen las posibilidades de fallo del proyecto.
¿Cuáles son los pasos típicos del flujo de trabajo de aprendizaje automático?
Un flujo de trabajo típico de aprendizaje automático incluye las siguientes fases:
Definición del problema , en la que se define claramente el problema que hay que resolver y se establecen los objetivos del proyecto. Este paso implica entender el contexto empresarial, identificar las fuentes de datos relevantes y definir las métricas de rendimiento clave.
Recogida y preprocesamiento de datos, en los que se recogen los datos necesarios de diversas fuentes y se preprocesan para garantizar que están limpios, homogéneos y listos para el análisis. Este paso puede implicar tareas como la limpieza de datos, la ingeniería de características y la transformación de datos.
Análisis de datos exploratorios (EDA), en el que se exploran los datos para obtener información e identificar patrones, tendencias y relaciones. La EDA ayuda a entender las características de los datos e informa las decisiones sobre la selección de características, la selección de modelos y las estrategias de preprocesamiento de datos.
Selección y formación de modelos, en los que elige algoritmos y técnicas de aprendizaje automático adecuados en función de los requisitos del problema y las características de los datos, forma a los modelos seleccionados usando los datos preparados y evalúa su rendimiento usando métricas de evaluación adecuadas.
Evaluación y ajuste de modelos , en la que se evalúa el rendimiento de los modelos entrenados usando técnicas de validación como la validación cruzada y los métodos de ajuste de hiperparámetros para optimizar el rendimiento del modelo.
Despliegue y supervisión de modelos, en los que se despliega el modelo entrenado en el entorno de producción, se integra en los sistemas existentes, se supervisa el rendimiento del modelo en escenarios reales y se actualiza según sea necesario para garantizar una eficacia continua.
Profundicemos un poco más en cada una de estas fases.
Definición del problema
Para definir el problema:
1. Entienda sus objetivos empresariales
El primer paso para definir el problema es entender los objetivos y las metas generales de la empresa. Esto significa colaborar estrechamente con las partes interesadas para identificar los retos u oportunidades empresariales clave que desea abordar con el aprendizaje automático.
2. Formular una declaración de problema
Basándose en estos objetivos empresariales, diseñe una declaración de problema clara y concisa. Esta afirmación debe especificar lo que hay que predecir, clasificar u optimizar y cómo se alinea con los objetivos generales de su empresa. También debe tener en cuenta factores como la disponibilidad de los datos, la viabilidad y el posible impacto.
3. Definir criterios de éxito
Establezca criterios de éxito medibles o indicadores clave de rendimiento (KPI) que pueda usar para evaluar el rendimiento de la solución de aprendizaje automático. Deben estar alineados con la declaración del problema y los resultados empresariales deseados.
4. Identificar los requisitos y las limitaciones de los datos
Identificar los requisitos de los datos para resolver el problema, incluidos los tipos de datos (estructurados o no estructurados), las fuentes, las consideraciones de calidad y cualquier restricción regulatoria o ética relacionada con el uso de los datos. Entender las limitaciones y limitaciones de los datos desde el principio le ayudará a establecer expectativas realistas y a planificar las estrategias de adquisición y preprocesamiento de los datos.
5. Evaluación de riesgos
Realizar una evaluación preliminar de los riesgos para identificar los posibles riesgos y retos asociados con la definición del problema. Esto incluye los riesgos relacionados con la calidad de los datos, la complejidad del modelo, la interpretabilidad, el cumplimiento normativo y el impacto empresarial. El desarrollo de estrategias de mitigación de riesgos al principio del proyecto puede ayudar a abordar estos retos de manera proactiva.
6. Documentar la definición del problema
Por último, documente la definición del problema, incluida la declaración del problema, los criterios de éxito, los requisitos de los datos, el alcance, las limitaciones y los hallazgos de la evaluación de riesgos. Esta documentación será su referencia para todas las partes interesadas implicadas y ayudará a garantizar la alineación en todo el flujo de trabajo de aprendizaje automático.
Recogida de datos
La recogida de datos relevantes para su proyecto de aprendizaje automático es un paso importante que puede afectar significativamente al rendimiento y los resultados del modelo.
Este es el proceso paso a paso para recopilar datos y consejos para garantizar su fiabilidad y calidad:
1. Definir objetivos
Defina claramente los objetivos de su proyecto de aprendizaje automático. Entienda las preguntas que quiere responder y los problemas que quiere resolver. Esto guiará sus esfuerzos de recogida de datos para recopilar la información más relevante.
2. Identificar las fuentes de datos
Determine dónde puede encontrar los datos que necesita. Las fuentes de datos pueden variar en función de la naturaleza de su proyecto, pero las fuentes comunes incluyen:
Sitios web como Kaggle, UCI Machine Learning Repository y bases de datos gubernamentales.
API: Muchas organizaciones ofrecen API para acceder a sus datos programáticamente.
Raspado web: Extracción de datos de sitios web usando herramientas como Hermosa sopa o Escritorio.
Bases de datos internas: Si corresponde, use los datos almacenados en las bases de datos de su organización.
Encuestas o entrevistas: Recopile los datos directamente de los usuarios o de los expertos en el campo mediante encuestas o entrevistas.
3. Evaluar la calidad de los datos
Antes de recoger los datos, evalúe su calidad para asegurarse de que es adecuada para su proyecto. Tenga en cuenta los siguientes factores:
Precisión: ¿Los datos están libres de errores o incoherencias?
Integridad: ¿El conjunto de datos cubre todas las variables y registros necesarios?
Coherencia: ¿Los valores de los datos son coherentes en diferentes fuentes o periodos de tiempo?
Relevancia: ¿Los datos incluyen la información necesaria para abordar sus objetivos?
Puntualidad: ¿Los datos están actualizados y son relevantes para su análisis?
Métodos de recogida de datos: ¿Ha elegido los métodos adecuados para recoger sus datos de acuerdo con la fuente de datos?
4. Documentar las fuentes de datos y los pasos de procesamiento
Mantener una documentación completa de las fuentes de datos, los métodos de recogida, los pasos de preprocesamiento y cualquier transformación aplicada a los datos. Esta documentación es crucial para la transparencia, la reproducibilidad y la colaboración.
5. Iterar
La recogida de datos es un proceso iterativo. A medida que analiza los datos y refina su modelo, es posible que necesite datos adicionales o ajustes en sus conjuntos de datos existentes. Evalúe continuamente la relevancia y la calidad de sus datos para mejorar la precisión y la eficacia de su modelo de aprendizaje automático.
Preprocesamiento de datos
El preprocesamiento de datos es el proceso de preparación de los datos brutos para su análisis en proyectos de aprendizaje automático y de ciencia de datos. Implica limpiar, transformar y organizar los datos para garantizar que son adecuados para el modelado y el análisis. También ayuda con la calidad de los datos, la ingeniería de características, el rendimiento de los modelos y la compatibilidad de los datos.
Estos son algunos aspectos clave del preprocesamiento de los datos y las instrucciones para gestionar los datos que faltan, los valores atípicos y la normalización de los datos:
1. Gestión de los datos que faltan
Empiece identificando columnas o características con valores que faltan en el conjunto de datos. Luego, en función de la naturaleza de los datos que faltan, elija un método de imputación adecuado, como la media, la mediana, el modo o el uso de modelos predictivos para rellenar los valores que faltan. En los casos en los que los valores que faltan son demasiado numerosos o no pueden imputarse de manera fiable, considere la posibilidad de dejar caer filas o columnas con los datos que faltan. Para las características categóricas, considere añadir una nueva categoría para representar los valores que faltan o utilice técnicas como la imputación de modo para las variables categóricas.
2. Gestión de los valores atípicos
Para manejar los valores atípicos:
- Utilice métodos estadísticos como diagramas de caja, puntuaciones Z o IQR (rango intercuartil) para identificar valores atípicos en los datos numéricos.
- Elimine los valores atípicos extremos del conjunto de datos.
- Limite los valores extremos sustituyéndolos por los valores no atípicos más cercanos.
- Aplique transformaciones como la logarítmica, la raíz cuadrada o la transformación Box-Cox para que los datos se distribuyan de un modo más normal y reduzcan el impacto de los valores atípicos.
- Consulte con expertos en el campo para validar los valores atípicos que pueden representar anomalías o errores reales en los datos.
3. Normalización de datos
Los pasos de la normalización de los datos son:
a. Estandarización (normalización de la puntuación Z): Transforme las características numéricas para que tengan una media de 0 y una desviación estándar de 1. Ayuda a escalar las características a un rango similar, haciéndolas comparables.
b. Escalamiento mín-máx: Escale las características a un rango específico, normalmente entre 0 y 1, preservando las relaciones relativas entre los puntos de datos.
c. Escalamiento sólido: Utilice técnicas de escalamiento robustas, como RobustScaler, que escala los datos basándose en la mediana y el rango intercuartil, lo que hace que sea menos sensible a los valores atípicos.
Ingeniería de características
La ingeniería de características implica transformar los datos brutos en un formato que sea más adecuado para el modelado. Se centra en crear nuevas funcionalidades, seleccionar funcionalidades importantes y transformar las funcionalidades existentes para mejorar el rendimiento de los modelos de aprendizaje automático. La ingeniería de características es muy importante para la precisión del modelo, reduciendo el sobreajuste y mejorando la capacidad de generalización de los modelos.
Aquí tiene explicaciones y ejemplos de algunas técnicas de ingeniería de características comunes:
Codificación en caliente
Una codificación en caliente convierte las variables categóricas en un formato numérico que puede introducirse en los algoritmos de aprendizaje automático. Crea columnas binarias para cada categoría, donde un 1 indica la presencia de la categoría y un 0 de lo contrario. Por ejemplo, considere una función de "Color" con las categorías "Rojo", "Verde" y "Azul". Después de la codificación en caliente, esta característica se transformaría en tres características binarias: "Is_Red", "Is_Green" y "Is_Blue", en los que cada característica representa la presencia de ese color.
Escalamiento de características
El escalamiento de características lleva las características numéricas a una escala o un rango similares. Ayuda a que los algoritmos converjan más rápidamente y evita que las características con mayores magnitudes dominen durante el entrenamiento. Las técnicas de escalamiento habituales incluyen la estandarización y el mínimo-máximo mencionados anteriormente.
Reducción de la dimensionalidad
Las técnicas de reducción de la dimensionalidad reducen el número de características y conservan la mayor parte de la información relevante. Esto ayuda a reducir la complejidad computacional, mejorar el rendimiento del modelo y evitar la dimensionalidad.
Extracción de características
La extracción de características consiste en crear nuevas características a partir de las ya existentes usando transformaciones matemáticas, conocimientos de dominio o técnicas de procesamiento de texto. Generar combinaciones polinómicas de características para capturar relaciones no lineales en los datos sería un ejemplo. Otro ejemplo es convertir los datos de texto en características numéricas usando métodos como TF-IDF, incrustaciones de palabras o representaciones de bolsas de palabras.
Selección de modelos
Seleccionar el modelo de aprendizaje automático adecuado para una tarea específica es un paso crítico en los flujos de trabajo de aprendizaje automático. Implica tener en cuenta varios factores, como la naturaleza del problema, los datos disponibles, las características deseadas del modelo (por ejemplo, interpretabilidad, precisión) y los recursos computacionales.
Estos son los pasos y las consideraciones clave en el proceso de selección del modelo:
1. Entender el problema
En primer lugar, determine si el problema es una clasificación, regresión, agrupación en clústeres u otro tipo de tarea. Debe entender las características, la variable(s) de destino, el tamaño de los datos, la distribución de los datos y cualquier patrón o complejidad inherente a los datos.
2. Selección de modelos de candidatos
Aproveche la experiencia en el ámbito para identificar los modelos que se utilizan comúnmente y que son adecuados para tareas similares en el ámbito. Una parte importante de esto es tener en cuenta diferentes tipos de modelos de aprendizaje automático, como modelos lineales, modelos basados en árboles, máquinas vectoriales de soporte (SVM), redes neuronales, métodos de conjunto, etc., en función del tipo de problema y las características de los datos.
3. Evaluación de la complejidad y la interpretabilidad del modelo
Tenga en cuenta la complejidad del modelo y su capacidad para capturar relaciones complejas en los datos. Los modelos más complejos, como las redes neuronales de aprendizaje profundo, pueden ofrecer una mayor precisión predictiva, pero pueden ser computacionalmente caros y propensos al sobreajuste. Dependiendo de las necesidades de la aplicación y de las partes interesadas, decida si la interpretabilidad del modelo es crucial. Los modelos sencillos, como la regresión lineal o los árboles de decisión, son más interpretables en comparación con los modelos complejos de caja negra, como las redes neuronales profundas.
4. Teniendo en cuenta las métricas de rendimiento
Para las tareas de clasificación, tenga en cuenta métricas como la precisión, la precisión, el recuerdo, F1-score CUA-ROC, etc., en función del desequilibrio de clase y los objetivos empresariales. Para las tareas de regresión, puede usar indicadores como error medio cuadrado (MSE), error medio absoluto (MAE), R cuadrado y otros para evaluar el rendimiento del modelo. Utilice técnicas de validación adecuadas, como la validación cruzada, la división de pruebas de tren o la validación basada en el tiempo (para los datos de series temporales), para evaluar completamente el rendimiento del modelo.
5. Comparación y validación de modelos
Empiece con unos modelos de referencia sencillos para establecer una referencia de rendimiento. Formar a múltiples modelos de candidatos usando conjuntos de datos de formación/validación adecuados y evaluar su rendimiento usando las métricas elegidas. Ajuste los hiperparámetros de los modelos usando técnicas como la búsqueda de cuadrícula, la búsqueda aleatoria o la optimización bayesiana para mejorar el rendimiento.
6. Seleccionar el mejor modelo
Considere las contrapartidas entre la complejidad del modelo, la interpretabilidad, los recursos computacionales y las métricas de rendimiento y, a continuación, evalúe el modelo de mejor rendimiento en un conjunto de datos de prueba de reserva para garantizar su capacidad de generalización en los datos no vistos.
7. Iterar y refinar
La selección de modelos suele ser un proceso iterativo. Si el modelo que ha elegido no cumple los criterios deseados, repita refinando la ingeniería de características, los hiperparámetros o probando diferentes algoritmos hasta lograr unos resultados satisfactorios.
Modelo de formación
El entrenamiento de un modelo de aprendizaje automático implica ajustar el algoritmo seleccionado a los datos de entrenamiento para aprender patrones y relaciones en los datos. Este proceso incluye dividir los datos en conjuntos de entrenamiento y validación, optimizar los parámetros del modelo y evaluar el rendimiento del modelo.
Echemos un vistazo más de cerca a los pasos:
1. División de datos
Divida el conjunto de datos en conjuntos de entrenamiento y validación/prueba. Las ratios de división típicas son de 70-30 u 80-20 para entrenamiento/validación, lo que garantiza que el conjunto de validación represente la distribución de datos en el mundo real.
2. Elegir el algoritmo
En función de su tipo de problema (clasificación, regresión, agrupación en clústeres) y de las características de los datos, seleccione el algoritmo de aprendizaje automático o conjunto de algoritmos adecuado para entrenar el modelo.
3. Instantiación del modelo
Cree una instancia del modelo elegido inicializando sus parámetros. Por ejemplo, en Python con Scikit-Learn, puede usar códigos como:
desde sklearn.linear_model import LogisticRegression
modelo = LogísticaRegresión()
4. Formación del modelo
Ajuste el modelo a los datos de entrenamiento usando el método .fit(). Este paso implica aprender los patrones y las relaciones de los datos.
5. Optimización de los parámetros del modelo
Realice ajustes de hiperparámetros para optimizar el rendimiento del modelo. Las técnicas habituales incluyen la búsqueda de cuadrícula, la búsqueda aleatoria o la optimización bayesiana.
6. Evaluación del modelo
Evalúe el rendimiento del modelo entrenado usando el conjunto de validación/prueba. Calcule métricas relevantes, como la precisión, la recuperación, F1-score (para la clasificación) o el error medio cuadrado.
7. Selección del modelo final
Una vez satisfecho con el rendimiento del modelo en el conjunto de validación, vuelva a entrenar el modelo final usando todo el conjunto de datos de entrenamiento (incluidos los datos de validación) para maximizar el aprendizaje antes del despliegue.
Despliegue de modelos
Una vez que haya seleccionado y formado su modelo, estará preparado para desplegarlo.
Los pasos de implementación incluyen:
1. Serialización de modelos
Serialice el modelo entrenado en un formato adecuado para el despliegue. Los formatos comunes incluyen pickle (Python), PMML (Predictive Model Markup Language), ONNX (Open Neural Network Exchange) o formatos personalizados, en función del marco utilizado.
2. Integración con el entorno de producción
Elija un entorno de implementación adecuado, como plataformas de nube (AWS , Azure , Google Cloud), servidores locales o soluciones contenedorizadas (Docker, Kubernetes ). Integre el modelo en el entorno de producción usando marcos o bibliotecas específicos del entorno de despliegue elegido (por ejemplo, Flask para API web, TensorFlow Serving o PyTorch serviendo para modelos de servicio).
3. Consideraciones sobre la escalabilidad
Diseñe la arquitectura de despliegue para gestionar las cargas variables y los requisitos de escalabilidad. Tenga en cuenta factores como los usuarios simultáneos, el procesamiento por lotes y el uso de recursos. Utilice funciones de escalamiento automático basadas en la nube o herramientas de orquestación de contenedores para el escalamiento dinámico basado en la demanda. Considere la modernización del centro de datos para escalar la IA.
4. Predicciones en tiempo real
Asegúrese de que el despliegue del modelo admite predicciones en tiempo real si es necesario. Esto implica configurar terminales o servicios de baja latencia para gestionar rápidamente las solicitudes de predicción entrantes. Considere la optimización de la velocidad de inferencia del modelo mediante técnicas como la cuantificación del modelo, la poda o el uso de aceleradores de hardware (por ejemplo, GPU, TPU) basados en el entorno de despliegue.
5. Métricas de supervisión y rendimiento
Implementar soluciones de supervisión para realizar un seguimiento del rendimiento del modelo en producción. Supervise métricas como la latencia de predicción, el rendimiento, las tasas de error y la deriva de los datos (cambios en la distribución de los datos de entrada con el tiempo). Configure alertas y umbrales para que las métricas de rendimiento críticas detecten y respondan rápidamente a los problemas.
6. Versiones y actualizaciones de modelos
Establezca una estrategia de control de versiones para sus modelos desplegados, para realizar un seguimiento de los cambios y facilitar la reversión si es necesario. Implementar un proceso para implementar actualizaciones de modelos o ciclos de reentrenamiento basados en nuevos datos o algoritmos mejorados. Considere técnicas como las pruebas A/B para comparar las versiones de modelo en producción antes de la implementación completa.
7. La seguridad y el cumplimiento de las leyes
Implementar medidas de seguridad para proteger el modelo, los datos y los terminales desplegados frente al acceso no autorizado, los ataques y las vulneraciones de datos. Garantizar el cumplimiento de los requisitos normativos, como el RGPD, la HIPAA o los estándares específicos del sector relacionados con la privacidad de los datos y el despliegue de modelos.
8. Documentación y colaboración
Mantener una documentación detallada del modelo desplegado, incluida su arquitectura, API, dependencias y configuraciones. Fomentar la colaboración entre los científicos de datos, los ingenieros y las partes interesadas para repetir las mejoras de los modelos, abordar los problemas e incorporar los comentarios del uso en el mundo real.
Conclusión
Ahora conoce los componentes esenciales de un flujo de trabajo estructurado de aprendizaje automático, incluidos los pasos clave, como la definición del problema, el preprocesamiento de datos, la ingeniería de características, la selección de modelos, la formación y la evaluación.
Cada paso desempeña un papel crucial en el éxito general de un proyecto de aprendizaje automático. La definición del problema prepara con precisión el terreno para el desarrollo de una solución específica, mientras que el preprocesamiento de datos garantiza la calidad y la idoneidad de los datos para el análisis. La ingeniería de características mejora el rendimiento del modelo al extraer información significativa de los datos. La selección de modelos implica elegir el algoritmo más adecuado basándose en factores como la complejidad, la interpretabilidad y las métricas de rendimiento, seguido de una formación, optimización y evaluación exhaustivas para garantizar un rendimiento sólido del modelo.
Siguiendo un flujo de trabajo estructurado, los científicos de datos pueden mejorar la eficiencia, mantener la integridad del modelo y tomar decisiones fundamentadas a lo largo del ciclo de vida del proyecto, lo que en última instancia conduce a unos modelos de aprendizaje automático más precisos, fiables e impactantes que proporcionan un verdadero valor a las organizaciones y las partes interesadas.
Sin embargo, uno de los principales retos de todos los flujos de trabajo de aprendizaje automático son los cuellos de botella. Los conjuntos de datos de entrenamiento de aprendizaje automático suelen superar ampliamente la capacidad de DRAM de un servidor. La mejor manera de estar preparado para estos cuellos de botella es evitarlos por completo, al tener una infraestructura preparada para la IA y el ML, como AIRI® o FlashStack®. Obtenga más información sobre cómo Pure Storage le ayuda a acelerar sus iniciativas de IA y ML.