IA Aprendizaje no Supervisado
Germán Salazar

Germán Salazar

Business Intelligence Consultant | Data Scientist

Otros Artículos:

IA: Aprendizaje no Supervisado

Share on linkedin
LinkedIn
Share on facebook
Facebook
Share on twitter
Twitter
Share on whatsapp
WhatsApp

Dentro de el área del Machine Learning, podemos encontrar varios tipos de aprendizaje y entre ellos el aprendizaje no supervisado. Esta área tiene mucho potencial, ya que nos ahorra la tediosa tarea de tener un conjunto de datos etiquetados. Aunque la mayoría de las aplicaciones de Machine Learning a día de hoy están basadas en aprendizaje supervisado, reconocidos expertos en el campo de la AI, como Yann LeCun dicen que:

«Si la inteligencia fuese un pastel, el aprendizaje no supervisado sería el pastel, el aprendizaje supervisado sería el glaseado y el aprendizaje por refuerzo sería la guinda».

El potencial que nos puede ofrecer el aprendizaje no supervisado todavía esta por explotar. Veamos las técnicas y tareas más comunes del aprendizaje no supervisado:

– Clustering

– Detección de anomalías

– Estimación de densidad (Density estimation)

Clustering

Algoritmos que vamos a ver en este artículo:

 > K-means

Cuando utilizamos algoritmos de clustering nuestra tarea será agrupar instancias parecidas (cercanas) y separar estas instancias agrupadas de otros grupos diferentes (lejanos). Veamos en más detalle los casos de uso que hemos mencionado antes:

1. Podemos utilizar clustering para segmentación de mercado, en la cual podríamos segmentar a nuestros clientes en función de sus compras y su actividad en la web. Esto nos acerca al cliente, dándonos la posibilidad de poder adaptar nuestros productos, servicios o campañas de marketing a cada segmento.

2. Si tenemos un sistema de recomendación podríamos sugerir contenido similar al contenido que otros usuarios dentro del grupo están consumiendo.

3. Además de poder hacer un análisis de datos de los grupos formados o utilizar un algoritmo de agrupamiento para luego analizar los grupos por separado.

4. Podríamos utilizar el clustering como técnica de reducción de dimensionalidad. Lo bueno de esta técnica es que la podemos aplicar en varios momentos del ciclo de vida de un proyecto de ML (exploración de datos, modelado, fine-tuning). Nos permitirá visualizar grupos y relaciones entre variables categóricas, reducir el tiempo de cómputo u obtener las features más importantes de nuestro dataset.

5. La detección de anomalías es otra aplicación que nos permitirá ver que instancias tienen poca afinidad con todos los grupos, para detectar valores atípicos. Es útil para ver que usuarios tienen un comportamiento inusual (hablando de comportamiento dentro de la web), ver si existe algún defecto de fabricación o detectar fraudes.

6. Si tenemos pocas etiquetas dentro de nuestro dataset, podríamos realizar un agrupamiento y propagar las etiquetas a todas las instancias en el mismo grupo. Esto se puede realizar dentro del aprendizaje semisupervisado para posteriormente alimente un algoritmo de aprendizaje supervisado.

Pero no solo es útil para datos tabulares, dentro del mundo de las imágenes podemos alimentar motores de búsquedas que a partir de una imagen de referencia nos muestre otras parecidas, esto se hace aplicando algoritmos de agrupamiento a toda la base de datos de imágenes para luego devolver las imágenes del grupo el cual pertenece la imagen de referencia.

Por último mencionar que no existe una definición de grupo universal, distintos algoritmos de agrupamiento tendrán distintas reglas a la hora de crear grupos y por lo tanto distintos enfoques en los cuales podemos utilizarlos.

K-means

K-Means es un algoritmo simple que intenta encontrar el centro de los grupos que identifique, al mismo tiempo que asigna cada instancia al grupo más cercano. En este caso lo que hace que una instancia sea añadida a un grupo es la distancia de esta al centroide más cercano.

Veamos el setup para un ejemplo en código:

K-means Code

Definimos los centros de nuestras masas, su desviación estándar y el número muestras.

K-means Setup

Graficamos nuestros datos.

K-means Data
Data Graphic

En este caso vemos que es fácil identificar los grupos, 5 en nuestro caso. Esto nos viene bien, ya que K-Means necesita que definamos previamente el número de grupos k que tiene que encontrar, esto puede ser un problema dependiendo del caso, pero existen técnicas para poder intentar definir el número de k.

Ahora vamos a entrenar el K-Means, lo que buscamos es que cada instancia sea asignada a cada uno de los grupos.

K-means Training

Cuando hemos definido los blobs, hemos creado una variable llamada labels, la cual puede dar a entender que tenemos etiquetas para nuestros datos, pero recordemos que estamos hablando de aprendizaje no supervisado y que aquí no contamos con datos etiquetados.

En este contexto nos referimos a la etiqueta como el índice del grupo al que el algoritmo asigna esta instancia.

Vemos la labels que guarda K-Means.

K-means
K-means Labels

Se puede leer como la instancia 0 está en el índice 4, la instancia 1 está en el índice 1 y así sucesivamente.

Veamos los 5 centroides que ha encontrado:

K-means Cluster
K-means Cluster Centers

Y por último veamos como el K-Means ha identificado los centroides y ha delimitado el área de cada grupo.

K-means Graphic

Esta es una pequeña muestra de lo que pueden hacer los algoritmos de clustering, este proceso lo podríamos extrapolar al análisis del comportamiento de nuestros clientes y ver qué grupos podemos identificar.

En próximos artículos veremos más a fondo las entrañas de los algoritmos de clustering y conceptos más avanzados.

Seguidnos en nuestras redes sociales y para cualquier comentario estamos siempre disponibles para todos vosotros.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *