Mejor enfoque para un proyecto de aprendizaje automático de extremo a extremo [2022]
Publicado: 2021-01-01El aprendizaje automático está acelerando el ritmo y ha sido la manzana de la discordia durante un período de tiempo muy largo. Algunos algoritmos y arquitecturas muy buenos en este dominio han hecho posible que el concepto de Machine Learning se aplique en el mundo práctico y en vivo.
Ya no es solo una noción para la investigación y se ha extendido profundamente a áreas de aplicación útiles. Y hoy, más que nunca, existe la necesidad de dominar el arte de la canalización de extremo a extremo para proyectos de aprendizaje automático.
Hay un interés creciente en el aprendizaje automático para muchas personas y hay una inmensa cantidad de recursos disponibles que pueden ayudarlo a comprender los fundamentos de ML e AI. Muchos cursos lo llevan desde aprender algunos conceptos básicos hasta finalmente construir algunos modelos de última generación.
¿Pero es eso? ¿Realmente aprendemos cómo acceder a los datos y realmente vemos cómo limpiar los datos para que nuestro modelo ML pueda extraer características útiles de ellos? ¿Y qué hay de la parte de despliegue? Hay tantas preguntas en líneas similares que quedan sin respuesta en nuestras mentes después de completar dichos cursos y planes de estudio.
Este problema surge debido a una comprensión deficiente de una canalización completa de aprendizaje automático de extremo a extremo para cualquier proyecto. En este artículo, analizaremos una de esas canalizaciones para comprender qué se debe hacer exactamente para obtener mejores resultados en un escenario de la vida real para cualquier proyecto de ML.
Uno de los libros que mejor muestra esto es Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow de Aurelien Geron.

