¡Descubre los secretos para elegir el algoritmo perfecto de Machine Learning!
¡Descubre secretos para elegir algoritmo perfecto de Machine Learning!
Una de las decisiones clave que debes tomar al resolver un problema de ciencia de datos es qué algoritmo de aprendizaje automático utilizar.
Existen cientos de algoritmos de aprendizaje automático para elegir, cada uno con sus propias ventajas y desventajas. Algunos algoritmos pueden funcionar mejor que otros en tipos específicos de problemas o en conjuntos de datos específicos.
El teorema de “No hay almuerzo gratis” (NFL) establece que no hay un algoritmo que funcione mejor para todos los problemas, o dicho de otra manera, todos los algoritmos tienen el mismo rendimiento cuando su rendimiento se promedia en todos los problemas posibles.
En este artículo, discutiremos los puntos principales que debes tener en cuenta al elegir un modelo para tu problema y cómo comparar diferentes algoritmos de aprendizaje automático.
- Búsqueda de similitud, Parte 7 Composiciones de LSH
- Nueva investigación de IA de la Universidad de Maryland investiga e...
- Transformando los mensajes de texto con IA Una exploración en profu...
Aspectos clave del algoritmo
La siguiente lista contiene 10 preguntas que puedes hacerte al considerar un algoritmo de aprendizaje automático específico:
- ¿Qué tipo de problemas puede resolver el algoritmo? ¿El algoritmo solo puede resolver problemas de regresión o clasificación, o puede resolver ambos? ¿Puede manejar problemas de múltiples clases/múltiples etiquetas o solo problemas de clasificación binaria?
- ¿El algoritmo tiene alguna suposición sobre el conjunto de datos? Por ejemplo, algunos algoritmos asumen que los datos son linealmente separables (por ejemplo, perceptron o SVM lineal), mientras que otros asumen que los datos siguen una distribución normal (por ejemplo, Modelos de Mezcla Gaussiana).
- ¿Existen garantías sobre el rendimiento del algoritmo? Por ejemplo, si el algoritmo intenta resolver un problema de optimización (como la regresión logística o las redes neuronales), ¿se garantiza que encontrará el óptimo global o solo una solución óptima local?
- ¿Cuántos datos se necesitan para entrenar el modelo de manera efectiva? Algunos algoritmos, como las redes neuronales profundas, son más hábiles en el manejo de datos que otros.
- ¿El algoritmo tiende al sobreajuste? En caso afirmativo, ¿el algoritmo proporciona formas de lidiar con el sobreajuste?
- ¿Cuáles son los requisitos de tiempo de ejecución y memoria del algoritmo, tanto durante el entrenamiento como durante la predicción?
- ¿Qué pasos de preprocesamiento de datos se requieren para preparar los datos para el algoritmo?
- ¿Cuántos hiperparámetros tiene el algoritmo? Los algoritmos que tienen muchos hiperparámetros requieren más tiempo para entrenar y ajustar.
- ¿Los resultados del algoritmo se pueden interpretar fácilmente? En muchos dominios de problemas (como el diagnóstico médico), nos gustaría poder explicar las predicciones del modelo en términos humanos. Algunos modelos se pueden visualizar fácilmente (como los árboles de decisión), mientras que otros se comportan más como una caja negra (por ejemplo, redes neuronales).
- ¿El algoritmo admite el aprendizaje en línea (incremental), es decir, podemos entrenarlo con muestras adicionales sin reconstruir el modelo desde cero?
Ejemplo de comparación de algoritmos
Por ejemplo, tomemos dos de los algoritmos más populares: árboles de decisión y redes neuronales, y comparemos según los criterios anteriores.
Árboles de decisión
- Los árboles de decisión pueden manejar problemas de clasificación y regresión. También pueden manejar fácilmente problemas de múltiples clases y múltiples etiquetas.
- Los algoritmos de árboles de decisión no tienen suposiciones específicas sobre el conjunto de datos.
- Un árbol de decisión se construye utilizando un algoritmo voraz, que no garantiza encontrar el árbol óptimo (es decir, el árbol que minimiza el número de pruebas requeridas para clasificar correctamente todas las muestras de entrenamiento). Sin embargo, un árbol de decisión puede alcanzar una precisión del 100% en el conjunto de entrenamiento si extendemos sus nodos hasta que todas las muestras en los nodos hoja pertenezcan a la misma clase. Tales árboles generalmente no son buenos predictores, ya que sobreajustan el ruido en el conjunto de entrenamiento.
- Los árboles de decisión pueden funcionar bien incluso en conjuntos de datos pequeños o de tamaño VoAGI.
- Los árboles de decisión pueden sobreajustar fácilmente. Sin embargo, podemos reducir el sobreajuste mediante la poda del árbol. También podemos usar métodos de conjunto como bosques aleatorios que combinan la salida de múltiples árboles de decisión. Estos métodos sufren menos de sobreajuste.
- El tiempo de construcción de un árbol de decisión es O(n²p), donde n es el número de muestras de entrenamiento y p es el número de características. El tiempo de predicción en los árboles de decisión depende de la altura del árbol, que suele ser logarítmica en n, ya que la mayoría de los árboles de decisión son bastante equilibrados.
- Los árboles de decisión no requieren ningún preprocesamiento de datos. Pueden manejar sin problemas diferentes tipos de características, incluidas características numéricas y categóricas. Tampoco requieren normalización de datos.
- Los árboles de decisión tienen varios hiperparámetros clave que deben ajustarse, especialmente si se utiliza la poda, como la profundidad máxima del árbol y qué medida de impureza utilizar para decidir cómo dividir los nodos.
- Los árboles de decisión son simples de entender e interpretar, y podemos visualizarlos fácilmente (a menos que el árbol sea muy grande).
- Los árboles de decisión no se pueden modificar fácilmente para tener en cuenta nuevas muestras de entrenamiento, ya que cambios pequeños en el conjunto de datos pueden causar cambios grandes en la topología del árbol.
Redes Neuronales
- Las redes neuronales son uno de los modelos de aprendizaje automático más generales y flexibles que existen. Pueden resolver casi cualquier tipo de problema, incluyendo clasificación, regresión, análisis de series temporales, generación automática de contenido, etc.
- Las redes neuronales no tienen suposiciones sobre el conjunto de datos, pero los datos deben estar normalizados.
- Las redes neuronales se entrenan utilizando descenso de gradiente. Por lo tanto, solo pueden encontrar una solución óptima local. Sin embargo, existen varias técnicas que se pueden utilizar para evitar quedarse atascado en mínimos locales, como el momento y las tasas de aprendizaje adaptativas.
- Las redes neuronales profundas requieren una gran cantidad de datos para entrenar en el orden de millones de puntos de muestra. En general, cuanto más grande sea la red (más capas y neuronas tenga), más datos necesitamos para entrenarla.
- Las redes que son demasiado grandes pueden memorizar todas las muestras de entrenamiento y no generalizar bien. Para muchos problemas, puedes comenzar con una red pequeña (por ejemplo, con una o dos capas ocultas) y aumentar gradualmente su tamaño hasta que comiences a sobreajustar el conjunto de entrenamiento. También puedes agregar regularización para lidiar con el sobreajuste.
- El tiempo de entrenamiento de una red neuronal depende de muchos factores (el tamaño de la red, el número de iteraciones de descenso de gradiente necesarias para entrenarla, etc.). Sin embargo, el tiempo de predicción es muy rápido, ya que solo necesitamos hacer un pase hacia adelante sobre la red para obtener la etiqueta.
- Las redes neuronales requieren que todas las características sean numéricas y normalizadas.
- Las redes neuronales tienen muchos hiperparámetros que deben ajustarse, como el número de capas, el número de neuronas en cada capa, qué función de activación utilizar, la tasa de aprendizaje, etc.
- Las predicciones de las redes neuronales son difíciles de interpretar, ya que se basan en el cálculo de un gran número de neuronas, cada una de las cuales solo tiene una pequeña contribución a la predicción final.
- Las redes neuronales pueden adaptarse fácilmente para incluir muestras de entrenamiento adicionales, ya que utilizan un algoritmo de aprendizaje incremental (descenso de gradiente estocástico).
Complejidad Temporal
La siguiente tabla compara los tiempos de entrenamiento y predicción de algunos algoritmos populares (n es el número de muestras de entrenamiento y p es el número de características).
Algoritmos más exitosos en competencias de Kaggle
Según una encuesta realizada en 2016, los algoritmos más utilizados por los ganadores de competencias de Kaggle fueron los algoritmos de aumento de gradiente (XGBoost) y las redes neuronales (ver este artículo).
De los 29 ganadores de competencias de Kaggle en 2015, 8 de ellos utilizaron XGBoost, 9 utilizaron redes neuronales profundas y 11 utilizaron un conjunto de ambos.
XGBoost se utilizó principalmente en problemas que trataban con datos estructurados (por ejemplo, tablas relacionales), mientras que las redes neuronales fueron más exitosas en el manejo de problemas no estructurados (por ejemplo, problemas que tratan con imágenes, voz o texto).
Sería interesante verificar si esta sigue siendo la situación actual o si las tendencias han cambiado (¿alguien se anima al desafío?)
¡Gracias por leer!
Dr. Roi Yehoshua es profesor de enseñanza en la Universidad Northeastern en Boston, enseñando clases que forman parte del programa de maestría en Ciencia de Datos. Sus investigaciones en sistemas de robots múltiples y aprendizaje por refuerzo se han publicado en las principales revistas y conferencias líderes en IA. También es uno de los escritores principales en la plataforma social VoAGI, donde publica con frecuencia artículos sobre Ciencia de Datos y Aprendizaje Automático.
Original. Repostado con permiso.