Principales Algoritmos usados en Machine Learning
En esta etapa de estudio sobre el Aprendizaje Automático me he topado con diversos algoritmos que voy reutilizando para la resolución de problemas y que se repiten con mayor frecuencia. Realizaré un listado con una breve descripción de los principales algoritmos utilizados en Machine Learning. Además cada uno contará con enlaces a ejemplos de desarrollo en código Python. Con el tiempo, agregaré mis propios ejemplos en español. También te recomiendo leer mi artículo sobre Deep Learning.
Empecemos!
Algoritmos de Regresión
Los algoritmos de Regresión modelan la relación entre distintas variables (features) utilizando una medida de error que se intentará minimizar en un proceso iterativo para poder realizar predicciones «lo más acertadas posible». Se utilizan mucho en el análisis estadístico. El ejemplo clásico es la predicción de precios de Inmuebles a partir de sus características: cantidad de ambientes del piso, barrio, distancia al centro, metros cuadrados del piso, etc.
Los Algoritmos más usados de Regresión son:
Los Algoritmos más usados de Regresión son:
- Regresión Lineal – Nuevo! Ejercicio Predicción en Python
- Regresión Logística – Ejemplo en código Python
Algoritmos basados en Instancia
Son Modelos de Aprendizaje para problemas de decisión con instancias o ejemplos (muestras) de datos de entrenamiento que son importantes o requeridos por el modelo.
También son llamados Algoritmos «Ganador se lleva todo» y aprendizaje basado-en-memoria en el que se crea un modelo a partir de una base de datos y se agregan nuevos datos comparando su similitud con las muestras ya existentes para encontrar «la mejor pareja» y hacer la predicción.
Los Algoritmos basados en instancia más usados son:
También son llamados Algoritmos «Ganador se lleva todo» y aprendizaje basado-en-memoria en el que se crea un modelo a partir de una base de datos y se agregan nuevos datos comparando su similitud con las muestras ya existentes para encontrar «la mejor pareja» y hacer la predicción.
Los Algoritmos basados en instancia más usados son:
- k-Nearest Neighbor (kNN) – Nuevo! Ejemplo en Python sklearn en Español
- Self-Organizing Map
Algoritmos de Arbol de Decisión
Modelan la toma de Decisión basado en los valores actuales (reales) de los atributos que tienen nuestros datos. Se utilizan sobre todo para clasificación de información, bifurcando y modelando los posibles caminos tomados y su probabilidad de ocurrencia para mejorar su precisión. Una vez armados, los arboles de decisión ejecutan muy rápido para obtener resultados.
Los Algoritmos de árbol de decisión más usados son:
Los Algoritmos de árbol de decisión más usados son:
- Arboles de Clasificación y Regresión (CART) – Ejemplo en Español con Python (libs: Pandas y Numpy)
- Decisión de Arbol condicional
- Random Forest – Teoría y Ejercicio Python
Algoritmos Bayesianos
Son algoritmos que utilizan explícitamente el Teorema de Bayes de probabilidad para problemas de Clasificación y Regresión.
Los más utilizados son:
Los más utilizados son:
- Naive Bayes
- Gaussian Naive Bayes – Ejemplo en Python
- Multinomial Naive Bayes
- Bayesian Network
Algoritmos de Clustering (agrupación)
Se utilizan para agrupar datos existentes de los que desconocemos sus características en común o queremos descubrirlas.
Estos métodos intentan crear «puntos centrales» y jerarquías para diferenciar grupos y descubrir características comunes por cercanía.
Los más utilizados son:
Estos métodos intentan crear «puntos centrales» y jerarquías para diferenciar grupos y descubrir características comunes por cercanía.
Los más utilizados son:
- K-Means – Ejemplo Python paso a paso
- K-Medians
- Hierarchical Clustering
Algoritmos de Redes Neuronales
Son algoritmos y estructuras inspirados en las funciones biológicas de las redes neuronales.
Se suelen utilizar para problemas de Clasificación y Regresión pero realmente tienen un gran potencial para resolver multitud de problemáticas. Son muy buenas para detectar patrones. Las Redes Neuronales Artificiales requieren mucha capacidad de procesamiento y memoria y estuvieron muy limitadas por la tecnología del pasado hasta estos últimos años en los que resurgieron con mucha fuerza dando lugar al Aprendizaje Profundo (se detalla más adelante).
Las redes neuronales básicas y clásicas son:
Se suelen utilizar para problemas de Clasificación y Regresión pero realmente tienen un gran potencial para resolver multitud de problemáticas. Son muy buenas para detectar patrones. Las Redes Neuronales Artificiales requieren mucha capacidad de procesamiento y memoria y estuvieron muy limitadas por la tecnología del pasado hasta estos últimos años en los que resurgieron con mucha fuerza dando lugar al Aprendizaje Profundo (se detalla más adelante).
Las redes neuronales básicas y clásicas son:
- Compuerta XOR – Ejemplo sencillo Python en Español
- Perceptron – Historia de las Redes Neuronales
- Back-Propagation – Ejemplo Python sin librerias
- Hopfield Network
- MLP: Multi Layered Perceptron – Ejemplo pronóstico de series temporales
Algoritmos de Aprendizaje Profundo
Son la evolución de las Redes Neuronales Artificiales que aprovechan el abaratamiento de la tecnología y la mayor capacidad de ejecución, memoria y disco para explotar gran cantidad de datos en enormes redes neuronales interconectarlas en diversas capas que pueden ejecutar en paralelo para realizar cálculos.
Comprende mejor Deep Learning con esta guía rápida que escribí.
Los algoritmos más populares de Deep Learning son:
Comprende mejor Deep Learning con esta guía rápida que escribí.
Los algoritmos más populares de Deep Learning son:
- Convolutional Neural Networks – Nuevo: La Teoría: ¿Que es una CNN? – Ejemplo en Python con Keras
- Long Short Term Memory Neural Networks – Breve Historia de las redes neuronales
Algoritmos de Reducción de Dimensión
Buscan explotar la estructura existente de manera no supervisada para simplificar los datos y reducirlos o comprimirlos.
Son útiles para visualizar datos o para simplificar el conjunto de variables que luego pueda usar un algoritmo supervisado.
Los más utilizados son:
Son útiles para visualizar datos o para simplificar el conjunto de variables que luego pueda usar un algoritmo supervisado.
Los más utilizados son:
- Principal Component Analysis (PCA) – Ejemplo nuevo artículo!
- t-SNE (próximamente artículo)
Procesamiento del Lenguaje Natural (NLP)
El Natural Language Processing es una mezcla entre DataScience, Machine Learning y Lingüística. Tiene como objetivo comprender el lenguaje humano. Tanto en textos como en discurso/voz. Desde analizar sintáctica ó gramáticamente miles contenidos, clasificar automáticamente en temas, los chatbots y hasta generar poesía imitando a Shakespeare. También es común utilizarlo para el Análisis de Sentimientos en redes sociales, (por ejemplo con respecto a un político) y la traducción automática entre idiomas. Asistentes como Siri, Cortana y la posibilidad de preguntar y obtener respuestas, o hasta sacar entradas de cine.
- Puedes conocer la teoría del NLP en mi nuevo artículo
- ó pasar a un ejercicio en Python analizando textos en español
Otros Algoritmos
Otros algoritmos no desarrollados en este artículo:
- Algoritmos de Aprendizaje por Reglas de Asociación
- Algoritmos de Conjunto
- Computer Vision
- Sistemas de Recomendación
Recordemos que todos estos algoritmos son vulnerables a problemas de Underfitting y Overfitting que deberemos tener en cuenta y resolver.