El Machine Learning, como rama de la inteligencia artificial, es un campo de estudio que brinda a las máquinas la habilidad de aprender sin haber sido explícitamente programadas para ello.

Después de analizar en un post anterior qué tipos de aprendizaje se presentan en Machine Learning en función de la respuesta, es interesante ahondar en el proceso de entrenamiento y obtención de modelos capaces de hacer predicciones. En este sentido, Machine Learning explora el estudio y construcción de algoritmos que puedan aprender y detectar patrones a partir de un conjunto de datos dado, denominado conjunto de entrenamiento. En términos de programación, un algoritmo se define como una secuencia de pasos lógicos que permiten solucionar un determinado problema.

En el campo del Machine Learning, el hecho de realizar un proceso de entrenamiento empleando algoritmos permite obtener modelos capaces de hacer predicciones a partir de nuevos datos. Sin embargo, el algoritmo que se empleará para resolver un problema concreto va a depender del tipo de problema que estemos estudiando.

 

¿Cómo se clasifican los algoritmos de entrenamiento en Machine Learning?

A lo largo de los años se han desarrollado un gran número de algoritmos para obtener modelos que permitan realizar predicciones a partir de unos datos iniciales. Los algoritmos más importantes se pueden clasificar en función del tipo de Aprendizaje: Supervisado y no Supervisado.

 

Aprendizaje Supervisado

Regresión Lineal y Regresión Logística

La Regresión Lineal es un algoritmo de Machine Learning empleado para obtener un resultado numérico. Este algoritmo intenta establecer una relación lineal entre variables independientes y una variable de salida o variable dependiente. Usualmente se utiliza el método de mínimos cuadrados para obtener esta relación. Un ejemplo de aplicación de la Regresión Lineal, que se muestra en la Figura 1, sería la predicción de la demanda de un producto en un determinado momento a partir de un conjunto de datos de demanda registrados con anterioridad.

Figura 1: Regresión Lineal

 

 

Por su parte, la Regresión Logística no se utiliza para variables numéricas, sino que se emplea para predecir el resultado de una variable categórica en función de variables independientes. Debido a su sencillez y rápida aplicación, este algoritmo suele utilizarse con frecuencia para problemas de Clasificación Binaria y Clasificación Multiclase con fronteras lineales. En particular, la forma de la curva que se emplea, y que se muestra en la Figura 2, constituye un ajuste natural para dividir datos en grupos.

Figura 2: Regresión Logística

 

 

Un ejemplo de aplicación de la Regresión Logística puede ser el predecir si un cliente va a renunciar a un determinado servicio de una compañía telefónica (división en dos clases: renuncia o no renuncia). Para ello, es necesario conocer el comportamiento de dicho cliente (número de llamadas telefónicas, duración de dichas llamadas…). La detección de este tipo de clientes permite ofrecerles una atención personalizada a fin de que no renuncien a ese servicio.

 

Decision Tree o Árbol de Decisión

Este algoritmo hace una correspondencia entre las características de una instancia (elemento del conjunto de datos) y conclusiones sobre el valor objetivo de dicha instancia.

Los modelos de Árbol de Decisión donde la variable de destino puede tomar un conjunto finito de valores se denominan árboles de clasificación. En estas estructuras de árbol, como la que se muestra en la Figura 3, las hojas representan etiquetas de clase y las ramas representan el conjunto de características que conducen a esas etiquetas de clase.

Figura 3: Representación gráfica de un Árbol de Decisión o Decision Tree

 

 

Un Árbol de Decisión puede emplearse, por ejemplo, para obtener un modelo que permita realizar diagnósticos médicos. Más concretamente, en función de las características de un paciente (edad, peso, nivel de glucosa en sangre…) se puede predecir si es diabético o no con un determinado nivel de confianza.

 

Boosted Decision Tree y Decision Forest

El algoritmo de Boosted Decision Tree, cuyo funcionamiento se ilustra esquemáticamente en la Figura 4, está basado en un conjunto de Árboles de Decisión en el que el segundo árbol corrige los errores del primero, el tercero los del primero y el segundo y así en adelante. La predicción se basa en el resultado de todo el conjunto de árboles. Con la configuración adecuada, es uno de los métodos que, con una menor complejidad, proporciona mejores resultados en una gran variedad de problemas de Machine Learning.

