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

Algoritmos de Regresión
Algoritmos de Regresión, Logístico o Lineal. Nos ayudan a clasificar o predecir valores. Se intentará compensar la mejor respuesta a partir del menor error.

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:

Algoritmos basados en Instancia

Algoritmos Basados en Instancia.
Instance-Based Algorithms.

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:

Algoritmos de Arbol de Decisión

Decision Tree Algorithm
Arbol de Decisión. Buscará el mejor árbol, balanceando la posibilidad de ocurrencia y su importancia en cada rama y hojas para clasificar un resultado

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:

Algoritmos Bayesianos

Bayesian Algorithm
Algoritmos Bayesianos aprovechan los teoremas de probabilidad en Aprendizaje Automático

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:

  • Naive Bayes
  • Gaussian Naive Bayes – Ejemplo en Python
  • Multinomial Naive Bayes
  • Bayesian Network

Algoritmos de Clustering (agrupación)

Clustering
Algoritmos de Agrupación son de Aprendizaje no supervisado y encontrarán relaciones entre los datos que seguramente no contemplamos a simple vista.

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:

Algoritmos de Redes Neuronales

Neural Network diagram
Las Redes Neuronales imitan el comportamiento de activación biológico y la interconexión entre neuronas para buscar soluciones no lineales a problemas complejos

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:

Algoritmos de Aprendizaje Profundo

Deep Learning
Las redes convolucionales hacen que una red neuronal de aprendizaje profundo tenga la capacidad de reconocer animales, humanos y objetos dentro de imágenes

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:

Algoritmos de Reducción de Dimensión

CPA
Reducción de dimensión nos permite graficar o simplificar modelos muy complejos que en su condición inicial contenían demasiadas características.

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:

Otros Algoritmos

Otros algoritmos no desarrollados en este artículo:

  • Algoritmos de Aprendizaje por Reglas de Asociación
  • Algoritmos de Conjunto
  • Computer Vision
  • Procesamiento del Lenguaje Natural (NPL)
  • Sistemas de Recomendación

Recordemos que todos estos algoritmos son vulnerables a problemas de Underfitting y Overfitting que deberemos tener en cuenta y resolver.

Aprende conmigo

Suscribe al blog y te llegará el aviso de mi nuevo post semanal sobre Machine Learning. Seamos compañeros en este camino 😉

Por último quería proponer que me comenten ustedes ¿cuales son los algoritmos que más utilizan? ¿Cuál crees que falta en esta lista? Espero poder actualizar este artículo en el futuro e ir agregando más información para crear tu propia máquina.

GuardarGuardar

GuardarGuardar

GuardarGuardar

GuardarGuardar

7 Replies to “Principales Algoritmos usados en Machine Learning”

    1. También me gustó tu Página con artículos interesantes! Espero nos mantengamos en contacto y comentando sobre el mundo de la Tecnología en el que se vienen muchos avances.

      1. ¡Buenas Juan!

        Ya le he echado un vistazo.

        Tengo una duda que puede que tu puedas resolverme.

        Yo quiero usar una LM que me relacione conceptos.

        Dado un concepto que puede ser una palabra, un número, un lugar o todo aquéllo que tenga entidad de concepto, me devuelva sus relaciones de conceptos en un graph.

        ¿Se te ocurre qué LM podría ayudarme a afrontar este proyecto?

        Ahora mismo, estoy usando deeplearning4j concretamente Word2Vec.

        ¡Gracias por la ayuda!

        David

        1. Creo que no sé resolver ahora mismo esa duda. Voy a intentar investigar el tema para ayudarte. También lo voy a comentar en un foro de IA en el que recuerdo haber leído a otros participantes hablar sobre Word2Vec.
          En cuanto tenga algo, te escribo!

          1. ¡Perfecto Juan!
            También le he preguntado la duda a un amigo y me ha dicho que investigue los diferentes sistemas de aprendizaje DL para saber más por dónde piso.
            Mientras espero tu respuesta, seguiré mirando alternativas.
            ¡Muchas gracias!
            Para posibles colaboraciones, tienes cuenta de github? Te defiendes con Java? Te defiendes en Angular? Esas son las tecnologías que uso en mi proyecto actual de LM.
            Verás los proyectos en mi cuenta de github: https://github.com/davidmartinezros
            Están todos públicos y puedes verlos y descargarlos.
            Cualquier duda, estoy por aquí…
            ¡Un abrazo amigo!

  1. muy claro , muy bueno , gracias . Soy bastante neófito en el tema y el ingles es una complicación . Deseo que sigas subiendo más , realmente lo leo con mucha ligereza y googleando más información por la guia que dejas .
    Espero los que sigan!!!
    Saludos!

    1. Gracias m.a.xi por tu comentario! Espero escribir un nuevo artículo en español pronto, si hay alguna temática que te interesa me dices. Mis próximos artículos serán sobre k-nearest neighbor, deep learning con keras y árbol de decisión. Saludos

Leave a Reply