Esta tubería de extremo a extremo se puede dividir en unos pocos pasos para una mejor comprensión, y esos son:
- Entender el enunciado del problema
- Adquirir los datos necesarios
- Entender los datos
- Limpiando los datos
- Selección del mejor modelo para el entrenamiento
- Ajuste fino de los hiperparámetros
- Presentando los resultados
- Implementación y mantenimiento del sistema.
Para comprender mejor la canalización de cualquier proyecto de aprendizaje automático de la vida real, utilizaremos el ejemplo popular del problema de predicción del precio de la vivienda en California. Discutiremos todos los puntos anteriores en relación con este enunciado del problema. Puede haber algunos cambios menores para diferentes proyectos, pero en general el objetivo sigue siendo el mismo.
Tabla de contenido
Entender el enunciado del problema
Para construir una buena solución, uno necesita entender la declaración del problema muy claramente. Lo más probable es que termine construyendo y entrenando un modelo de Machine Learning, pero las áreas de aplicación de la vida real necesitan mucho más que solo los modelos. La salida del modelo debe coincidir con lo que necesita exactamente el usuario final.
Para este ejemplo en particular, se nos proporciona un conjunto de datos de todas las métricas de California, como la población, los ingresos, los precios de la vivienda y otros. El resultado requerido por el modelo es que debería poder predecir el precio de la casa dados sus otros atributos como ubicación, población, ingresos y otros.
La razón importante de este paso es comprender exactamente lo que se debe hacer y exactamente qué tipo de solución se necesita. Aquí es donde se realiza la parte principal de la lluvia de ideas sobre cómo se debe abordar la declaración del problema.
Leer: Ideas de proyectos de aprendizaje automático para principiantes
Adquirir los datos necesarios
Una vez que haya entendido claramente la declaración del problema y haya decidido avanzar con un enfoque de aprendizaje automático para resolver el problema, debe comenzar a buscar datos relevantes. Los datos son el ingrediente más importante de cualquier proyecto de aprendizaje automático, por lo que debe buscar y seleccionar cuidadosamente solo los datos de calidad. El rendimiento final de los modelos ML depende de los datos que se usaron durante el entrenamiento.
Hay varias fuentes para encontrar datos que también pueden ayudar a comprender la distribución de datos en ejemplos de la vida real. Para nuestro ejemplo, podemos tomar el conjunto de datos de Predicción del precio de la vivienda de California de Kaggle. Estos datos están en formato CSV, por lo que usaremos la biblioteca de Pandas para cargar el conjunto de datos.
Entender los datos
Es un aspecto muy importante de la solución ML poder comprender los datos con los que está trabajando. Esto nos permite elegir qué algoritmos o arquitecturas modelo se adaptan mejor al proyecto. Antes de comenzar a ver los datos en detalle, es una buena práctica dividir primero el conjunto de datos en conjuntos de entrenamiento y de prueba. Esto mantiene intacto el equipo de prueba y, por lo tanto, reduce las posibilidades de que se sobreajuste al equipo de prueba. Al hacer esto, está eliminando el sesgo de espionaje de datos del modelo.
Hay varias formas de dividir los conjuntos de datos en estos conjuntos de entrenamiento y prueba. Uno de estos es dividirlo con un valor de porcentaje codificado. 90% tren y 10% prueba es un valor común en la mayoría de los casos.
Después de la división, deberá visualizar el conjunto de trenes en profundidad para comprender los datos. El conjunto de datos actual incluye los puntos de latitud y longitud y, por lo tanto, es bastante útil usar el diagrama de dispersión para ver la densidad según las ubicaciones.
Encontrar la correlación entre dos atributos en el conjunto de datos es útil para comprender qué atributos se relacionan más con el atributo requerido. En este caso, necesitamos averiguar qué atributo está más relacionado con los precios de la vivienda en el conjunto de datos. Esto se puede hacer fácilmente en Scikit-Learn usando el método corr(). Devuelve un valor para cada atributo con respecto a otro. Entonces, si necesita ver las relaciones con respecto a los precios de la vivienda, esta es la forma en que puede hacerlo:
corr_matrix[“median_house_value”].sort_values(ascending=False)
mediana_casa_valor 1.000000ingreso_medio 0.687170habitaciones_totales 0.135231vivienda_edad_mediana 0.114220hogares 0.064702total_dormitorios 0.047865población -0.026699longitud -0.047279latitud -0.142826
Aquí, es visible que el ingreso medio está directamente relacionado con el valor de la casa y, por otro lado , el valor de latitud está relacionado indirectamente con él.
Finalmente, también puede intentar hacer algo de ingeniería de características combinando algunos atributos. Por ejemplo, el total de habitaciones_por_hogar puede ser mucho más informativo que el total de habitaciones o los valores del hogar individualmente.
Limpiando los datos
En este paso, prepara los datos para el proyecto de Machine Learning. Es el paso más importante y que consume más tiempo de toda la canalización. El rendimiento del modelo depende en gran medida de qué tan bien prepare los datos. Por lo general, es una buena práctica escribir funciones para este propósito, ya que le permitirá usar esas funciones cuando sea necesario y las mismas funciones se pueden usar en la línea de producción para preparar los nuevos datos para las predicciones.
Uno de los problemas más encontrados en los datos reales son los valores faltantes para algunas entradas en el conjunto de datos. Hay algunas formas de manejarlo. Puede eliminar directamente todo el atributo, pero esto no es muy bueno para el modelo. Puede deshacerse de la fila que tiene un valor faltante. Otra forma que se usa principalmente es establecer el valor que falta en algún otro valor como cero o la media aritmética de toda la columna si es un valor numérico.
Para valores categóricos, es mejor representarlos por números y codificarlos en una codificación one-hot para que sea más fácil para el modelo trabajar en ellos. Scikit-Learn también proporciona la clase OneHotEncoder para que podamos convertir fácilmente valores categóricos en vectores one-hot.
Otra cosa que debe cuidar es la escala de funciones. Puede haber algunos atributos cuyos rangos de valores sean muy drásticos. Por lo tanto, es mejor escalarlos a una escala estándar para que el modelo pueda trabajar fácilmente con esos valores y funcionar mejor.

Lea también sobre: Salario de ingeniero de aprendizaje automático en India
Selección del mejor modelo para el entrenamiento
Después de completar toda la limpieza de datos y la ingeniería de funciones, el siguiente paso se vuelve bastante fácil. Ahora, todo lo que tiene que hacer es entrenar algunos modelos prometedores con los datos y encontrar el modelo que ofrece las mejores predicciones. Hay algunas formas que nos ayudan a seleccionar el mejor modelo.
Nuestro ejemplo de la predicción del precio de la vivienda en California es un problema de regresión. Esto significa que tenemos que predecir un valor a partir de un rango de números que es, en este caso, el precio de la vivienda.
El primer paso aquí es entrenar algunos modelos y probarlos en el conjunto de validación. No debe usar el conjunto de prueba aquí, ya que provocará un sobreajuste en el conjunto de prueba y, finalmente, el modelo tendrá una regularización muy baja. De esos modelos, la mayor parte del tiempo se debe elegir el modelo con buena precisión de entrenamiento y precisión de validación. También puede depender del caso de uso, ya que algunas tareas requieren configuraciones diferentes a otras.
Como ya hemos limpiado los datos y las funciones de preprocesamiento están listas, es muy fácil entrenar diferentes modelos en tres o cuatro líneas de código utilizando algunos marcos como Scikit-Learn o Keras. En Scikit-Learn también tenemos una opción de validación cruzada que ayuda mucho a encontrar buenos hiperparámetros para modelos como árboles de decisión.
Ajuste fino de los hiperparámetros
Después de tener algunos modelos preseleccionados, surge la necesidad de ajustar los hiperparámetros para liberar su verdadero potencial. Hay muchas maneras de lograr esto también. Una de ellas es que puede cambiar manualmente los hiperparámetros y entrenar los modelos una y otra vez hasta obtener un resultado satisfactorio. Aquí puede ver claramente el problema de que no es posible verificar tantas combinaciones como lo haría una tarea automatizada. Así que aquí vienen algunos buenos métodos para automatizar estas cosas.
Grid Search es una característica maravillosa proporcionada por Scikit-Learn en forma de una clase GridSearchCV donde realiza la validación cruzada por sí mismo y descubre los valores de hiperparámetro perfectos para obtener mejores resultados. Todo lo que tenemos que hacer es mencionar con qué hiperparámetros tiene que experimentar. Es una característica simple pero muy poderosa.
La búsqueda aleatoria es otro enfoque que se puede utilizar para un propósito similar. Grid Search funciona bien cuando hay un pequeño espacio de hiperparámetros para experimentar, pero cuando hay una gran cantidad de hiperparámetros, es mejor usar RandomizedSearchCV. Prueba hiperparámetros aleatorios y obtiene los mejores valores que ha visto en todo momento.
Por último, pero no menos importante, está el enfoque de Ensemble Learning . Aquí podemos usar múltiples modelos para dar sus respectivas predicciones y, por último, podemos elegir la predicción final como el promedio de todos. Este es un método muy prometedor y gana muchas competencias en Kaggle.
Después de ajustar todos los hiperparámetros para el modelo final, puede usar el modelo para hacer predicciones en el conjunto de prueba. Aquí podemos evaluar qué tan bien le está yendo al modelo en el conjunto de prueba. Recuerde que no debe ajustar su modelo después de esto para aumentar la precisión en el conjunto de prueba, ya que provocará un sobreajuste en las muestras del conjunto de prueba.
Presentando los resultados
Una vez que se selecciona el mejor modelo y se realiza la evaluación, es necesario mostrar correctamente los resultados. La visualización es la clave para hacer mejores proyectos de aprendizaje automático, ya que se trata de datos y comprender los patrones detrás de ellos. Los resultados numéricos sin procesar pueden parecer buenos para las personas que ya están familiarizadas con este dominio, pero es muy importante visualizarlos en gráficos y tablas, ya que hace que el proyecto sea atractivo y todos puedan tener una idea clara de lo que realmente está sucediendo en nuestra solución.
Implementación y mantenimiento del sistema.
La mayoría de los alumnos llegan a esta etapa de la canalización y se enfrentan a problemas tremendos al intentar implementar el proyecto para su aplicación en un escenario de la vida real. Es bastante fácil crear y entrenar modelos en un Jupyter Notebook, pero la parte importante es guardar correctamente el modelo y luego usarlo en un entorno real.
Uno de los problemas más comunes que enfrentan los ingenieros de ML es que hay una diferencia en los datos que se reciben en vivo y los datos en los que han entrenado el modelo. Aquí podemos usar las funciones de preprocesamiento que creamos al crear la canalización para entrenar nuestros modelos.
Hay dos tipos de modelos de aprendizaje automático que se pueden implementar: un modelo en línea y un modelo fuera de línea. El modelo online es el que sigue aprendiendo de los datos que va recibiendo en tiempo real. Los modelos fuera de línea no aprenden de las nuevas muestras y deben actualizarse y mantenerse adecuadamente si hay un cambio en el tipo de datos que recibe. Por lo tanto, debe haber un mantenimiento adecuado para ambos tipos de modelos.
Al implementar modelos de aprendizaje automático, deben estar envueltos en una plataforma para que los usuarios puedan interactuar fácilmente con ellos. Las opciones son amplias, podemos incluirlo en una aplicación web, una aplicación de Android, una API Restful y muchas más. El conocimiento básico de la creación de tales aplicaciones o API es un gran punto a favor. Debería poder implementar aplicaciones NodeJS o Python en servicios en la nube como Google Cloud Platform, Amazon Web Services o Microsoft Azure.