Figura 4: Ilustración del funcionamiento de un Boosted Decision Tree

 

 

Por otra parte, un Decision Forest funciona construyendo múltiples Árboles de Decisión y “votando” por la clase de salida o output más popular. Las probabilidades de cada etiqueta se obtienen a partir de los resultados de los diferentes árboles. Los árboles que proporcionan una predicción con un nivel de confianza más elevado, tendrán más peso en la decisión final. Por tanto, a diferencia del Boosted Decision Tree, en el que los resultados son aditivos, en un Decision Forest los resultados son promediados.

Los algoritmos de Boosted Decision Tree y Decision Forest se utilizan para estudiar el mismo tipo de problemas que se analizan con los Árboles de Decisión.

 

Neural Network y Averaged Perceptron

Una Red Neuronal o Neural Network está compuesta por un conjunto de capas interconectadasen las que los valores de entrada o inputs dan lugar a los valores de salida o outputs a través de una serie de nodos con sus pesos correspondientes. Dichos pesos se obtienen durante el proceso de entrenamiento de la red. Entre las capas de input y output puede haber una o varias capas ocultas o hidden, como se muestra en la Figura 5.

Las fronteras entre clases que puede definir una Red Neuronal pueden ser complejas e irregulares.

Figura 5: Neural Network

 

 

El Averaged Perceptron es una versión simplificada de la Neural Network que clasifica los inputs en los diferentes outputs posibles basándose en una función lineal. La estructura de la red permite una clasificación con fronteras lineales.

Las Redes Neuronales pueden utilizarse por ejemplo en problemas de reconocimiento de imágenes. En un sistema de alarmas contra robo, la detección de unos determinados patrones de forma o color en una imagen tomada por una cámara de seguridad pueden determinar la necesidad de dar la alarma o no.

 

Support Vector Machine y Locally-Deep Support Vector Machine

Para efectuar la Clasificación mediante el algoritmo de Support Vector Machine (SVM), los datos se representan como puntos del espacio y se sitúan de manera que los que pertenecen a categorías diferentes están lo más separados posible, con una región de separación intermedia. Esta técnica se ilustra en la Figura 6, donde se aprecia que la línea L1 no separa las dos clases, la línea L2 las separa pero no garantiza la máxima separación entre categorías y la línea L3 sería la obtenida mediante SVM. Los nuevos datos son clasificados en el espacio en una categoría u otra dependiendo de en qué lado de la región de separación se sitúan.

Figura 6: Ilustración del funcionamiento de un Support Vector Machine

 

 

Locally-Deep Support Vector Machine es un algoritmo SVM no lineal, optimizado para proporcionar predicciones eficientes en grandes conjuntos de datos. Las funciones que se utilizan para realizar la clasificación suelen estar diseñadas específicamente para reducir el tiempo de entrenamiento, mientras que se mantiene la precisión en las predicciones.

Este algoritmo se puede emplear para predecir fallos en dispositivos electrónicos. La ventaja que se proporciona en este caso consiste en poder reemplazar los dispositivos que vayan a fallar, es decir, los que hayan sido clasificados como tales por las características que presentan (tiempo de funcionamiento, nivel de exposición a agentes que lo puedan deteriorar…). Una vez identificados, dichos dispositivos pueden ser reemplazados antes de que el fallo se produzca, como podría suceder con la pieza de un avión, evitando situaciones de riesgo y ahorrando los costes añadidos que puede comportar una reparación inesperada.

 

Aprendizaje No Supervisado

Algoritmos de Clustering

Los algoritmos de Clustering clasifican los datos en grupos o clusters en función de las similitudes de sus atributos. Al mismo tiempo se busca que los datos agrupados en clusters diferentes sean claramente distintos. Para valorar las diferencias existentes entre los datos, los algoritmos de agrupación calculan la distancia euclídea entre atributos numéricos, de manera que, cuanto menor sea dicho valor, más similares serán las instancias y más probable será que se agrupen en el mismo cluster.

