Cómo saber qué algoritmo de aprendizaje automático es apropiado para un problema

Crédito de la foto: biblioteca dlib C ++ en http://dlib.net/ml_guide.svg

La lista exhaustiva de métodos de aprendizaje automático es demasiado grande para mencionarla. Las cosas importantes a tener en cuenta al comienzo del diseño de una solución a cualquier problema (no voy a decir, si planea hacer alguna regresión, no considere algoritmos de clasificación y cosas tan obvias):

(1) Los datos son lo primero … no el algoritmo: además del ‘teorema de no almuerzo gratis’, el enfoque es realmente impulsado por los datos, es decir, ningún método de ML realmente va a resolver ‘completamente’ cualquier problema serio del mundo real, por lo que la idea es diseñar un enfoque que resuelva la mayoría de los puntos importantes y proporcione la inferencia más útil sobre los datos para que las mejores elecciones se realicen con mayor frecuencia.

(2) compensación: bastante obvio, cualquier enfoque es una compensación entre la precisión y los recursos de procesamiento. Con recursos infinitos de tiempo y potencia computacional, puede resolver completamente cualquier problema y es completamente inútil. (Nota personal: ¿hay algún problema que no se pueda resolver con recursos infinitos, algo más allá de NP difícil ?!)

(3) Ruido: siempre ahí, siempre limitativo

(4) Tuberías y cuellos de botella: las implementaciones de aprendizaje automático suelen ser una tubería de múltiples módulos que se disputan los datos. En función de los datos y los objetivos de aprendizaje deseados, seleccione algoritmos para cada uno de estos módulos que funcionen bien juntos y entre sí.

(5) Escalado: construya un prototipo rápidamente y pruebe el subconjunto de datos y si las cosas parecen prometedoras, siga adelante, de lo contrario intente otra cosa. La razón de esto es que los datos casi nunca son lo que crees que son. Los descriptores de características en realidad no proporcionan lo que están diseñados para proporcionar, y en consecuencia un algoritmo de aprendizaje automático dado, que parece apropiado en teoría, funcionará muy mal en los datos reales. Es una buena idea probar diferentes algoritmos de ML relacionados y ver cómo funcionan con escalabilidad y otras métricas como precisión, robustez, costo computacional, estabilidad, etc. y luego avanzar con el algoritmo que mejor se adapte a los datos.

No existe la mejor técnica de aprendizaje automático. El aprendizaje de una técnica de aprendizaje automático depende de los datos. Uno tiene que aplicar una variedad de métodos y elegir la mejor técnica. Esto se explica a través del ‘ Teorema de no almuerzo gratis ‘ que dice que no hay un algoritmo de propósito general para la página de aprendizaje automático en nasa.gov. Sin embargo, se debe dar importancia a las técnicas de menor complejidad. y esto está de acuerdo con el principio de la navaja de Occam Página en ciml.info

Algunas de las mejores y más populares técnicas que se pueden probar son:

  • K vecino más cercano
  • Análisis discriminante lineal
  • Bayes ingenuos
  • Máquinas de vectores soporte
  • Red neuronal artificial
  • Técnicas de conjunto

Intente pensar en los algoritmos como su kit de herramientas, no como un marco. El uso de cada uno es específico del problema.

Un truco que usan muchos entrenadores de máquinas es recolectar el conjunto de datos, usar un algoritmo y obtener resultados. Luego publican los resultados como una solución a un problema en el que pueden haber pensado o no haberse dado cuenta antes de tener el conjunto de datos en la mano.

Pero, de nuevo, esta es una opinión personal y abierta a recibir críticas. 🙂