Machine Learning para dummies

Sin duda Machine Learning es uno de los términos de moda hoy en día en el mundo de la tecnología. Los algoritmos de Machine Learning tratan de aprender de los datos, y cuantos más datos haya disponibles para aprender y más ricos y completos sea el algoritmo, funcionará mejor. En este post vamos a profundizar en el funcionamiento de algunos de los algoritmos más usados.

Lo ideal es que los datos de entrenamiento (In) los tengamos etiquetados (0n). Por ejemplo, imaginemos que queremos disponer de un algoritmo que detecte si un tumor es benigno o maligno en base a ciertas características del mismo.

Algunas de estas características podrían ser el tamaño del tumor, la densidad, el color u otros datos clínicos. Supongamos que tenemos un historial con las características de múltiples tumores que hemos estudiado en el pasado, esto sería (In), y ya sabemos si cada uno de estos tumores era maligno o benigno, esto sería (0n).

En primer lugar, lo que haríamos es proporcionar a nuestro algoritmo todos estos datos para “entrenarlo” y que aprenda de patrones, relaciones y circunstancias del pasado. De esta manera conseguiremos un modelo entrenado.

Una vez tengamos este modelo entrenado, podremos pedirle que haga una predicción al darle las características de un nuevo tumor (I), del cual no sabemos si es benigno o maligno. El modelo será capaz de darnos una predicción (P) en base al conocimiento que extrajo de los datos de entrenamiento.

Lo que define a un “buen” o “mal” algoritmo es la precisión con la que haga las predicciones en un dominio y contexto dado, y en base a unos datos de entrenamiento disponibles. Precisamente la principal labor de los científicos de datos es “tunear” y ajustar los algoritmos para adecuarlos a cada problema y, por otro lado, limpiar y preparar los datos para que el algoritmo puede aprender lo máximo posible de ellos.

A continuación vamos a comentar las características de algunos de los algoritmos más extendidos y cómo son capaces de aprender de los datos.

Regresión lineal

La regresión lineal es uno de los algoritmos clásicos más extendidos y fáciles de entender. Lo que se pretende hacer es modelar la relación que existe entre una variable dependiente “y” y una o más variables independientes “x”.

Intuitivamente, podemos imaginar que se trata de hallar la línea roja que mejor “encaje” con el conjunto de puntos azules dados. Para esto podremos usar métodos como el de los “mínimos cuadrados” que busca minimizar la distancia vertical de todos los puntos azules a la línea roja.

Una vez obtenida esta “línea roja”, seremos capaces de hacer predicciones hipotéticas sobre cuál sería el valor de “y” dado “x”. Es muy posible que cometamos siempre cierto error en la predicción.

La regresión lineal es un método guiado, en el sentido de que necesitamos un conjunto inicial suficientemente representativo de “puntos azules” para “aprender” de ellos y poder hacer buenas predicciones.

Algunas aplicaciones interesantes de la regresión lineal son el estudio de la evolución de precios o de mercados. Un ejemplo clásico es la predicción del precio de la vivienda donde las variables “x” serían las características de una vivienda: tamaño, número de habitaciones, altura, materiales… y la “y” sería el precio de esa vivienda. Si pudiéramos analizar las características y el precio de un conjunto suficiente de viviendas, podríamos predecir cuál sería el precio de una nueva vivienda en base a sus características.

Regresión logística

La regresión logística tiene ciertas similitudes en su planteamiento con la regresión lineal, pero está orientada a resolver problemas de clasificación y no de predicción.

La idea es ser capaces de asignar una categoría u otra dadas unas características de entrada. Para ello se apoya en una función logística como la función “sigmoide”, que toma como entrada cualquier número real y devuelve un número real comprendido entre 0 y 1 y que podemos interpretar como una probabilidad.

Para aplicar regresión logística también necesitaremos un juego de datos previamente clasificados para entrenar nuestro algoritmo.

La regresión logística tiene múltiples aplicaciones, como por ejemplo la valoración de riesgos, la clasificación de tumores o la detección de SPAM.

Clustering K-means

K-means es un algoritmo iterativo no guiado, capaz de encontrar clusters o relaciones entre los datos que tengamos sin necesidad de entrenarlo previamente.

