Que algoritmo de Machine Learning elegir para cada problema?


Dado que existen muchos algoritmos, como hemos venido contando ultimamente , os vamos a dar unas pistas para ayudaros: 
1. Cuando usar Machine Learning
Lo primero que tenemos que tener en cuenta es que, aunque hablar y usar Machine Learning es una tendencia y es 'cool', debemos ser conscientes de que sea de utilidad. Hemos visto que los Data Scientist están de moda pero muchos abandonan sus trabajos , por no adecuar las expectativas
Os puede ser útil esta ' Breve Historia del Machine Learning ', como punto de arranque
Algunos ejemplos útiles serían los de detectar patrones entre múltiples datos o identificar excepciones o anomalías dificiles de detectar. Ej) Reconocimiento visual de rostros 

Debo usar 'machine learning' para crear un Data Mart de ventas mensuales? probablemente no
También hay que tener en cuenta la diferencia entre los especialistas en Business Intelligence, Data Scientist y Data Engineer
Son muchos los lenguajes de programación que pueden solventar nuestros problemas y necesidades, sin recurrir al Machine Learning (que trata la el proceso de programación de forma diferente)

2. Definir el problema
Se trataría de responder a las siguientes preguntas:
Que quiero hacer?
- Si lo que necesitas es agrupar o establecer categorías o grupos, puedes utilizar algoritmos de clasificación
- Si quieres predecir un importe, cantidad, ventas, etc... deberás usar algoritmos de regresión
- Si quieres detectar datos incongruentes, incorrectos, fallos, etc... usa detección de anomalías
- Si lo que tienes es un montón de datos, aparentemente inconexos y sin ninguna relación entre ellos, pues utilizar clustering, de forma que se establezcan estructuras y grupos con patrones comunes



Que información tengo disponible?
Cuantos más datos tengas mejor
Cuanto más serie histórica mejor
Cuantos más atributos, etiquetas, etc... mejor
Cuantás más clases y características de los datos... mejor
Cuales son las limitaciones?
Hay que tener suficiente capacidad de almacenamiento
Hay que tener suficiente velocidad de procesamiento
Hay que tener paciencia y tiempo para entrenar los algoritmos
Los resultados nunca son concluyentes o completos
3. Conocer un poco de teoría de Machine Learning
Sí, hay que 'echar codos'y estudiar. Y no poco, si no bastante. Es necesario conocer matemáticas, estadística y teoría sobre Machine Learning


Glosario de los principales términos en Machine Learning
Curso de Machine Learning por Google
4. Cuales son los algoritmos de Machine Learning más populares
Cada vez hay más. No os agobiéis. Lo mismo, que no conseguiréis resultados totalmente exactos, tampoco podrás abarcar todos los algoritmos

Curso de Machine Learning para software engineers
Los más conocidos son.
- Regresión linear
- Arboles de decisión
- Random Forest
- Boosting
- Support Vector Machine
- Redes neuronales
- K-means
- Naive Bayes
Echa un vistazo a ' Los 30 mejores proyectos de Machine Learning Open Source '
5. Elegir que algoritmo usar
Esto siempre es complicado y depende de muchos factores, como explicábamos arriba. Esta tabla puede ayudaros:

Aquí tenéis unas pequeñas chuletas de muchos de los algoritmos más habituales:



6. Consejos prácticos
- Podéis usar herramientas tanto especificas de Machine Learning (R, Python, Weka, Matlab, Spark, SAS...) como otras que incluyen para su ingesta o explotación visual (como Pentaho o PowerBI , Shiny )

- Lo primero son los datos. Revisad muy bien antes de comenzar que los datos tienen la suficiente calidad y amplitud para ser de utilidad (os evitaréis mucho trabajo en vano)

- Podéis contar con especialistas o formaros con gente como el equipo de  Stratebi , que nos han ayudado a crear este post. Obviamente, hay muchos buenos especialistas con los que contar

- Haced iteraciones. No pretendáis llegar a la meta en un solo intento. En Machine Learning hay que ir aprendiendo poco a poco


En este  post  tenéis información más detallada, en la que nos hemos basado