¿Qué algoritmo de ML elegir?

Mar 04 2023
Una de las decisiones clave que debe tomar al resolver un problema de ciencia de datos es qué algoritmo de aprendizaje automático usar. Hay cientos de algoritmos de aprendizaje automático para elegir, cada uno con sus propias ventajas y desventajas.

Una de las decisiones clave que debe tomar al resolver un problema de ciencia de datos es qué algoritmo de aprendizaje automático usar.

Hay 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 “No Free Lunch” (NFL) establece que no existe un algoritmo que funcione mejor para cada problema, o en otras palabras, todos los algoritmos tienen el mismo rendimiento cuando se promedia su rendimiento sobre todos los problemas posibles.

Diferentes modelos de aprendizaje automático

En este artículo, discutiremos los puntos principales que debe considerar al elegir un modelo para su problema y cómo comparar diferentes algoritmos de aprendizaje automático.

Aspectos clave del algoritmo

La siguiente lista contiene 10 preguntas que puede hacerse al considerar un algoritmo de aprendizaje automático específico:

  1. ¿Qué tipo de problemas puede resolver el algoritmo? ¿Puede el algoritmo resolver solo problemas de regresión o clasificación, o puede resolver ambos? ¿Puede manejar problemas de varias clases/etiquetas múltiples o solo problemas de clasificación binaria?
  2. ¿El algoritmo tiene alguna suposición sobre el conjunto de datos? Por ejemplo, algunos algoritmos asumen que los datos son linealmente separables (p. ej., perceptrón o SVM lineal), mientras que otros asumen que los datos se distribuyen normalmente (p. ej., modelos de mezcla gaussiana).
  3. ¿Hay alguna garantía sobre el rendimiento del algoritmo? Por ejemplo, si el algoritmo intenta resolver un problema de optimización (como en la regresión logística o las redes neuronales), ¿está garantizado que encontrará la solución óptima global o solo una solución óptima local?
  4. ¿Cuántos datos se necesitan para entrenar el modelo de manera efectiva? Algunos algoritmos, como las redes neuronales profundas, son más expertos en datos que otros.
  5. ¿El algoritmo tiende a sobreajustarse? Si es así, ¿el algoritmo proporciona formas de lidiar con el sobreajuste?
  6. ¿Cuáles son los requisitos de tiempo de ejecución y memoria del algoritmo, tanto durante el entrenamiento como durante el tiempo de predicción?
  7. ¿Qué pasos de preprocesamiento de datos se requieren para preparar los datos para el algoritmo?
  8. ¿Cuántos hiperparámetros tiene el algoritmo? Los algoritmos que tienen muchos hiperparámetros toman más tiempo para entrenarse y ajustarse.
  9. ¿Se pueden interpretar fácilmente los resultados del algoritmo? 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 (p. ej., redes neuronales).
  10. ¿El algoritmo admite el aprendizaje en línea (incremental), es decir, podemos entrenarlo con muestras adicionales sin reconstruir el modelo desde cero?

Por ejemplo, tomemos dos de los algoritmos más populares: árboles de decisión y redes neuronales, y compárelos de acuerdo con los criterios anteriores.

Árboles de decisión

  1. Los árboles de decisión pueden manejar tanto problemas de clasificación como de regresión. También pueden manejar fácilmente problemas de varias clases y varias etiquetas.
  2. Los algoritmos de árboles de decisión no tienen suposiciones específicas sobre el conjunto de datos.
  3. 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 lograr una precisión del 100 % en el conjunto de entrenamiento si seguimos extendiendo sus nodos hasta que todas las muestras en los nodos hoja pertenezcan a la misma clase. Dichos árboles no suelen ser buenos predictores, ya que se adaptan demasiado al ruido del conjunto de entrenamiento.
  4. Los árboles de decisión pueden funcionar bien incluso en conjuntos de datos pequeños o medianos.
  5. Los árboles de decisión pueden sobreajustarse fácilmente. Sin embargo, podemos reducir el sobreajuste mediante la poda de árboles. 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.
  6. El tiempo para construir 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 están bastante equilibrados.
  7. Los árboles de decisión no requieren ningún procesamiento previo de datos. Pueden manejar sin problemas diferentes tipos de características, incluidas características numéricas y categóricas. Tampoco requieren la normalización de los datos.
  8. Los árboles de decisión tienen varios hiperparámetros clave que deben ajustarse, especialmente si usa la poda, como la profundidad máxima del árbol y qué medida de impureza usar para decidir cómo dividir los nodos.
  9. Los árboles de decisión son fáciles de entender e interpretar, y podemos visualizarlos fácilmente (a menos que el árbol sea muy grande).
  10. Los árboles de decisión no se pueden modificar fácilmente para tener en cuenta nuevas muestras de entrenamiento, ya que pequeños cambios en el conjunto de datos pueden causar grandes cambios en la topología del árbol.
  1. 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.
  2. Las redes neuronales no tienen suposiciones sobre el conjunto de datos, pero los datos deben normalizarse.
  3. Las redes neuronales se entrenan mediante descenso de gradiente, por lo que solo pueden encontrar una solución óptima local. Sin embargo, existen varias técnicas que se pueden utilizar para evitar quedarse atascado en los mínimos locales, como el impulso y las tasas de aprendizaje adaptativo.
  4. Las redes neuronales profundas requieren una gran cantidad de datos para entrenar, del orden de millones de puntos de muestra. En general, cuanto más grande es la red (cuantas más capas y neuronas tiene), más datos necesitamos para entrenarla.
  5. Las redes que son demasiado grandes pueden memorizar todas las muestras de entrenamiento y no generalizar bien. Para muchos problemas, puede comenzar con una red pequeña (p. ej., con solo una o dos capas ocultas) y aumentar gradualmente su tamaño hasta que comience a sobreajustar el conjunto de entrenamiento.
  6. 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.
  7. Las redes neuronales requieren que todas las características sean numéricas y normalizadas.
  8. Las redes neuronales tienen muchos hiperparámetros que deben ajustarse, como la cantidad de capas, la cantidad de neuronas en cada capa, qué función de activación usar, la tasa de aprendizaje, etc.
  9. 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 tiene solo una pequeña contribución a la predicción final.
  10. 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).

La siguiente tabla compara los tiempos de entrenamiento y predicción para algunos algoritmos populares ( n es el número de muestras de entrenamiento y p es el número de funciones).

Algoritmos más exitosos en las competencias de Kaggle

Según una encuesta realizada en 2016, los algoritmos más utilizados por los ganadores de la competencia Kaggle fueron los algoritmos de aumento de gradiente (XGBoost) y las redes neuronales (consulte este artículo ).

Entre los 29 ganadores de la competencia Kaggle en 2015, 8 de ellos usaron XGBoost, 9 usaron redes neuronales profundas y 11 usaron un conjunto de ambos.

XGBoost se usó principalmente en problemas relacionados con datos estructurados (p. ej., tablas relacionales), donde las redes neuronales tuvieron más éxito en el manejo de problemas no estructurados (p. ej., problemas relacionados con imágenes, voz o texto).

Sería interesante comprobar si esta sigue siendo la situación actual o si las tendencias han cambiado (¿alguien está preparado para el desafío?)

¡Gracias por leer!