La idea que hay detrás de este algoritmo es relativamente sencilla:

  1. En primer lugar, le indicaremos cuántos clusters queremos identificar e inicializaremos, a través de algún mecanismo aleatorio, un punto o centroide por cada cluster en nuestro espacio de datos.

  2. Para cada dato de entrada veremos cuál es el centroide más cercano en distancia y lo asignaremos a ese cluster.

  3. Cogeremos todos los puntos asignados a cada cluster y calcularemos cuál sería su punto medio en el espacio.

  4. Moveremos los correspondientes centroides a los puntos medios calculados en el paso anterior para cada cluster.

  5. Repetiremos iterativamente desde el paso 2 hasta converger.

De esta manera conseguiremos que cada punto del espacio o dato de entrada esté asignado a un cluster y habremos conseguido nuestro objetivo.

Su uso está muy extendido y es usado en muchos ámbitos, por ejemplo en motores de búsqueda para ver las similitudes que hay entre unos elementos y otros. Sin embargo, este algoritmo es complejo computacionalmente hablando y puede requerir mucha capacidad de cómputo.

SVM

SVM son las siglas de Support Vector Machine. Este algoritmo supervisado se utiliza generalmente para solucionar problemas de clasificación.

La idea del algoritmo es ser capaces de encontrar, con los datos de entrenamiento, un hiperplano que maximiza la distancia a las diferentes clases, lo que es conocido como el “margen máximo”.

Una vez hallado este hiperplano podemos usarlo para clasificar nuevos puntos.

SVM tiene múltiples aplicaciones, por ejemplo para reconocimiento de imágenes, clasificación de texto o aplicaciones en el área de la biotecnología.

Random forest

Random Forest es uno de los algoritmos más potentes y usados hoy en día. Consiste en una combinación de múltiples árboles de decisión que juntos conforman un “bosque”.

Un árbol de decisión es una metáfora de un árbol real, ya que, gráficamente, las partes de un árbol de decisión tienen cierto parecido a las ramas de un árbol. Dado un valor de entrada lo clasificaremos diciendo que va a una rama u otra en base a una condición. Los árboles de decisión pueden ser más o menos profundos y complejos y la dificultad está en definirlos de forma correcta para que nos clasifiquen correctamente los datos de nuestro problema.

Random Forest hace uso de un conjunto de árboles de decisión y a cada uno le asigna una porción de los datos de ejemplo o entrenamiento. El resultado final será la combinación del criterio de todos los árboles que formen el bosque. Este enfoque es ideal para repartir y paralelizar el trabajo de computación, lo que permite que podamos ejecutarlo de forma muy rápida usando varios procesadores.

Este algoritmo tiene muchas aplicaciones, por ejemplo en el mundo de la automoción para la predicción de roturas de piezas mecánicas, o en el mundo de la salud para la clasificación de enfermedades de pacientes. Este algoritmo también es usado en herramientas de reconocimiento de voz, imágenes y texto.

Conclusión

Estos son algunos de los algoritmos más conocidos, pero existen muchos más. Por otro lado, las opciones de configuración y ajustes que podemos hacer en cada algoritmo son muy grandes, esto ha dado lugar a nuevos perfiles especializados en analítica de datos avanzada y Machine Learning.

En resumen, podemos decir que Machine Learning es un enorme campo dentro de la Inteligencia Artificial y, sin duda, el que más resultados y aplicaciones está teniendo hoy en día.

Acceder a este conocimiento es más fácil que nunca y las posibilidades tecnológicas nos permiten disponer de gran capacidad de cómputo y almacenamiento de datos. Esto nos permite que la aplicación de estos algoritmos sea mucho más sencilla en cualquier negocio o sector, desde startups a grandes compañías.

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en Big Data, AI, Data Science, Machine Learning, Deep Learning, HPC, IoT, Cloud, NoSQL, NewSQL, Python y Agile. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software dentro del área de AI & Big Data, ayudando a diferentes compañías a llevar a cabo sus procesos de transformación digital gracias al cambio cultural y a la implantación de la tecnología más innovadora.

Ver toda la actividad de Manuel Zaforas

4 comentarios

  1. marcos dice:

    Un artículo muy interesante.

    Manuel, por favor, podrías añadir alguna pista bibliográfica para comenzar con la materia.

    Gracias de antemano.

  2. Marcos dice:

    Gracias! : )

Escribe un comentario