Si no se siente cómodo con algunos marcos como Django o Flask, puede probar Streamlit, que le permite implementar un código python en forma de una aplicación web con solo unas pocas líneas de código adicional. Hay varias bibliotecas y marcos de este tipo que se pueden explorar.
Conclusión
Para concluir todo este artículo, diría que los proyectos de Machine Learning son bastante diferentes de otros proyectos tradicionales en términos de tubería y si logras dominar esta tubería, todo lo demás se vuelve mucho más fácil.
Algunos de los pasos más importantes de esta tubería de extremo a extremo que muchos de los principiantes tienden a descuidar son la limpieza de datos y la implementación de modelos. Si se cuidan estos pasos, el resto de la pieza es como cualquier otro proyecto.
Seguir estos pasos y tener una canalización establecida para proyectos lo ayuda a tener una visión clara sobre las tareas, y la depuración de problemas se vuelve más manejable. Por lo tanto, le sugiero que siga estos pasos e intente implementar su propio proyecto de aprendizaje automático de extremo a extremo utilizando esta lista de verificación. ¡Elige una declaración del problema, encuentra el conjunto de datos y sigue adelante para divertirte con tu proyecto!
Si está interesado en obtener más información sobre el aprendizaje automático, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT- B Estado de exalumno, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.
¿Qué es el aprendizaje automático o ML?
La capacidad de un sistema para aprender una tarea sin ser programado explícitamente a partir de los datos proporcionados se conoce como aprendizaje automático. Este campo se centra en el desarrollo de programas informáticos que pueden acceder a datos y aprender por sí mismos. Es un subcampo del vasto tema de inteligencia artificial (IA). El aprendizaje automático se está implementando en casi todos los sectores para aumentar la productividad, el marketing, las ventas, la felicidad del cliente y las ganancias corporativas. Muchos expertos en TI se han interesado en esto y están considerando cambiar de carrera.
¿Qué son los proyectos de ML de extremo a extremo?
Los proyectos de aprendizaje automático de extremo a extremo implican pasos como la preparación de datos, el entrenamiento de un modelo en ellos y la implementación de ese modelo. Consiste en tuberías que son las formas de escribir el código y automatizar el proceso de trabajo. Estas canalizaciones, cuando se compilan correctamente, conducen a la formación de un proyecto de aprendizaje automático exitoso. Comprender la declaración del problema, obtener los datos apropiados, comprender los datos, limpiar los datos, seleccionar el modelo óptimo para el entrenamiento, ajustar los hiperparámetros y presentar los hallazgos son solo algunas de las etapas involucradas.
¿Qué son los hiperparámetros en el aprendizaje automático?
Un hiperparámetro es un parámetro en el aprendizaje automático cuyo valor se utiliza para influir en el proceso de aprendizaje. Se pueden clasificar en dos partes, hiperparámetros de modelo e hiperparámetros de algoritmo. Los hiperparámetros del modelo no se pueden asumir mientras se entrega la máquina al conjunto de entrenamiento porque se dirigen a la tarea de selección del modelo. Por el contrario, los hiperparámetros del algoritmo no tienen ningún efecto sobre el rendimiento del modelo, pero influyen en la velocidad y la calidad del proceso de aprendizaje. Las diferentes técnicas de entrenamiento de modelos requieren hiperparámetros diferentes, pero hay algunos algoritmos básicos que no necesitan hiperparámetros.