machine learning

Introducción al Machine Learning

¿Qué es Machine Learning?

Existen varias definiciones de Machine Learning, conocido en español como Aprendizaje Automático.

Machine Learning es la ciencia (y arte) de programar computadoras de tal manera que puedan aprender de los datos.

Hands On Machine Learning with Sckit-Learn, Keras and TensorFlow, Aurélien Géron, 2nd Edition, 2019

Machine Learning es el campo de estudio que da a las computadoras la habilidad de aprender sin haber sido programadas explícitamente.

Arthur Samuel, 1959

Machine Learning depende de una colección de ejemplos de algún fenómeno, a esta colección de datos se le conoce comúnmente como dataset.

Como menciona Andriy Burkov en su libro The Hundred-Page Machine Learning Book (2019) para solucionar un problema práctico usando Machine Learning tenemos que recolectar un dataset y construir algorítmicamente un modelo estadístico basado en ese dataset.

De esta forma podemos tener una colección de correos electrónicos marcados como spam y no-spam, usándola para generar un modelo que podría predecir si un email, que el modelo nunca ha visto, es spam o no.

Machine Learning se utiliza para reconocimiento de voz, reconocimiento facial, clasificación de imágenes, detectar si una imagen contiene un perro o un gato, incluso generar imágenes de personas o gatos que nunca han existido.

Existen muchos algoritmos de Machine Learning y están clasificados en tipos dependiendo el problema que quieras solucionar, el dataset recolectado y el tipo de entrenamiento que se requiera.

Tipos de Aprendizaje

Los sistemas de Machine Learning pueden ser clasificados de acuerdo al tipo de supervisión que tienen durante el entrenamiento. Existen principalmente cuatro tipos: aprendizaje supervisado, aprendizaje no-supervisado, aprendizaje semi-supervisado y aprendizaje reforzado. En este artículo me enfocaré solo en dos de ellos: supervisado y no-supervisado.

Aprendizaje Supervisado

En aprendizaje supervisado (supervised learning), el dataset con el que entrenaremos un modelo es una colección de ejemplos etiquetados, cada ejemplo en el dataset debe de contener una solución llamada label, etiqueta o clase. En el ejemplo de la clasificación de correos como spam y no-spam, en nuestra colección de ejemplos de correos, cada ejemplo necesita tener una etiqueta que diga si es spam o no.

Durante el entrenamiento de estos algoritmos, alimentamos nuestro modelo con un ejemplo, esto es una fila de nuestro dataset y el modelo trata de predecir el valor, es o no spam, este valor predicho es entonces comparado con el valor real (etiqueta) y basado en la diferencia que hay entre valor real y valor predicho el modelo ajusta sus parámetros para poder predecir mejor el resultado real.

El problema de spam y no-spam es una tarea de clasificación, es entrenado con muchos ejemplos con su clase (spam o no-spam) y debe aprender como clasificar nuevos correos.

Otra tarea típica del aprendizaje supervisado es predecir un valor numérico, por ejemplo el precio de un un carro, dado un grupo de características (features) como kilometraje, marca, etc. Esto se le conoce como una tarea de regresión.

Algunos algoritmos usados en aprendizaje supervisado son:

  • k-Nearest Neighboors
  • Regresión Lineal
  • Regresión Logística
  • Support Vector Machines (SVM)
  • Árboles de Decisión
  • Redes Neuronales

Aprendizaje No-Supervisado

En aprendizaje no-supervisado (unsupervised learning), el dataset es una colección de datos sin etiquetas o clases.

Los tipos de problemas que se pueden resolver usando aprendizaje no-supervisado son: clustering, detección de anomalías, visualización y reducción de dimensionalidad. Dependiendo del tipo de problema es la forma en nuestro modelo aprenderá de los datos.

Algunos algoritmos usados en esta categoría son:

  • Clustering

    • K-Means
    • DBSCAN
  • Detección de Anomalías

    • SVM de una clase (one-class SVM)
  • Visualización y reducción de dimensionalidad:

    • Principal Component Analysis (PCA)
    • Kernel PCA

¿Qué es el Entrenamiento?

El entrenamiento (trainning) es un proceso por el cual nuestro modelo “aprende” ciertos parámetros basado en datos para después poder predecir información en datos que no ha visto anteriormente.

A grandes rasgos, por ejemplo en un entrenamiento supervisado, por cada entrada en nuestro dataset tratamos de predecir la etiqueta usando una función de hipótesis. Digamos que la etiqueta es 1 ó 0, spam o no-spam, la imagen contiene un gato o no, etc. La función de hipótesis contiene unos parámetros que necesitamos aprender.

Tratamos de predecir la etiqueta de un ejemplo de nuestro dataset, luego comparamos la diferencia entre el valor predicho y el valor real de la etiqueta, esta diferencia se le conoce como función costo, dependiendo el problema es la función costo que vamos a utilizar, básicamente es una manera de determinar que tan diferente es el valor real del valor predicho. Esta diferencia también le podemos llamar error.

El objetivo del entrenamiento es minimizar ese error lo más posible acercándolo a cero. Esto significa que la diferencia entre el valor predicho y el valor real es casi nula. Esto se logra modificando los parámetros de la función de hipótesis la proporción de modificación de los parámetros va a depender de que tan grande es el error. Esto se logra de diversas maneras, la base de muchas de ellas es lo que se conoce como gradient descent.

A través del gradient descent podemos determinar en que proporción se deben modificar cada parámetro de la función de hipótesis para minimizar la función de costo.

Realizamos esto por cada ejemplo en el dataset y recorremos todo el dataset varias veces, estas iteraciones se les conoce como epochs. Esta operación termina cuando el error se minimiza a un valor lo más cercano a cero posible.

Conclusión

Esto solo es una breve introducción acerca de algunos términos generales en Machine Learning.

Vimos a que se le llama Machine Learning así como se categoriza basado en su tipo de entrenamiento.

También se describió de manera superficial como funciona el entrenamiento de algoritmo de aprendizaje supervisado.

Espero les haya gustado.