Figura 7: Ilustración del funcionamiento de un algoritmo de Clustering

 

 

Dependiendo de si el número de grupos en el que vamos a clasificar nuestros datos es conocido o no, se utilizará un algoritmo diferente. Si no conocemos dicho número, emplearemos el algoritmo g-means; mientras que, si conocemos el número de grupos, utilizaremos el algoritmo k-means.

Podemos aplicar algoritmos de clustering para agrupar productos de mercado con características similares, como, por ejemplo, inmuebles, obteniendo diferentes agrupaciones de datos en función, del precio y del tamaño de los mismos.

 

Algoritmos de Detección de Anomalías

Uno de los algoritmos más utilizados en Detección de Anomalías es el de Isolation Forest, en el que las instancias muy anómalas presentarán atributos muy distintos a lo habitual, lo que permitirá diferenciarlas y separarlas del resto que componen el conjunto de datos. El proceso de aislar instancias anómalas en este algoritmo se realiza mediante un conjunto de Árboles de Decisión en el que cada árbol trabaja con un subconjunto de datos escogido al azar. Estableciendo sucesivas condiciones sobre los atributos, las instancias se van separando en nodos. Aquellas que queden a poca profundidad en el árbol serán las más anómalas, puesto que ha sido necesario emplear pocas condiciones para diferenciarlas del resto.

Figura 8: Ilustración del funcionamiento de un algoritmo de Detección de Anomalías, donde la instancia anómala está representada en color naranja

 

 

Los algoritmos de Detección de Anomalías se aplican con frecuencia para detectar fraudes, por ejemplo en casos de préstamos bancarios. Las instancias que se diferencien mucho de las demás pueden indicar irregularidad en un préstamo, por ser éste excesivamente elevado en comparación con la renta o por superar cierto número de impagos.

 

Algoritmos de Asociaciones

Los algoritmos de Asociaciones buscan posibles relaciones entre los diferentes valores de los campos que se dan con una frecuencia superior a la del caso aleatorio. Es importante puntualizar que las asociaciones que se buscan no son correlaciones, sino concurrencias, es decir, que el “campo 1” tome el “valor 1” sucede frecuentemente cuando el “campo 2” toma el “valor 2”. En estos caso decimos que se pueden establecer reglas de asociación, que ponen de manifiesto hechos que suceden en común dentro de un determinado conjunto de datos. Por tanto, el tipo de reglas que expresan las asociaciones tienen el siguiente formato:

{Antecedente} => {Consecuente}

Una de las aplicaciones habituales de los algoritmos de Asociaciones es el de encontrar relación entre productos de mercado. De esta manera, se puede ver si un determinado producto se compra con más frecuencia de la habitual al haber comprado otro producto concreto. El hecho de comprender las relaciones de asociación puede contribuir a posicionar adecuadamente los productos en un supermercado (la nata al lado de las fresas por ejemplo), mejorando el nivel de ventas.

 

Algoritmos de entrenamiento: la pieza esencial para hacer predicciones

Las técnicas de Machine Learning se utilizan cada vez con más frecuencia en el mundo empresarial para realizar predicciones a partir de grandes conjuntos de datos. El hecho de disponer de un gran número de algoritmos nos brinda la posibilidad de aproximarnos a cada uno de los problemas que queremos resolver de la manera más eficiente y satisfactoria. Como consecuencia, es posible obtener mejores resultados a la vez que se invierte menos tiempo en el entrenamiento y obtención del modelo.

Sin embargo, es conveniente recordar que no sólo la elección del algoritmo que vamos a emplear en el entrenamiento es importante para garantizar la adecuada resolución de un problema. Al mismo tiempo, resulta de suma importancia entender los datos de los que disponemos, prepararlos y procesarlos adecuadamente para realizar el entrenamiento del que será nuestro modelo final. Esta es la mejor manera de aprovechar todo el potencial que nos ofrece el Aprendizaje Automático y de asomarnos al mundo de los datos, del que aún nos queda mucho por explorar.