0% encontró este documento útil (0 votos)
70 vistas363 páginas

Tema 1. Introducción Al Aprendizaje Automático No Supervisado

El documento presenta una introducción al aprendizaje automático no supervisado, destacando su importancia en la detección de patrones y la extracción de conocimiento sin la necesidad de datos etiquetados. Se abordan conceptos clave, retos, y el flujo de trabajo en este tipo de aprendizaje, así como técnicas de preprocesamiento y algoritmos relevantes como K-Means y reducción de dimensionalidad. Además, se mencionan aplicaciones en diversas áreas como bioinformática, procesamiento de lenguaje natural y reconocimiento de imágenes.

Cargado por

Diego Fernando
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas363 páginas

Tema 1. Introducción Al Aprendizaje Automático No Supervisado

El documento presenta una introducción al aprendizaje automático no supervisado, destacando su importancia en la detección de patrones y la extracción de conocimiento sin la necesidad de datos etiquetados. Se abordan conceptos clave, retos, y el flujo de trabajo en este tipo de aprendizaje, así como técnicas de preprocesamiento y algoritmos relevantes como K-Means y reducción de dimensionalidad. Además, se mencionan aplicaciones en diversas áreas como bioinformática, procesamiento de lenguaje natural y reconocimiento de imágenes.

Cargado por

Diego Fernando
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 363

Tema 1

Aprendizaje Automático No Supervisado

Tema 1. Introducción al
aprendizaje automático no
supervisado
Índice
Esquema

Ideas clave

1.1. Introducción y objetivos

1.2. Descripción general

1.3. Términos clave en aprendizaje no supervisado

1.4. Retos en el aprendizaje no supervisado

1.5. Flujo de trabajo en el aprendizaje no supervisado

1.6. Importancia del preprocesamiento

1.7. Técnicas de transformación de datos

1.8. Técnicas de discretización de datos

1.9. Técnicas de codificación de datos categóricos

1.10. Cuaderno de ejercicios

1.11. Referencias bibliográficas

A fondo

Unsupervised Learning Algorithms in Big Data: An


Overview

Study of Dimensionality Reduction Techniques and


Interpretation of their Coefficients, and Influence on the
Learned Models

Aprendizaje supervisado, no supervisado y por refuerzo

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 1. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.1. Introducción y objetivos

E l aprendizaje automático ha revolucionado la manera en que las máquinas

interactúan con el mundo, permitiendo que los sistemas de información aprendan de

los datos y apoyen la toma de decisiones con base en la identificación de patrones y

experiencia previas. Dentro de este campo, el aprendizaje no supervisado y el

aprendizaje por refuerzo son dos áreas que permiten abordar problemas complejos

sin la necesidad de datos etiquetados de antemano o con la capacidad de aprender a

través de la interacción con el entorno.

En esta asignatura se verán diferentes algoritmos de aprendizaje no supervisado,

fundamentos, aplicaciones y diferentes implementaciones del K-Means, algoritmos

jerárquicos, algoritmos agrupamiento basado en densidad, técnicas lineales y no

lineales para reducción de dimensionalidad y técnicas para detección de anomalías.

Además, se introduce el aprendizaje por refuerzo detallado en el algoritmo Q-

learning.

El aprendizaje automático no supervisado se denomina así porque no

hay un supervisor externo proporcionando retroalimentación sobre cómo

debe ser clasificado un dato.

En este tema se describen términos clave, retos y flujos de trabajo en el aprendizaje

no supervisado. Además de detallar algunas técnicas de preprocesamiento que

deberían tenerse en cuenta antes de intentar modelar con aprendizaje no

supervisado.

Aprendizaje Automático No Supervisado 4


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.2. Descripción general

El aprendizaje automático no supervisado parte de la premisa de que incluso en

ausencia de un supervisor que indique cómo debe ser clasificado un dato, se puede

extraer conocimiento a partir de los datos sin procesar. El corazón del aprendizaje no

supervisado es la detección de patrones y estructuras de conjuntos de datos sin

etiquetas. Algunos autores expresan que este tipo de aprendizaje se puede comparar

con el proceso de examinar un cofre lleno de piedras preciosas variadas, cada una

tiene su brillo y su forma (Van Der Post y Smith, 2023).

Los algoritmos actúan como clasificadores de joyas, categorizando y entendiendo

cada gema o cada instancia del dataset basándose en sus características. El

proceso no sigue una guía explicita, la única brújula son los mismos datos.

Es una de las técnicas más conocidas; busca reunir instancias similares dentro de

clústeres o grupos, con base en la estructura de los datos.

Otra área es la reducción de dimensionalidad; simplifica la complejidad de los

datos y elige los componentes más importantes o aquellos que generan mayor

conocimiento sobre la estructura de los datos, haciendo que el conjunto de datos sea

más manejable y comprensible.

Generar reglas de asociación también es un problema no supervisado donde


encontrar reglas que describan una gran porción de datos, tales como clientes que

compran un producto y que, a su vez, tienden a comprar otro producto. Es muy útil,

en el análisis de la cesta de la compra, descubrir relaciones entre ítems en una gran

cantidad de datos, lo cual permite a las empresas diseñar estrategias de marketing

con promociones cruzadas.

Detectar anomalías es otra área del aprendizaje no supervisado. El algoritmo

detecta patrones en los datos; si estos son inusuales o atípicos puede indicar que se

Aprendizaje Automático No Supervisado 5


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

trata de una anomalía. Se utilizan algoritmos de agrupación para encontrar

agrupaciones entre los datos y luego identificar instancias que no encajan en ninguno

de los grupos o incluso se pueden encontrar grupos con pocas instancias que

pueden pertenecer a datos anómalos. Es muy útil en aplicaciones como detección de

fraude, detección de fallas en redes o en sistemas de producción, donde no siempre

se cuenta con etiquetas de las instancias fallidas.

En los últimos años, en la bioinformática, se ha aplicado el aprendizaje no

supervisado, el cual juega un papel fundamental en la secuencia genética. Los

algoritmos de agrupamiento ayudan a categorizar genes con expresiones o patrones

similares, los cuales pueden revelar variaciones genéticas, potenciales marcadores

para enfermedades. Esto puede permitir un avance en la medicina y tratamientos

personalizados.

En el procesamiento del lenguaje natural (PLN), los algoritmos no supervisados

también han sido utilizados. Por ejemplo, el algoritmo Latent Dirichlet Allocation

(LDA) puede descubrir temas latentes dentro de un gran conjunto de documentos o

textos. Esto permite acciones como la organización de bibliotecas, mejorar los

motores de búsqueda e incluso monitorizar análisis de sentimientos.

En el reconocimiento de imágenes, el aprendizaje no supervisado ha tenido un

profundo impacto. Aprende a representar y categorizar imágenes teniendo en cuenta

patrones existentes dentro de la propia imagen. Por ejemplo, en astronomía se

pueden clasificar objetos celestes y analizar una gran cantidad de datos recolectadas

por telescopios. Los clústeres les permiten a los astrónomos identificar grupos de

galaxias, estrellas y otros fenómenos astronómicos.

La reducción de dimensionalidad utilizando técnicas como PCA, t-SNE, son muy

utilizadas para la visualización de datos con una alta dimensionalidad y hacerlos más

interpretables. Permite a los científicos de datos descubrir patrones y correlaciones

que pueden no verse a simple vista (Van Der Post y Smith, 2023).

Aprendizaje Automático No Supervisado 6


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Por otro lado, el aprendizaje por refuerzo se basa en la interacción de un agente

con su entorno para maximizar una recompensa acumulativa. Aquí, el agente toma

decisiones secuenciales, aprendiendo de las recompensas o penalizaciones

recibidas como resultado de sus acciones. Este tipo de aprendizaje es

particularmente útil en entornos dinámicos donde las decisiones deben adaptarse

constantemente a cambios en el entorno.

Aprendizaje Automático No Supervisado 7


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.3. Términos clave en aprendizaje no supervisado

Al familiarizarse con los términos que se aplican en esta rama del aprendizaje

automático, se puede entender de manera profunda los algoritmos. Además de

mejorar la comunicación efectiva al querer intercambiar conocimientos en esta área.

Dentro de los términos más comunes se encuentran:

▸ Característica: es un concepto ya visto en aprendizaje supervisado. En esta

asignatura nos referimos a una dimensión en el conjunto de datos. La selección de


características influye en el rendimiento de los algoritmos no supervisados.

▸ Clúster o grupo: grupo de datos que comparten características similares. En

aprendizaje automático no supervisado se crean grupos, con el objetivo de


maximizar la distancia intra-clúster y minimizar la distancia inter-clúster.

▸ Dimensionalidad: es el número de características del conjunto de datos. La alta

dimensionalidad es un problema y un reto. Generalmente se utilizan técnicas para


reducir la dimensionalidad.

▸ Métrica de distancia: es una medida que indica qué tan similares son dos puntos;

fundamental para crear grupos. Las distancias más comunes son Euclidiana,
Manhattan y la del coseno.

▸ Outliers o datos atípicos: como su nombre lo dice, son datos que se desvían del

resto del conjunto de datos. Pueden ser eliminados después de un proceso de


limpieza.

▸ Centroide: el centro de un conjunto de datos.

▸ Vectores y valores propios: conceptos heredados del algebra lineal. Representan

la dirección de la máxima variación en los datos y son utilizados para pasar de una
alta dimensionalidad a un espacio de características menor.

Aprendizaje Automático No Supervisado 8


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Overfitting o sobreajuste: es un término que se utiliza para decir que un modelo

funciona muy bien con los datos de entrenamiento, pero no se puede aplicar a otros
datos. No tiene la capacidad de generalizar.

▸ Hiperparámetros: parámetros que se establecen en el momento inicial del

entrenamiento.

Aprendizaje Automático No Supervisado 9


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.4. Retos en el aprendizaje no supervisado

Al no tener etiquetas o un camino claro a seguir para modelar, se enfrenta a muchos

retos. Algunos de los retos del aprendizaje no supervisado son:

▸ Determinar el número óptimo de grupos en un dataset: un reto siempre presente.

Dentro de los métodos que existen para intentar predecir el número ideal de grupos
están la técnica del codo, análisis de silueta y el índice Davies-Bouldin. Sin embargo,
las técnicas mencionadas anteriormente necesitan de la experiencia de un humano
para tomar la decisión final.

▸ La maldición de la dimensionalidad: en conjuntos de datos con alta

dimensionalidad existe un alto riesgo de no encontrar grupos con características

comunes; por tal motivo, si se reduce la dimensionalidad se puede mitigar este


riesgo. Sin embargo, el proceso de reducción de la dimensionalidad debe hacerse de
manera muy estructurada para preservar la estructura de los datos.

▸ La escalabilidad de los algoritmos existentes: hoy en día los conjuntos de datos

son cada vez más grandes y el desempeño de los algoritmos puede no ser el óptimo
para grandes conjuntos de datos. Es necesario desarrollar algoritmos de aprendizaje
no supervisado escalables que puedan manejar datos masivos sin comprometer la

calidad de las agrupaciones obtenidas.

▸ Delimitar el ruido y los outliers: los datos ruidosos pueden distorsionar la

verdadera estructura de los datos y los grupos encontrados pueden no representar el


conjunto de datos analizado. Métodos robustos de clustering y filtro de ruido son
fundamentales.

▸ La interpretabilidad de los resultados: se puede estar frente a interpretaciones

subjetivas. Al no tener categorías o etiquetas predefinidas, asignar significado a cada


grupo creado va a depender del contexto y de la habilidad del experto o la experticia

en el dominio.

Aprendizaje Automático No Supervisado 10


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ No contar con métricas muy fuertes: las métricas sirven para validar el éxito o

fracaso de un algoritmo. Se necesitan métricas definidas y robustas para medir la


calidad y el desempeño de un algoritmo.

Aprendizaje Automático No Supervisado 11


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.5. Flujo de trabajo en el aprendizaje no


supervisado

Los principales pasos u hoja de ruta que deberíamos seguir en un proyecto de

aprendizaje no supervisado son los siguientes:

▸ Recolección de datos.

▸ Limpieza y preprocesamiento de datos.

▸ Preparación de los datos.

▸ Elegir y aplicar un algoritmo no supervisado.

▸ Entrenar y parametrizar el modelo.

▸ Interpretación de los resultados.

▸ Evaluación de los resultados.

El proceso inicia con la recolección; puede provenir de diferentes fuentes y en

diferentes formatos. En este paso se debe consolidar el dataset y asegurar la

consistencia. Una vez se tengan los datos, el siguiente paso es limpiarlos y

preprocesarlos. En esta etapa se eliminan o corrigen anomalías, se pueden incluir

técnicas de normalización o reescalado. Siguiendo con el flujo, se seleccionan las

características más importantes, reduciendo de esta manera el número de variables.

Una vez se tenga el dataset listo, se puede proceder con elegir y aplicar un

algoritmo, el cual se parametriza se entrena; una vez entrenado se interpretan los

resultados y si es satisfactorio se evalúan los resultados utilizando alguna métrica o

se repite el proceso de elegir, parametrizar y entrenar otro algoritmo.

A continuación, veremos el vídeo Aprendizaje no supervisado: conceptos básicos

y generalidades con un ejemplo sencillo en Python.

Aprendizaje Automático No Supervisado 12


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=5ab637da-b76d-

4ca8-ab42-b1ca00dd2f52

Aprendizaje Automático No Supervisado 13


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.6. Importancia del preprocesamiento

L a calidad del preprocesamiento influye directamente en la efectividad de las

siguientes tareas dentro del proceso, datos bien preprocesados permiten que los

algoritmos detecten mejor los patrones y las relaciones, generando un conocimiento

más preciso sobre el conjunto de datos.

Generalmente se encuentran datos inconsistentes, irrelevantes, que pueden sesgar

cualquier algoritmo de aprendizaje automático supervisado y no supervisado.

Uno de los primeros pasos es el manejo de datos faltantes. Si existen instancias

incompletas pueden introducir fallos en el modelo. Aquí se pueden utilizar estrategias

como imputación de datos o eliminación de faltantes.

Otro paso importante en el preprocesamiento es el escalado de características.

Fundamental en aprendizaje no supervisado, ya que algoritmos como K-Means son

muy sensibles a la escala de los datos. Se pueden llevar a cabo procesos de

estandarización o normalización para que todos los atributos contribuyan de la

misma forma. Previniendo así que una característica pese más que otra

influenciando al modelo.

Utilizar técnicas de transformación de datos, como transformación logarítmica, puede

ser importante. Esto ayuda a estabilizar la varianza, especialmente en características


que no siguen una distribución conocida.

Otro paso interesante y muy recomendado es la reducción de dimensionalidad, la

cual ayuda a eliminar ruido y mejorar el cálculo computacional.

Codificación de variables categóricas. Básicamente es convertir una variable no

numérica en un formato que entienda un algoritmo, transformar atributos en valores

numéricos.

Aprendizaje Automático No Supervisado 14


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Y, finalmente, limpiar el dataset de datos ruidosos como duplicados o corregir errores

de digitación o de ingreso inadecuado de datos.

En este tema veremos algunas técnicas de preprocesamiento que no se han visto en

la asignatura de Técnicas de Aprendizaje Automático Supervisado.

Aprendizaje Automático No Supervisado 15


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.7. Técnicas de transformación de datos

Se pueden aplicar técnicas lineales o no lineales con el objetivo de reducir asimetría,

convertir relaciones no lineales en lineales y mejorar la predicción.

Por ejemplo, utilizar una transformación logarítmica a cada punto puede reducir la

asimetría y estabilizar la varianza. Se utiliza este tipo de transformación cuando los

datos siguen una distribución de ley de potencia y se van a aplicar algoritmos que

asumen normalidad en los datos.

La transformación logarítmica es una extensión de la transformación de Box-Cox,

introduce un parámetro lambda (λ), el cual permite identificar la mejor transformación

de los datos para que se parezca más a una campana de Gauss. Esto lo hace

suavizando las distribuciones inusuales y mitigando los efectos de los valores

atípicos.

A continuación, se puede ver un ejemplo en Python, utilizando la librería de Scikit-

learn e importando la clase PowerTransformer:

import pandas as pd
from sklearn.preprocessing import PowerTransformer

# Leer el conjunto de datos desde un archivo CSV


data = pd.read_csv("tu_archivo.csv")

# Selecciona las columnas numéricas para transformar


numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns

# Crear y ajustar el transformador de potencia


pt = PowerTransformer(method='yeo-johnson') # Selecciona 'box-cox' o 'yeo-
johnson' para el método de transformación
pt.fit(data[numeric_cols])

# Aplicar la transformación a las columnas numéricas


data[numeric_cols] = pt.transform(data[numeric_cols])

En el código, primero se importa pandas para leer el archivo .Csv. Después se

Aprendizaje Automático No Supervisado 16


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

identifican las columnas numéricas, en caso de que sean todas las columnas

numéricas las que se deseen transformar. Y, por último, se crea un objeto

PowerTransformer, para aplicar la transformación y actualizar las columnas con los

valores transformados.

Aprendizaje Automático No Supervisado 17


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.8. Técnicas de discretización de datos

L a s técnicas de discretización convierten variables continuas en variables

discretas, permitiendo ver los datos desde una perspectiva diferente. Este enfoque

divide en rangos las variables continúas generando intervalos que tienen una

etiqueta. De esta forma, el valor numérico pasa a una categoría o bins. En

aprendizaje no supervisado, la discretización simplifica relaciones complejas al

etiquetar con una categoría o bin a un valor numérico.

Al discretizar se divide la variable en pequeños contenedores, en donde teniendo en

cuenta la distribución de los datos se asegura que cada bin sea representativo del

conjunto de datos.

Se puede utilizar los árboles de decisión para este proceso de discretización,

aprovechando el uso de la ganancia de información para delimitar los límites óptimos

de cada grupo de datos. Es un método supervisado que requiere una variable

objetivo, pero se puede adaptar utilizando ceros como etiquetas.

import pandas as pd
from sklearn.tree import DecisionTreeClassifier

# Leer el conjunto de datos desde un archivo CSV


data = pd.read_csv("tu_archivo.csv")

# Selecciona las columnas numéricas que deseas discretizar


numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns

# Entrenar un árbol de decisión para discretizar las variables


dt = DecisionTreeClassifier(max_leaf_nodes=4)

# Ajusta este valor según sea necesario


dt.fit(data[numeric_cols], np.zeros(len(data)))

# Utiliza una matriz de ceros como etiquetas ya que no tenemos etiquetas


reales

# Discretizar las variables utilizando las divisiones del árbol

Aprendizaje Automático No Supervisado 18


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

discretized_values = dt.apply(data[numeric_cols])

# Agregar las variables discretizadas al conjunto de datos original


for i, col in enumerate(numeric_cols):
data[col + '_discretized'] = discretized_values[:, i]

En el anterior ejemplo entrenamos un árbol con las columnas numéricas de un

dataset y utilizamos una matriz de ceros como etiquetas para adaptarlo a un

problema no supervisado. Después entrenamos el árbol de decisión para obtener las

divisiones, obteniendo la transformación de una variable continua a una variable

discreta.

Otra técnica es el uso de cuantiles. Los valores continuos se segmentan en cuatro

cuantiles, donde cada cuantil encapsula una proporción igual de puntos de datos. Es

muy útil si la variable tiene una distribución asimétrica.

import pandas as pd

# Cargar el conjunto de datos desde un archivo CSV


data = pd.read_csv("tu_archivo.csv")

# Seleccionar las columnas numéricas que deseas discretizar


numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns

# Discretizar cada columna numérica por cuantiles


for col in numeric_cols:
data[col + '_discretized'] = pd.qcut(data[col], labels=False,
duplicates='drop')

Iteramos sobre cada columna numérica seleccionada y aplicamos la función pd.qcut()

de pandas para discretizar los datos en cuantiles. Establecemos labels=False para

obtener números enteros que representan los cuantiles y duplicates='drop' para

manejar duplicados en los cuantiles si los hubiera.

Aprendizaje Automático No Supervisado 19


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.9. Técnicas de codificación de datos categóricos

Debido a que la mayoría de los algoritmos de aprendizaje automático utiliza números

y no texto, se hace necesario convertir los datos textuales en formato numérico.

Existen dos tipos de datos categóricos: datos ordinales y dantos nominales.

Las categorías de datos ordinales tienen un orden intrínseco. Esto significa que las

categorías se pueden ordenar de mayor a menor o viceversa. Por ejemplo, el grado

más alto en estudios que tiene una persona es una variable ordinal: secundaria,

bachillerato, grado, máster y doctorado.

Mientras que los datos nominales no tienen un orden inherente. Por ejemplo,

ciudades de España: Málaga, Salamanca, Granada, Cádiz… No se clasifican o se

ordenan.

La codificación es el proceso de convertir datos categóricos o textuales a formato

numérico, de modo que puedan usarse como entrada para que los procesen los

algoritmos.

▸ Esto permite que el modelo identifique patrones y haga predicciones basadas en

esos patrones.

▸ La codificación también ayuda a evitar sesgos en el modelo al garantizar que todas

las características tengan el mismo peso.

▸ La elección del método de codificación puede tener un impacto significativo en el

rendimiento del modelo, por lo que es importante elegir una técnica de codificación

adecuada según la naturaleza de los datos y los requisitos específicos del modelo
(Jarapala, 2023).

Existen diferentes métodos para llevar a cabo la codificación de variables:

Aprendizaje Automático No Supervisado 20


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Codificación One-Hot

Es la forma más común de codificar una variable. Una columna binaria se crea por

cada categoría de la variable. Si la variable está presente se le asigna el valor de 1,

si no se le asigna 0.

import pandas as pd

# Crear un DataFrame de ejemplo


data = pd.DataFrame({'Color': ['Rojo', 'Verde', 'Azul', 'Rojo',
'Amarillo']})

Color
0 Rojo
1 Verde
2 Azul
3 Rojo
4 Amarillo

# Aplicar one-hot encoding


one_hot_encoded = pd.get_dummies(data['Color'])

# Concatenar los datos originales con las variables codificadas one-hot


data_encoded = pd.concat([data, one_hot_encoded], axis=1)

# Eliminar la columna original 'Color'


data_encoded.drop('Color', axis=1, inplace=True)

data_encoded

Amarillo Azul Rojo Verde


0 0 0 1 0
1 0 0 0 1
2 0 1 0 0
3 0 0 1 0
4 1 0 0 0

Cada columna representa una categoría única presente en la columna original 'Color'

y el valor en cada celda indica si la observación corresponde o no a esa categoría.


Si la observación tiene ese color, el valor será 1; de lo contrario, será 0.

Codificación ordinal

Aprendizaje Automático No Supervisado 21


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

A cada categoría única se le asigna un valor entero único.

Este es un método de codificación más simple, pero tiene el inconveniente de que el

algoritmo de aprendizaje automático puede malinterpretar los números enteros

asignados como si tuvieran una relación ordenada cuando en realidad no es así.

import pandas as pd
from sklearn.preprocessing import LabelEncoder

# Crear un DataFrame de ejemplo


data = pd.DataFrame({'Color': ['Rojo', 'Verde', 'Azul', 'Rojo',
'Amarillo']})

# Inicializar el LabelEncoder
label_encoder = LabelEncoder()

# Aplicar el LabelEncoder a la columna 'Color'


data['Color_encoded'] = label_encoder.fit_transform(data['Color'])

# Imprimir el DataFrame resultante


print(data)

Color Color_encoded
0 Rojo 2
1 Verde 3
2 Azul 0
3 Rojo 2
4 Amarillo 1

Aquí, cada categoría única en la columna 'Color' se ha asignado a un valor numérico

único por el LabelEncoder . Por ejemplo, 'Azul' se codifica como 0, 'Amarillo' como 1,

'Rojo' como 2 y 'Verde' como 3.

Codificación binaria

Las categorías se representan como dígitos binarios. Por ejemplo, si una variable

tiene cuatro categorías 'Bueno' , 'Malo' , 'Regular' y 'Malo' , se pueden representar como

0001, 0010, 0100 y 1000, respectivamente.

# Binary Encoding:

Aprendizaje Automático No Supervisado 22


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

import pandas as pd

# Crear un dataframe con una variable categorica


df = pd.DataFrame({‘atencionCliente’: [‘Excelente’, ‘Regular’, ‘Malo’]})
print(f"Antes de codificar:\n\n{df}\n")

# aplicar la codificación binaria


servicioAlCliente_map = {'Excelente': 0, 'Regular': 1, 'Malo': 2}
df[‘atencionCliente’] = df[‘atencionCliente’].map(servicioAlCliente _map)
df[‘atencionCliente’] = df[‘atencionCliente’].apply(lambda x: format(x,
'b'))

Aquí, a cada categoría se le asigna un valor binario que la representa.

Codificación target

Se utiliza con variables categóricas de alta cardinalidad; es decir, características con


muchas categorías únicas. Se calcula el valor objetivo promedio para cada categoría

y este valor promedio es utilizado para reemplazar la característica categórica.

Aunque toca utilizarla con precaución porque puede conducir a un sobreajuste.

# Binary Encoding:

import pandas as pd

# Crear un DataFrame de ejemplo


data = {'Categoría': ['A', 'B', 'A', 'C', 'B', 'C', 'A', 'A', 'B', 'C'],
'Valor': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data)

# Definir las categorías y asignarles etiquetas


categorias = {'A': 'Grupo A', 'B': 'Grupo B', 'C': 'Grupo C'}

# Categorizar la columna 'Categoría'


df['Grupo'] = df['Categoría'].map(categorias)

# Agrupar por la nueva columna 'Grupo' y calcular la media de los valores


resultados = df.groupby('Grupo').mean()

Usamos el método map() para categorizar la columna 'Categoría' , luego creamos una

nueva columna llamada 'Grupo' . Utilizamos groupby para agrupar por la nueva

columna 'Grupo' y calculamos la media de los valores en cada grupo utilizando el

Aprendizaje Automático No Supervisado 23


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

método mean() .

A continuación, veremos el vídeo Preprocesamiento y transformación de datos en

aprendizaje no supervisado con un ejemplo sencillo en python.

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=ff372be3-ca92-

4b2c-98ee-b1bd017637a2

Aprendizaje Automático No Supervisado 24


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.10. Cuaderno de ejercicios

Explora y describe la estructura subyacente de los datos del conjunto de datos de

precios de viviendas de Kaggle. Identifica y describe cualquier patrón o estructura

que encuentres.

Yasser, M. (2022). Housing Prices Dataset. Kaggle.


https://www.kaggle.com/datasets/yasserh/housing-prices-dataset

Ejercicio 1: exploración y descripción de datos

Explora y describe la estructura que tienen los datos del conjunto de datos de precios

de viviendas de Kaggle.

Solución

▸ Carga de datos y descripción general:

import pandas as pd
data = pd.read_csv('housing-prices-dataset.csv')
print(data.info())
print(data.describe())

El conjunto de datos contiene varias características como el precio, tamaño, número

de habitaciones, etc.

Describe estadísticas básicas: medias, medianas, desviaciones estándar.

▸ Identificación de patrones:

• Distribución de precios: utiliza histogramas para observar la distribución de precios.

• Correlaciones: utiliza un mapa de calor (heatmap) para visualizar las correlaciones


entre variables.

Aprendizaje Automático No Supervisado 25


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

import seaborn as sns


import matplotlib.pyplot as plt
sns.heatmap(data.corr(), annot=True, cmap='coolwarm')
plt.show()

Se pueden identificar variables altamente correlacionadas con el precio, como el

tamaño de la vivienda y la ubicación.

Los precios tienden a agruparse en ciertas áreas geográficas, indicando patrones de

agrupamiento.

Ejercicio 2: flujo de trabajo y retos

Diseña un flujo de trabajo paso a paso para abordar el análisis del conjunto de datos

mencionado en el ejercicio 1. Identifica al menos uno de los retos del aprendizaje no

supervisado.

Solución

Flujo de trabajo:

▸ Recolección de datos: obtener el conjunto de datos y consolidarlo.

▸ Preprocesamiento.

▸ Limpieza de datos (manejo de valores faltantes).

▸ Selección de características.

▸ Escalado de características.

▸ Aplicar algoritmos de agrupamiento: aplicar K-Means, DBSCAN o clustering

jerárquico.

▸ Evaluación de resultados: usar métricas como el índice de la silueta.

▸ Reto.

Aprendizaje Automático No Supervisado 26


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Maldición de la dimensionalidad: con conjuntos de datos de alta dimensionalidad es

difícil encontrar grupos con características comunes. La reducción de


dimensionalidad o selección de característcas puede ayudar, pero debe hacerse
cuidadosamente para preservar la estructura de los datos.

Ejercicio 3: preprocesamiento de datos

Realiza un preprocesamiento completo del conjunto de datos mencionado en el

ejercicio 1, incluyendo la limpieza de datos, eliminación de outliers y normalización.

Solución

▸ Cargar los datos:

import pandas as pd

# Cargar los datos


file_path = 'house_prices.csv' # Cambia esto por la ruta real de tu archivo
data = pd.read_csv(file_path)

# Mostrar las primeras filas del dataframe para verificar que se ha cargado
correctamente
print(data.head())

▸ Limpieza de datos:

# Manejo de valores faltantes


data = data.dropna()

▸ Identificación de outliers:

# Calcular el IQR para la columna 'price'


Q1 = data['price'].quantile(0.25)
Q3 = data['price'].quantile(0.75)
IQR = Q3 - Q1

# Definir los límites para identificar outliers


lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# Identificar outliers

Aprendizaje Automático No Supervisado 27


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

outliers = data[(data['price'] < lower_bound) | (data['price'] >


upper_bound)]

# Mostrar los outliers identificados


print(outliers)

▸ Eliminación de otuliers:

# Eliminar outliers
data_cleaned = data[(data['price'] >= lower_bound) &amp; (data['price'] <=
upper_bound)]

# Mostrar las primeras filas del dataframe limpio


print(data_cleaned.head())

# Guardar el dataframe limpio en un nuevo archivo CSV


data_cleaned.to_csv('house_prices_cleaned.csv', index=False)

▸ Normalización:

from sklearn.preprocessing import StandardScaler


scaler = StandardScaler()
data_scaled = scaler.fit_transform(data.select_dtypes(include=['float64',
'int64']))

Ejercicio 4: discretización y codificación de datos categóricos

Aplica técnicas de discretización y codificación de datos categóricos del conjunto de

datos de precio de inmuebles de Kaggle para preparar los datos para su análisis con

algoritmos de aprendizaje no supervisado.

data['price_discretized'] = pd.qcut(data['price'], q=4, labels=False)


#Codificación de datos categóricos:
data_encoded = pd.get_dummies(data, columns=['categorical_feature'])

Aprendizaje Automático No Supervisado 28


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

1.11. Referencias bibliográficas

Jarapala, K. N. (2023, marzo 13). Categorical Data Encoding Techniques. Medium.


https://medium.com/aiskunks/categorical-data-encoding-techniques-d6296697a40f

Van Der Post, H. y Smith, M. (2023). Unsupervised Machine Learning: with Python.

Reactive Publishing.

Aprendizaje Automático No Supervisado 29


Tema 1. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Unsupervised Learning Algorithms in Big Data: An


Overview

Zhang, P. (2022). Unsupervised Learning Algorithms in Big Data: An Overview. En

Holl, A., Chen, J. y Guan, G. (Eds.), Proceedings of the 2022 5th International

Conference on Humanities Education and Social Sciences (ICHESS 2022) (pp. 910–

931). https://www.atlantis-press.com/article/125983012.pdf

Este artículo proporciona una descripción general de los algoritmos no supervisados,

sus ventajas y desventajas, además de las aplicaciones en los últimos años con el

big data.

Aprendizaje Automático No Supervisado 30


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Study of Dimensionality Reduction Techniques and


Interpretation of their Coefficients, and Influence
on the Learned Models

García-Gutiérrez, M. A. (2023). Study of Dimensionality Reduction Techniques and

Interpretation of their Coefficients, and Influence on the Learned Models [Trabajo fin

de máster, Universidad Politécnica de Madrid]. ETSI Informáticos.


https://oa.upm.es/75893/1/TFM_MIGUEL_ANGEL_GARCIA-
GUTIERREZ_ESPINA.pdf

En este documento se analizan varias técnicas de reducción de dimensionalidad y su

influencia en los modelos de aprendizaje automático.

Aprendizaje Automático No Supervisado 31


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Aprendizaje supervisado, no supervisado y por


refuerzo

BitBoss. (2023, febrero 25). Machine learning | aprendizaje supervisado, no

supervisado y por refuerzo [Vídeo]. YouTube. https://www.youtube.com/watch?


v=FMkxSsfvMI4

Explica de forma muy dinámica la diferencia entre estos conceptos.

Aprendizaje Automático No Supervisado 32


Tema 1. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué es el aprendizaje no supervisado?

A. Un tipo de aprendizaje donde se proporcionan ejemplos de entrada junto

con sus correspondientes salidas esperadas.

B. Un tipo de aprendizaje donde se utilizan datos no etiquetados para

descubrir patrones o estructuras intrínsecas en los datos.

C. Un tipo de aprendizaje donde se utilizan datos etiquetados para entrenar

un modelo.

D. Ninguna de las anteriores.

2. ¿Cuál de las siguientes afirmaciones es cierta sobre el aprendizaje no

supervisado?

A. Se utiliza para predecir una variable de salida basada en variables de

entrada.

B. No requiere la existencia de variables de entrada en los datos de

entrenamiento.

C. Se utiliza para clasificar los datos en dos o más categorías predefinidas.

D. No requiere la existencia de variables de salida en los datos de

entrenamiento, trabaja creando grupos para las instancias teniendo en cuenta

las características.

3. ¿Cuál es uno de los principales objetivos del aprendizaje no supervisado?

A. Clasificación.

B. Regresión.

C. Exploración y descubrimiento de patrones.

D. Ninguna de las anteriores.

Aprendizaje Automático No Supervisado 33


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)
Test

4. ¿Cuál de las siguientes técnicas se utiliza comúnmente en el aprendizaje no

supervisado para reducir la dimensionalidad de los datos?

A. Clustering.

B. Regresión lineal.

C. Análisis de componentes principales (PCA).

D. Vectores y valores propios.

5. ¿Cuál de las siguientes afirmaciones describe mejor el proceso de clustering en

el aprendizaje no supervisado?

A. Agrupar los datos en clústeres basados en similitudes entre ellos.

B. Dividir los datos en conjuntos de categorías predefinidas.

C. Asignar valores a las características de entrada para predecir una variable

de salida.

D. Dividir los datos en conjuntos de igual tamaño ordenados por cualquier

dimensión.

6. ¿Por qué es importante el preprocesamiento de datos en el aprendizaje no

supervisado?

A. Para eliminar datos atípicos.

B. Para mejorar la calidad de los datos y facilitar el análisis.

C. Para aumentar la complejidad del modelo.

D. Ninguna de las anteriores.

7. ¿Qué tipo de datos se utilizan comúnmente en el aprendizaje no supervisado?


A. Datos no estructurados.

B. Datos categóricos.

C. Datos numéricos y categóricos.

D. Datos estructurados y no estructurados.

Aprendizaje Automático No Supervisado 34


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)
Test

8. ¿Qué técnica se utiliza para convertir variables categóricas en una

representación numérica en el aprendizaje no supervisado?

A. Clustering.

B. Transformación de datos.

C. Técnicas de visualización.

D. Encoding de datos categóricos.

9. ¿Cuál es uno de los retos del aprendizaje no supervisado?

A. La necesidad de etiquetas para cada ejemplo de entrenamiento.

B. La interpretación de los resultados obtenidos.

C. La falta de algoritmos disponibles.

D. El manejo de la maldición de la dimensionalidad.

10. ¿Cuál es uno de los beneficios del aprendizaje no supervisado?

A. La capacidad de predecir valores de salida precisos.

B. La capacidad de descubrir patrones y estructuras ocultas en los datos.

C. La capacidad de entrenar modelos con menor cantidad de datos.

D. Ninguna de las anteriores.

Aprendizaje Automático No Supervisado 35


Tema 1. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 2

Aprendizaje Automático No Supervisado

Tema 2. Fundamentos y
aplicaciones del
agrupamiento K-Means
Índice
Esquema

Ideas clave

2.1. Introducción y objetivos

2.2. Algoritmo K-Means

2.3. ¿Cómo elegir el número de clústeres?

2.4. Implementar K-Means en Python

2.5. Ventajas y desventajas del K-Means

2.6. Cuaderno de ejercicios

2.7. Referencias bibliográficas

A fondo

Segmentación de clientes paso a paso

K-Means clustering

K-Means en R

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 2. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.1. Introducción y objetivos

En el universo del aprendizaje no supervisado, los clústeres son la piedra angular.

La esencia del grupo está en la habilidad de proporcionar información sin necesidad

de etiquetas. Es como contar un cuento, donde cada clúster narra lo que esconden

sus instancias.

Hoy en día la cantidad de datos existentes son cada vez mayor, pero en muchas

ocasiones contar con etiquetas es un lujo, siendo estas muy costosas de obtener.

Como ya se ha comentado, este tipo de técnicas se utilizan cuando se desconoce la

estructura de los datos, puesto que no se tiene la variable objetivo de los datos. Por

ejemplo, cuando se desconoce cuántos tipos de usuarios existen.

Estas técnicas dividen los datos en clústeres o grupos similares. Pero esta división

se lleva a cabo sin la necesidad de indicar las características de cada uno de estos

grupos. Para lograr la mejor división, las instancias de un grupo deben ser muy

similares entre sí y muy distintas entre el resto de los grupos.

En este tema veremos los algoritmos de agrupación, y dentro de ellos nos

centraremos en explicar el algoritmo K-Means, ya que es el principal exponente de

esta técnica, gracias a su simplicidad y eficacia.

En este tema nos planteamos los siguientes objetivos:

▸ Presentar una explicación detallada del algoritmo K-Means y su funcionamiento

interno.

▸ Describir el paso a paso de la asignación de centroides y su actualización para

minimizar la suma de distancias cuadradas entre los puntos.

▸ Implementar el algoritmo de K-Means en un entorno de programación, utilizando

Python.

Aprendizaje Automático No Supervisado 4


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Aprendizaje Automático No Supervisado 5


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.2. Algoritmo K-Means

E l algoritmo K-Means particiona los datos en K clústeres distintos, cada uno de

ellos representado por la media de los puntos; de ahí viene su nombre: K-Means o K-

Medias. Su objetivo es minimizar la varianza intra-clúster y maximizar la varianza

inter-clúster, haciendo que los grupos tengan datos lo más diferentes posibles entre

sí y, al mismo tiempo, asegurar que los elementos dentro de cada grupo sean lo más

similares posible entre sí (Van Der Post y Smith, 2021).

El algoritmo K-Means es una herramienta fundamental para los científicos de datos,

gracias a su simplicidad y potencia. Es capaz de dividir un conjunto de datos

complejo en particiones simples y digeribles.

Para entender mejor el algoritmo, introduciremos el concepto de los diagramas de

Voronoi. Estos diagramas también conocidos como polígonos de Thiessen son

una forma de dividir el espacio en regiones basadas en la proximidad a un conjunto

específico de puntos. Cada región en el diagrama de Voronoi está asociado a uno de

estos sitios y contiene todos los puntos del espacio que están más cerca de ese sitio

que de cualquier otro. Son una herramienta importante en diversos campos, como la

ciencia de datos, la geometría computacional y la visualización de datos.

Características clave:

▸ Cada región en un diagrama de Voronoi está delimitada por las líneas bisectrices,

que son las líneas que están equidistantes entre dos sitios vecinos.

▸ Los vértices de los polígonos de Voronoi están ubicados en puntos donde tres o más

sitios se encuentran equidistantes.

▸ Los diagramas de Voronoi pueden ser bidimensionales (2D) o tridimensionales (3D),

dependiendo de la dimensión del espacio en el que se definen los puntos


generadores.

Aprendizaje Automático No Supervisado 6


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Los diagramas de Voronoi se utilizan comúnmente en aplicaciones de análisis

espacial, como la planificación urbana, el diseño de redes de comunicación, la


interpolación de datos y la visualización de datos geográficos.

A continuación, se puede ver un ejemplo en Python de la construcción de un

diagrama de Voronoi.

import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d

# Generar puntos aleatorios


points = np.random.rand(5, 2)

# Calcular el diagrama de Voronoi


vor = Voronoi(points)

# Graficar el diagrama de Voronoi


voronoi_plot_2d(vor)
plt.plot(points[:,0], points[:,1], 'ro') # Plotear los puntos generados
plt.show()

Figura 1. Diagrama de Voronoi generado con puntos aleatorios. Fuente: elaboración propia.

En el contexto de K-Means, estos diagramas se utilizan para ilustrar cómo se

Aprendizaje Automático No Supervisado 7


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

agrupan los datos en torno a los centroides. Cada región de Voronoi corresponde a

un clúster generado por K-Means, donde todos los puntos dentro de una región están

más cerca de su respectivo centroide que de cualquier otro. Esto visualiza

claramente la asignación de datos a clústeres y ayuda a comprender la eficiencia y la

precisión del algoritmo en la partición del espacio de datos.

Una vez entendido el concepto de los diagramas de Voronoi, veremos en detalle el

algoritmo K-Means.

El paso a paso del algoritmo es el siguiente:

▸ Preprocesamiento de datos: el preprocesamiento de datos en el aprendizaje no

supervisado es importante para mejorar la calidad y precisión de los modelos, al


igual que en el aprendizaje supervisado.

▸ Inicialización de centroides: el ciclo comienza seleccionando aleatoriamente K

puntos como centroides iniciales. Los centroides son puntos que representan el
centro de cada uno de los K grupos que se quieren identificar.

Figura 2. Inicialización de centroides. Fuente: elaboración propia.

▸ Asignación de puntos a centroides: para cada punto del conjunto de datos, se

calcula la distancia entre ese punto y cada uno de los centroides. Luego, se asigna

el punto al centroide más cercano.

Aprendizaje Automático No Supervisado 8


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 3. Asignación de puntos a los centroides. Fuente: elaboración propia.

▸ Actualización de centroides: después de asignar cada punto a un centroide, se

recalcula la posición de cada centroide como el centroide del grupo de puntos


asignados a él. Es decir, que el nuevo centroide es el promedio de todas las
coordenadas de los puntos asignados al grupo.

Figura 4. Actualización de centroides. Fuente: elaboración propia.

▸ Repetición: los pasos de asignación de centroides y de actualización de centroides

se repiten iterativamente hasta que los centroides dejen de cambiar de manera

significativa o hasta que se alcance un número máximo de iteraciones.

Aprendizaje Automático No Supervisado 9


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Convergencia: cuando los centroides permanecen constantes entre iteraciones y los

puntos están asignados a los grupos de manera estable, podemos hablar de


convergencia.

▸ Resultado final: un conjunto de K grupos, donde cada grupo está representado por

su centroide.

El poder de K-Means reside en su versatilidad, ya que se puede aplicar a una gran

variedad de conjuntos de datos. Desde segmentar clientes hasta la compresión de

imágenes. La necesidad de predefinir el número de grupos, K, puede ser un desafío.

Veremos a continuación algunas de las técnicas existentes para facilitar la elección

del valor de K.

Aprendizaje Automático No Supervisado 10


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.3. ¿Cómo elegir el número de clústeres?

Elegir un valor de K erróneo implica que se tendrán grupos que no representan al

conjunto de datos, lo que implica que no nos va a brindar información suficiente

sobre cada uno de los grupos.

En muchos casos no conocemos ese número mágico que nos indica cuál es la

cantidad de grupos que deben generarse. Si conocemos el dominio, debería ser

sencillo saber cuántos grupos se desean crear. Pero, lo cierto, es que no es tan fácil

de encontrar.

En la Figura 5 podemos ver una simulación del algoritmo K-Means con diferentes

valores de K para un mismo conjunto de datos. El mejor valor de K es cuatro, se

pueden ver los grupos o clústeres de datos bien diferenciados. Cualquier otro valor

de K va a generar un modelo que no es adecuado para este conjunto de datos. En

este caso hemos utilizado la fuerza bruta, intentando configurar el algoritmo con

diferentes valores de K.

Figura 5. Diferentes valores de K para un mismo conjunto de datos. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 11


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

A continuación, veremos algunos métodos y/o métricas conocidas para encontrar el

número óptimo de clústeres. Pero antes recordemos dos principios básicos:

▸ Los puntos dentro del grupo deben ser lo más similares posible.

▸ Los puntos que pertenecen a distintos grupos deben ser lo más distintos posible.

Métricas

A continuación, veremos dos métricas que se utilizarán posteriormente en los

métodos para hallar el número ideal de clústeres o valores de K. Estamos hablando

de la inercia y del coeficiente de la silueta.

Inercia

La primera métrica es la inercia. Se calcula como la suma de las distancias al

cuadrado entre los puntos de datos y los centros de los grupos a los que pertenece.

Este valor cuantifica la variación dentro de cada uno de los grupos. La siguiente

ecuación muestra la fórmula de la inercia .

Donde:

▸ n es el número total de puntos.

▸ es el i-ésimo punto de datos.

▸ es el centroide del clúster al que pertenece el punto .

▸ es la distancia euclidiana cuadrada entre el punto y su centroide


correspondiente .

En la Figura 6, se puede observar el cálculo de la inercia para cada valor de k. La

Aprendizaje Automático No Supervisado 12


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

inercia es una medida de que tan compactos están los clústeres. Generalmente

disminuye a medida que aumenta k, pero una disminución de la inercia no garantiza

obtener la mejor agrupación. Así lo podemos observar en la Figura 6, donde el mejor

valor de k es 4 y el valor de la inercia para esta configuración no es el menor valor.

Más adelante combinaremos la inercia con el método del codo, para poder decidir

cuál es el valor óptimo de K.

Figura 6. Diferentes valores de K con su respectivo valor de inercia para un mismo conjunto de datos.

Fuente: elaboración propia.

Como hemos visto anteriormente, la inercia es una función decreciente, a medida

que aumenta k, la inercia disminuye. Asumiendo que K es el número óptimo de

clústeres, tenemos que para k<K la inercia disminuye rápidamente; mientras que

para un k>K la disminución de la inercia va más lenta.

El método del codo consiste en trazar la inercia en función del número de clústeres

y observar el punto en el que la inercia comienza a desacelerarse, formando un

codo. Este punto puede indicarnos que el valor óptimo para K es el punto donde
comienza a formarse el codo (Dutta, 2020). Sin embargo, puede ser un método muy

Aprendizaje Automático No Supervisado 13


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

subjetivo, sobre todo en conjuntos de datos complejos.

En la Figura 7 se puede ver cómo el valor de la inercia va disminuyendo rápidamente

hasta que en k=4 empieza a disminuir, formando un codo en el gráfico.

Figura 7. Método del codo utilizando el valor de la inercia. Fuente: elaboración propia.

Como dato interesante, el método del codo ha sido utilizado para ver en problemas

de lenguaje natural la cantidad óptima de temas en una red social.

Coeficiente de la silueta

La segunda métrica es el coeficiente de la silueta (silhouette coefficient). Nos

muestra un resumen de la variación dentro de un grupo y la variación entre grupos.

Para cada instancia se calcula la distancia al centro del grupo al que pertenece (a

este valor lo denominamos a). Además, calculamos la distancia al segundo mejor

centro del grupo (a este valor lo denominamos b). Cuando hablamos del segundo

mejor grupo hacemos referencia al grupo más cercano y que no es el grupo al que
pertenece el dato. Con los valores a y b aplicamos la siguiente fórmula.

Aprendizaje Automático No Supervisado 14


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En un escenario ideal, la distancia a es muy pequeña en comparación con la

distancia b, y el valor de s es un valor cercano a 1. Si la distancia a y b son similares,

entonces s tiende a 0. Si la agrupación no es lo suficientemente óptima para el

conjunto de datos, la distancia a es mayor que la distancia b y el valor de s es

negativo o cercano a -1.

En la Figura 8 podemos ver que el coeficiente de la silueta más alto es para un valor
de K = 4. Y el valor más bajo lo tenemos para un valor de K = 9, donde a y b son

similares.

Figura 8. Diferentes valores de K con su respectivo coeficiente de la silueta para un mismo conjunto de

datos. Fuente: elaboración propia.

Utilizando el coeficiente de la silueta, visto anteriormente, se utiliza el método de la

silueta para hallar el valor óptimo de k:

▸ Se calcula la puntuación de la silueta para cada punto del conjunto de datos.

▸ Se promedian esos puntos para cada grupo.

Aprendizaje Automático No Supervisado 15


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Se trazan los puntajes promedios para diferentes valores de k.

▸ El valor de K óptimo es aquel en el que la puntuación de la silueta es el promedio

más alto.

En la Figura 9 se puede observar que el valor más alto es para un K=4. Coincide con

el valor obtenido a través del método del codo.

Figura 9. Método de la silueta para obtener el valor óptimo de K. Fuente: elaboración propia.

Estadística de brecha

Es una medida utilizada para evaluar la calidad de los clústeres generados por el

algoritmo K-Means. Esta métrica compara la inercia intra-clúster de un conjunto de

datos con la que se esperaría encontrar en un conjunto de datos aleatorios sin

estructura de clustering, con la inercia de los clústeres generados con los datos

originales (Dutta, 2020).

▸ Dispersión intra-clúster con datos originales: primero se calcula la inercia intra-

clúster de los datos originales utilizando el algoritmo K-Means para diferentes valores

de k. Este valor mide cuán compactos y cohesivos son los clústeres formados por el
algoritmo para cada valor de k.

Aprendizaje Automático No Supervisado 16


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Dispersión intra-clúster con datos aleatorios: se generan varios conjuntos de

datos de referencia aleatorios (también conocidos como conjuntos de datos nulos)


manteniendo la estructura de los datos originales, pero mezclando aleatoriamente
las etiquetas de los puntos. Para cada conjunto de datos de referencia se calcula la
inercia intra-clúster utilizando K-Means.

▸ Cálculo de la brecha: la brecha se calcula como la diferencia entre la inercia intra-

clúster esperada en los datos aleatorios y la inercia intra-clúster observada en los


datos originales. Se promedia esta diferencia sobre todos los conjuntos de datos de
referencia.

▸ Selección del número óptimo de clústeres: el número óptimo de clústeres se

elige el valor de K que maximiza la brecha. En otras palabras, se busca el punto


donde la dispersión intra-clúster observada en los datos reales es menor que la
dispersión de los datos aleatorios.

A pesar de la falta de organización, los datos aleatorios agrupados producen inercias

decrecientes constantemente a medida que k aumenta. Esto es debido a que

cuantos más centros de conglomerados hay, menor es la distancia entre los puntos

de datos y los centroides, lo que produce una disminución de la inercia. Con los
datos originales la inercia varía disminuyendo rápidamente para los valores de k que

están por debajo del valor óptimo de K, después tiende a estabilizarse o disminuye

en menor medida. Cuando se trazan juntas la inercia de los datos observados y

aleatorios, la diferencia puede observarse (Figura 10). En este caso, el número

óptimo de clústeres puede estar entre 3, 4 y 5.

Aprendizaje Automático No Supervisado 17


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 10. Estadística de brecha para obtener el valor óptimo de K. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 18


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.4. Implementar K-Means en Python

En este apartado aplicaremos K-Means al conjunto de datos que podemos encontrar

e n https://www.kaggle.com/datasets/camnugent/california-housing-prices?

resource=download, adaptación del dataset encontrado en


https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html, cuya fuente original es

Statlib (https://lib.stat.cmu.edu/).

El código que presentamos a continuación es una adaptación del artículo de blog:


https://www.datacamp.com/tutorial/k-means-clustering-python.

import numpy as np # operaciones numéricas


import pandas as pd # manipulación y análisis de datos
import matplotlib.pyplot as plt #creación de gráficos
from sklearn.cluster import KMeans # módulo KMeans de scikit-learn
from sklearn.preprocessing import StandardScaler # preprocesamiento
from sklearn.metrics import silhouette_score #Coeficiente silhouette

Leeremos el conjunto de datos y tendremos en cuenta solo las columnas de latitud,

longitud y valor medio del inmueble para nuestro ejercicio.

datos_inmuebles = pd.read_csv('housing.csv', usecols = ['longitude',


'latitude', 'median_house_value'])

Verificamos que no existan valores faltantes.

datos_faltantes = datos_inmuebles.isnull().sum()

# Mostrar el número de valores faltantes por columna


print("Valores faltantes por columna:")
print(datos_faltantes)

Valores faltantes por columna:


longitude 0
latitude 0
median_house_value 0
dtype: int64

Aprendizaje Automático No Supervisado 19


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Ahora utilizamos la biblioteca seaborn para hacer un gráfico de dispersión. Indicando

los valores de los ejes, en este caso utilizaremos latitud y longitud.

Dentro del diagrama de dispersión configuraremos el atributo hue , para asignar una

categoría a los puntos de acuerdo con su valor promedio. El grafico resultante

mostrará los puntos de datos con etiquetas de color. Veamos el código y el resultado.

import seaborn as sns

sns.scatterplot(data = datos_inmuebles, x='longitude', y='latitude', hue =


'median_house_value')

Figura 11. Gráfico de dispersión, indicando valores en los ejes y categoría según valor medio de la

vivienda. Fuente: elaboración propia.

Existen valores de inmuebles de todas las categorías en todas las latitudes y

longitudes. Usaremos normalización o estandarización de valores, debido a que hay

valores como el valor medio de la vivienda que es muy alto y comparado con la

latitud y la longitud.

Creamos una instancia de la clase StandardScaler del módulo de preprocesamiento de

Scikit-learn. Este método calcula la media y la desviación estándar de cada una de

Aprendizaje Automático No Supervisado 20


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

las características, estandariza las variables y garantiza que se tenga un rango y una
varianza similar en todos los atributos. De esta manera evitamos que una de las

características sea más dominante que otra en el algoritmo de K-Means.

#se crea una instancia de StandardScaler para la normalización

escalado=StandardScaler()

#Aplicamos el StandardScaler al DataFrame


#El método 'fit_transform' escala y estandariza los datos
datos_escalados = escalado.fit_transform(datos_inmuebles)

#Se calculan los coeficientes de la silueta para diferentes valores de k

coeficientes_silhoutte = []

#Se crea una iteración sobre cada valor de k de 2 hasta 10

for k in range(2,11):
#Instancia de KMeans
kmeans= KMeans(n_clusters=k)
#trabajamos con los datos escalados
kmeans.fit(datos_escalados)
#Calcular el coeficiente de la silueta
coeficiente=silhouette_score(datos_escalados, kmeans.labels_)
#Agregar el puntaje al vector de coeficientes
coeficientes_silhoutte.append(coeficiente)

#Graficar los coeficientes de la silueta para diferentes valores de k.


plt.plot(range(2,11), coeficientes_silhoutte, marker='o')
plt.xlabel('Número de clusters (k)')
plt.ylabel('Coeficiente de la silueta')
plt.title('Coeficiente de la silueta para diversos valores de k')
plt.show

Aprendizaje Automático No Supervisado 21


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 12. Coeficientes de la silueta para diferentes valores de k. Fuente: elaboración propia.

Analizando los resultados de la Figura 12, el número óptimo de clústeres es 2. Este

es el valor más alto que tenemos y es el valor que nos va a permitir tener grupos bien

diferenciados.

Entrenamos el algoritmo de K-Means con dos clústeres, calculamos los centroides y

asignamos cada punto a un grupo.

#Establecemos el número de grupos (k) en 2.

k=2

#Utilizamos el algoritmo de KMeans con una semilla aleatoria para poder


reproducir el entrenamiento
kmeans1= KMeans(n_clusters=k, init='k-means++', random_state=42)

#Modelamos con los datos escalados


kmeans1.fit(datos_escalados)

# Creamos los grupos y las etiquetas de los centroides

labels= kmeans1.labels_
centroids= kmeans1.cluster_centers_

Aprendizaje Automático No Supervisado 22


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

#Mostramos el gráfico de dispersión


plt.scatter(datos_escalados[:,0], datos_escalados[:, 1], c=labels, s=50,
cmap='viridis')
plt.scatter(centroids[:,0], centroids[:, 1], marker='x', s=200, c='red')
plt.xlabel('longitud')
plt.ylabel('latitud')
plt.title('Centroides de los grupos obtenidos por K-Means')
plt.show()

Figura 13. Clústeres obtenidos con K=2. Fuente: elaboración propia.

En la Figura 13 observamos 2 clústeres bien diferenciados, donde uno de ellos

contiene los inmuebles con latitud alta y longitud baja, y al otro grupo pertenecen los

inmuebles con longitudes altas y latitudes bajas. Ahora comparemos con el método

del codo.

#Función que calcula la inercia para cada valor de k.


def plot_kmeans(dataset, max_k):
inertias = []

for i in range(2, max_k+1):


# Entrenar el modelo de K-Means
kmeans = KMeans(n_clusters=i)
kmeans.fit(dataset)

Aprendizaje Automático No Supervisado 23


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Calcular la inercia
inertia = kmeans.inertia_
inertias.append(inertia)

# Graficar el método del codo


plt.plot(range(2, max_k+1), inertias, marker='o')
plt.title('Método del codo')
plt.xlabel('Número de clusters (K)')
plt.ylabel('Inercia')
plt.show()

# Visualizar el método del codo para diferentes valores de K


plot_kmeans(datos_escalados, max_k=10)

Figura 14. Valores de inercia vs. número de clústeres, método del codo. Fuente: elaboración propia.

En la Figura 14 podemos observar que el codo se crea en K=4. Vamos a entrenar un

modelo con ese valor de k y comparamos los resultados.

#Establecemos el número de grupos (k) en 4.

k=4

#Utilizamos el algoritmo de KMeans con una semilla aleatoria para poder


reproducir el entrenamiento

Aprendizaje Automático No Supervisado 24


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

kmeans2= KMeans(n_clusters=k, init='k-means++', random_state=42)

#Modelamos con los datos escalados


kmeans2.fit(datos_escalados)

# Creamos los grupos y las etiquetas de los centroides

labels= kmeans2.labels_
centroids= kmeans2.cluster_centers_

#Mostramos el gráfico de dispersión


plt.scatter(datos_escalados[:,0], datos_escalados[:, 1], c=labels, s=50,
cmap='viridis')
plt.scatter(centroids[:,0], centroids[:, 1], marker='x', s=200, c='red')
plt.xlabel('longitud')
plt.ylabel('latitud')
plt.title('Centroides de los grupos obtenidos por K-Means')
plt.show()

Figura 15. Clústeres obtenidos con K=4. Fuente: elaboración propia.

En la Figura 15 vemos 4 clústeres, pero no están bien diferenciados. Para este

ejemplo el coeficiente de la silueta nos dio una mejor aproximación del número de

clústeres óptimos.

A continuación, veremos el vídeo Implementación de K-Means en Python.

Aprendizaje Automático No Supervisado 25


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=e273ad18-e29d-
4da6-8e23-b1bd018609c0

Aprendizaje Automático No Supervisado 26


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.5. Ventajas y desventajas del K-Means

A continuación, se listan una serie de ventajas y desventajas que se tiene con este

algoritmo.

Tabla 1. Ventajas y desventajas de K-Means. Fuente: elaboración propia.

A continuación, veremos el vídeo Aplicaciones y casos de estudio.

Accede al vídeo:

Aprendizaje Automático No Supervisado 27


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=7a04fc7e-beeb-
45c7-8cad-b1be00ed52d0

Aprendizaje Automático No Supervisado 28


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.6. Cuaderno de ejercicios

Partiremos de este conjunto de datos de Github


https://github.com/SooyeonWon/customer_analytics_fmcg/blob/main/segmentation%

20data.csv.

Asumimos que somos científicos de datos y vamos a analizar este conjunto de datos

de los clientes de una empresa de bienes de consumo que contiene las siguientes

columnas: sex, marital status, edad, education, income, occupation, settlement size.

La empresa quiere segmentar a los clientes para ayudar al departamento de

marketing para lanzar nuevos productos en función de la segmentación.

Ejercicio 1

Explora, describe y preprocesa los datos para poder aplicar el algoritmo de K-Means.

Solución

▸ Leer el conjunto de datos, explorarlo y describirlo:

import pandas as pd
df= pd.read_csv('segmentation data.csv', index_col = 0)
df.head()
df.describe()
df.info()

▸ Preprocesamiento:

scaler = StandardScaler()
df_std = scaler.fit_transform(df)
df_std = pd.DataFrame(data = df_std,columns = df.columns)

Ejercicio 2

Utiliza la técnica del codo para identificar el mejor número de clústeres o grupos.

Entrena un algoritmo de K-Means con el valor de K encontrado.

Aprendizaje Automático No Supervisado 29


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Solución

wcss = []
for i in range(1,11):
kmeans_pca = KMeans(n_clusters = i, init = 'k-means++', random_state =
42)
kmeans_pca.fit(df_std)
wcss.append(kmeans_pca.inertia_)

plt.figure(figsize = (10,8))
plt.plot(range(1, 11), wcss, marker = 'o', linestyle = '-.',color='red')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.title('K-means Clustering')
plt.show()

kmeans = KMeans(n_clusters = 4, init = 'k-means++', random_state = 42)


kmeans.fit(df_std)
df_segm_kmeans= df_std.copy()
df_std['Segment K-means'] = kmeans.labels_
df_std

Ejercicio 3

Aprendizaje Automático No Supervisado 30


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Utiliza la técnica de estadística de brecha para identificar el mejor número de

clústeres o grupos. Entrena un algoritmo de K-Means con el valor de K encontrado.

Solución

▸ Función para calcular la estadística de la brecha:

from sklearn.cluster import KMeans


from sklearn.metrics import pairwise_distances
import matplotlib.pyplot as plt

def calcular_brecha(datos, n_refs=20, max_k=10):


"""
Calcula la estadística de la brecha para un rango de valores de K.

Parameters:
- datos: matriz de datos normalizados.
- n_refs: número de conjuntos de datos de referencia.
- max_k: número máximo de clústeres a evaluar.

Returns:
- brechas: valores de la brecha para cada K.
"""
shape = datos.shape
# Generar datos de referencia aleatorios
referencias = np.random.random_sample(size=(n_refs, shape[0],
shape[1]))

brechas = []

for k in range(1, max_k + 1):


# Entrenar K-Means con datos originales
kmeans = KMeans(n_clusters=k)
kmeans.fit(datos)
distancias_originales = pairwise_distances(datos,
kmeans.cluster_centers_)
Wk_original = np.sum(np.min(distancias_originales, axis=1)) /
datos.shape[0]

# Calcular Wk para datos de referencia


Wk_referencia = []
for ref in referencias:
kmeans_ref = KMeans(n_clusters=k)
kmeans_ref.fit(ref)
distancias_ref = pairwise_distances(ref,

Aprendizaje Automático No Supervisado 31


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

kmeans_ref.cluster_centers_)
Wk_referencia.append(np.sum(np.min(distancias_ref, axis=1)) /
ref.shape[0])

Wk_ref_promedio = np.mean(Wk_referencia)
brecha = np.log(Wk_ref_promedio) - np.log(Wk_original)
brechas.append(brecha)

return brechas

# Calcular la brecha para valores de K de 1 a 10


brechas = calcular_brecha(datos_escalados, max_k=10)

# Graficar la estadística de la brecha


plt.plot(range(1, 11), brechas, marker='o')
plt.xlabel('Número de clusters (K)')
plt.ylabel('Estadística de la brecha')
plt.title('Estadística de la Brecha para diferentes valores de K')
plt.show()

# Determinar el mejor valor de K


mejor_k = np.argmax(brechas) + 1
print(f"El mejor número de clústeres según la estadística de la brecha es:
{mejor_k}")

Ejercicio 4

Utiliza la técnica de coeficientes de la silueta para identificar el mejor número de

clústeres o grupos. Entrena un algoritmo de K-Means con el valor de K encontrado.

Compara y saca conclusiones sobre cuál es el mejor método para este conjunto de

datos.

Solución

▸ Método de la silueta:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

def plot_silhouette(dataset, max_k):


silhouette_scores = []

Aprendizaje Automático No Supervisado 32


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

for i in range(2, max_k+1):


# Entrenar el modelo de K-Means
kmeans = KMeans(n_clusters=i)
kmeans.fit(dataset)

# Calcular el coeficiente de silueta


silhouette_avg = silhouette_score(dataset, kmeans.labels_)
silhouette_scores.append(silhouette_avg)

# Graficar el coeficiente de silueta


plt.plot(range(2, max_k+1), silhouette_scores, marker='o')
plt.title('Coeficiente de Silueta')
plt.xlabel('Número de clusters (K)')
plt.ylabel('Coeficiente de Silueta')
plt.show()

# Visualizar el coeficiente de silueta para diferentes valores de K


plot_silhouette(df_std, max_k=10)

▸ El mejor método es la técnica de la silueta.

Aprendizaje Automático No Supervisado 33


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

2.7. Referencias bibliográficas

Dutta, I. (2020, octubre 25). Cheat sheet for implementating 7 methods for selecting

the optimal number of clusters in Python. Medium.

https://towardsdatascience.com/cheat-sheet-to-implementing-7-methods-for-
selecting-optimal-number-of-clusters-in-python-898241e1d6ad

Van Der Post, H. y Smith, M. (2023). Unsupervised Machine Learning: with Python.

Reactive Publishing.

Aprendizaje Automático No Supervisado 34


Tema 2. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Segmentación de clientes paso a paso

Raúl Valerio-Statistics. (2023, junio 30). Segmentación de clientes paso a paso:

descubre el RFM y K-Means en acción | Tutorial Python Cluster [Vídeo]. YouTube.

https://www.youtube.com/watch?v=CsXCeOiKRZw

Se detalla paso a paso, desde la preparación de los datos hasta la interpretación de

los resultados de la segmentación.

Aprendizaje Automático No Supervisado 35


Tema 2. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

K-Means clustering

Six Sigma Pro SMART. (2023, agosto 10). K-Means Clustering | K-Means++

Clustering | Cluster Analysis | Data Science [Vídeo]. YouTube.

https://www.youtube.com/watch?v=KgJNIMe4yVc

Es una guía del algoritmo K-Means.

Aprendizaje Automático No Supervisado 36


Tema 2. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

K-Means en R

Raúl Valerio. (2023, junio 23). Clustering en Series de Tiempo: K-Means en R|

Descubre número óptimo con Métodos Silhouette y Elbow [Vídeo]. YouTube.

https://www.youtube.com/watch?v=C64Xyp3X-0U

Explica de forma muy dinámica la diferencia entre estos conceptos.

Aprendizaje Automático No Supervisado 37


Tema 2. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Cuál es el objetivo principal del algoritmo K-Means?

A. Reducir la dimensión de los datos.

B. Dividir un conjunto de datos en grupos similares.

C. Generar reglas de asociación entre variables.

D. Clasificar datos en categorías predefinidas.

2. ¿Qué técnica se utiliza para encontrar el valor óptimo de K en K-Means?

A. Coeficiente de Pearson.

B. Análisis de componentes principales (PCA).

C. Regresión lineal.

D. Coeficiente de la silueta.

3. ¿Cuál es la base del método del codo para encontrar el valor óptimo de K?

A. El análisis de correlación entre variables.

B. La minimización de la distancia intra-clúster.

C. La maximización del índice de Davies-Bouldin.

D. La reducción de la inercia total del modelo.

4. ¿Qué compara la estadística de brecha en K-Means?

A. La dispersión intra-clúster de los datos reales con la esperada en datos

aleatorios.

B. La dispersión inter-clúster de los datos reales con la esperada en datos

aleatorios.

C. La precisión del modelo en datos de entrenamiento con datos de prueba.

D. La dispersión intra-clúster de los datos con la dispersión inter-clúster.

Aprendizaje Automático No Supervisado 38


Tema 2. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Cuáles es una de las ventajas que tiene aplicar el modelo K-Means?

A. La interpretabilidad de los resultados.

B. El alto coste computacional en conjuntos de datos grandes.

C. No requiere especificar el número de clústeres.

D. No es adecuado para datos no lineales.

6. ¿Qué medida se utiliza en el coeficiente de la silueta para evaluar la cohesión y

separación de los clústeres?

A. Entropía.

B. Distancia intra-clúster.

C. Coeficiente de correlación.

D. Distancia inter-clúster.

7. ¿Cuál es la desventaja común de K-Means en la práctica?

A. Sensible a la inicialización de los centroides.

B. Puede manejar fácilmente datos no lineales.

C. Requiere grandes cantidades de memoria.

D. No es escalable para grandes conjuntos de datos.

8. ¿Qué indica un valor del coeficiente de la silueta de -1 en el algoritmo K-Means?

A. Un clúster muy cohesionado.

B. Un punto de datos mal asignado a un clúster.

C. Un clúster con poca separación de otros clústeres.

D. Un clúster con mucha variabilidad.

Aprendizaje Automático No Supervisado 39


Tema 2. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuál es el mejor método para hallar el valor óptimo de K?

A. El método del codo.

B. El coeficiente de la silueta.

C. La estadística de brecha.

D. Ninguno en particular, depende del conjunto de datos.

10. ¿K-Means y KNN son lo mismo?

A. No, pero K-Means y KNN se parecen en que son algoritmos de aprendizaje

supervisado.

B. No, porque K-Means es un algoritmo de aprendizaje no supervisado y KNN

es un algoritmo de aprendizaje supervisado.

C. No, pero K-Means y KNN se parecen en que son algoritmos de aprendizaje

no supervisado.

D. Sí, son el mismo algoritmo.

Aprendizaje Automático No Supervisado 40


Tema 2. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 3

Aprendizaje Automático No Supervisado

Tema 3. Diferentes
implementaciones de K-
Means
Índice
Esquema

Ideas clave

3.1. Introducción y objetivos

3.2. Lloyd’s k-Means

3.3. MacQueen’s K-Means

3.4. Hartingan-Wong K-Means

3.5. Elkan’s K-Means

3.6. Soft K-Means / Fuzzy K-Means

3.7. Cuaderno de ejercicios

3.8. Referencias bibliográficas

A fondo

Ejemplo resuelto del algoritmo de agrupamiento Fuzzy C-


Means

Algoritmo de agrupamiento C-Means

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 3. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.1. Introducción y objetivos

Entre las diversas técnicas disponibles, los algoritmos de K-Means se destacan por

su simplicidad y eficacia en la creación de clústeres a partir de grandes volúmenes

de datos. En este tema, profundizaremos en los diferentes algoritmos de K-Means y

sus variantes, como Lloyd’s, MacQueen’s, Hartigan-Wong, Elkan’s, y Soft K-Means.

Cada uno de estos algoritmos presenta particularidades que los hacen adecuados

para distintos escenarios y tipos de datos. Por ejemplo, mientras que Lloyd’s es el

más simple y fácil de implementar, algoritmos como Elkan’s ofrecen mejoras

significativas en eficiencia mediante la reducción de cálculos de distancia, haciendo

uso de propiedades geométricas avanzadas.

Asimismo, exploraremos el algoritmo de Soft K-Means, que introduce la noción de

pertenencia difusa, permitiendo que los puntos de datos pertenezcan parcialmente a

múltiples clústeres, una técnica invaluable en contextos donde los límites entre

grupos no están claramente definidos.

No solo nos limitaremos a entender la teoría detrás de estos algoritmos, sino que

también pondremos en práctica estos conocimientos mediante la implementación y

análisis de casos de estudio reales. Utilizando herramientas y librerías de Python,

como Scikit-learn y fcmeans, los estudiantes podrán desarrollar conocer técnicas y

analizar cuáles son las ventajas y desventajas de cada uno de los algoritmos vistos.

Los objetivos que nos trazamos en este tema son:

▸ Comprender la teoría detrás de los algoritmos de K-Means y sus variantes. Estudiar

los fundamentos matemáticos y lógicos que sustentan los algoritmos de Lloyd’s,


MacQueen’s, Hartigan-Wong, Elkan’s y Soft K-Means, y entender cómo cada uno
maneja la partición de datos.

▸ Desarrollar habilidades prácticas en la implementación de algoritmos de K-Means.

Aprendizaje Automático No Supervisado 4


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Utilizar Python y librerías como Scikit-learn y fcmeans; los estudiantes

implementarán y compararán diferentes algoritmos de K-Means, aplicándolos a


diversos conjuntos de datos.

▸ Analizar y evaluar la eficiencia y efectividad de diferentes algoritmos de K-Means.

Análisis comparativos para evaluar la convergencia, la eficiencia computacional y la


precisión de los algoritmos en diferentes escenarios.

▸ Aplicar algoritmos de K-Means a problemas reales. Aplicar los algoritmos estudiados

en casos de estudio reales, como la compresión de imágenes, segmentación de


clientes y diagnóstico médico, desarrollando soluciones prácticas y efectivas a
problemas complejos.

Aprendizaje Automático No Supervisado 5


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.2. Lloyd’s k-Means

E l algoritmo de Lloyd, comúnmente conocido como K-means, es un algoritmo de

agrupamiento que particiona un conjunto de datos en K clústeres. Ya vimos en

detalle cómo funcionaba este algoritmo junto con su implementación. Sin embargo, a

modo de referencia, se indican los pasos del algoritmo, así como una posible

implementación genérica en Python.

Algoritmo K-Means:

▸ Inicializa los centroides.

▸ En cada iteración:

• Asigna cada punto al clúster más cercano.

• Calcula nuevos centroides.

• Verifica si los centroides han cambiado significativamente (convergencia).

▸ Finaliza cuando los centroides ya no cambian significativamente o se alcanza el

número máximo de iteraciones.

def kmeans(X, K, max_iters=100, tolerance=1e-4):


# Inicializar los centroides
centroids = initialize_centroids(X, K)

for i in range(max_iters):
# Asignar puntos a los clústeres más cercanos
cluster_labels = assign_clusters(X, centroids)

# Calcular nuevos centroides


new_centroids = update_centroids(X, cluster_labels, K)

# Verificar la convergencia
if np.all(np.abs(new_centroids - centroids) < tolerance):
break

Aprendizaje Automático No Supervisado 6


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

centroids = new_centroids

return centroids, cluster_labels

Aprendizaje Automático No Supervisado 7


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.3. MacQueen’s K-Means

Cuando Lloyd’s actualiza las asignaciones de puntos de datos, no actualiza los

centroides. Esto es un problema porque con cada nueva asignación, el centroide

cambia la posición. Puede que un punto esté asignado erróneamente a un centroide

porque no fue actualizado.

MacQueen intenta solucionar el anterior problema actualizando los centroides con

cada nueva asignación. Esto conlleva más tiempo de cálculo (Wohlenberg, 2021). La

inicialización es la misma que Lloyd’s, en este caso se itera sobre los puntos de

datos, al reasignarlos se vuelven a calcular los centroides asignados. El algoritmo se

repite hasta que ningún punto cambie de grupo asignado, igual que con el algoritmo

Lloyd.

▸ Inicialización de centroides: el ciclo comienza seleccionando aleatoriamente K

puntos como centroides iniciales. Los centroides son puntos que representan el

centro de cada uno de los K grupos que se quieren identificar.

▸ Asignación de puntos a centroides de manera secuencial: para cada punto del

conjunto de datos se calcula la distancia (generalmente distancia Euclidiana) entre


ese punto y cada uno de los centroides. Luego se asigna el punto al centroide más
cercano.

▸ Se recalculan los centroides de los clústeres después de cada asignación como

la media de todos los puntos de datos asignados a cada clúster.

▸ Repetición: los pasos de asignación de centroides y de actualización de centroides

se repiten iterativamente hasta que los centroides dejen de cambiar de manera


significativa o hasta que se alcance un número máximo de iteraciones.

▸ Convergencia: cuando los centroides permanecen constantes entre iteraciones y los

puntos están asignados a los grupos de manera estable, podemos hablar de

Aprendizaje Automático No Supervisado 8


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

convergencia.

Diferencias clave entre Lloyd’s y MacQueen’s K-Means

▸ Lloyd’s actualiza los centroides en pasos discretos, recalculando después de

asignar todos los puntos de datos. En términos de eficiencia, es más eficiente, ya


que se generan actualizaciones en un solo momento. Requiere más iteraciones para
converger debido a su naturaleza de grandes cambios de centroides en cada
iteración.

▸ MacQueen’s actualiza los centroides de manera continua, recalcula el centroide

cada vez que asigna un punto de datos, garantizando que cada punto este asignado
al clúster correcto. Es menos eficiente que Lloyd’s si estamos frente a un gran
conjunto de datos. Si es un conjunto de datos que llega como flujo continuo su
comportamiento es mejor que el algoritmo Lloyd’s. En términos de convergencia,
converge más rápido, ya que el número de iteraciones se ajustan continuamente a
los centroides.

Aprendizaje Automático No Supervisado 9


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.4. Hartingan-Wong K-Means

Tanto Lloyd’s como MacQueen no eligen centroides iniciales eficientes y puede que

el algoritmo no converja a causa de una mala inicialización.

El algoritmo Hartigan-Wong asigna los puntos de datos a los centroides de forma

aleatoria. Luego se calcula cada centroide como la media de los puntos asignados.

Esto resulta en que todos los centroides estén inicialmente en posiciones similares,

lo que reduce la probabilidad de converger a un óptimo local (Slonim, Aharoni y

Crammer, 2013). En consecuencia, un punto de datos puede ser asignado a un

centroide que no es el más cercano; si disminuye la función objetivo, mejora la

calidad total de los grupos.

▸ Inicialización de centroides: el ciclo comienza seleccionando aleatoriamente K

puntos como centroides iniciales.

▸ Al azar se asignan los puntos a un centroide.

▸ Se calcula el centroide como la media de los puntos asignados.

▸ Se repite hasta que exista convergencia o hasta el número máximo de iteraciones.

Diferencias clave entre Hartigan-Wong y Lloyd’s K-Means

▸ Lloyd’s actualiza los centroides después de una asignación completa de puntos a los

clústeres. Hartigan-Wong realiza actualizaciones más frecuentes y locales al

considerar la reubicación de puntos individuales entre clústeres durante las


interacciones.

▸ Hartigan-Wong puede requerir menos iteraciones para converger, ya que optimiza

de manera continua las ubicaciones de los puntos de datos.

▸ Lloyd’s es más simple de implementar y menos complejo computacionalmente.

Hartigan-Wong puede ser más complejo de implementar.

Aprendizaje Automático No Supervisado 10


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Aprendizaje Automático No Supervisado 11


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.5. Elkan’s K-Means

E l algoritmo de Elkan es una variante del algoritmo K-Means; un método de

clustering usado en el aprendizaje automático para particionar un conjunto de datos

en k grupos o clústeres. El algoritmo de Elkan se diseñó para acelerar la

convergencia del K-Means y reducir el número de cálculos de distancia necesarios,

haciéndolo más eficiente.

Principios del algoritmo de Elkan

▸ Reducción de cálculos de distancia: Elkan reduce el número de cálculos de

distancia necesarios utilizando límites superiores e inferiores. Esto se basa en la


observación de que, si sabemos que un punto de datos está cerca de un centroide

particular, podemos evitar calcular la distancia de ese punto a centros de clústeres


lejanos.

▸ Triangle inequality: aprovecha la desigualdad triangular para evitar calcular

distancias innecesarias. La desigualdad triangular establece que, para cualquier


triángulo, la suma de las longitudes de dos lados siempre será mayor o igual que la
longitud del tercer lado.

▸ Actualización eficiente: cada vez que los centroides se actualizan, también se

actualizan los límites superiores e inferiores de las distancias, minimizando los

cálculos futuros.

Pasos del algoritmo de Elkan

▸ Inicializar los centroides de los k clústeres.

▸ Mantener un límite superior y un límite inferior de las distancias de cada punto a los

centroides. Usar estos límites para evitar calcular distancias cuando no es necesario.

▸ Usar los límites para determinar el clúster más cercano a cada punto de datos sin

calcular todas las distancias.

Aprendizaje Automático No Supervisado 12


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Asignar cada punto de datos al clúster más cercano determinado.

▸ Actualización de centroides: calcular los nuevos centroides basados en las

asignaciones actuales de los puntos a los clústeres.

▸ Actualización de límites: actualizar los límites superiores e inferiores de las distancias

después de mover los centroides.

▸ Iteración: repetir los pasos 2 a 5 hasta que los centroides no cambien o se alcance

un número máximo de iteraciones.

Ventajas del algoritmo de Elkan

▸ Eficiencia: reduce el número de cálculos de distancia, lo que puede acelerar el

proceso de convergencia.

▸ Escalabilidad: funciona mejor en grandes conjuntos de datos debido a su

optimización en cálculos de distancia.

Limitaciones

▸ Complejidad adicional: implementar el algoritmo de Elkan es más complejo que el

K-Means estándar.

▸ Sensibilidad a la inicialización: como el K-Means tradicional, la calidad de los

resultados puede depender de la inicialización de los centroides.

Veamos un ejemplo de uso de K-Means para comprimir una imagen.

# Módulos
import matplotlib.pyplot as plt
from matplotlib.image import imread
import pandas as pd
import seaborn as sns
import numpy as np
#from sklearn.datasets.samples_generator import
(make_blobs,make_circles,make_moons)

Aprendizaje Automático No Supervisado 13


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

from sklearn.datasets import make_blobs

X, y = make_blobs(n_samples=100, centers=3, n_features=2, random_state=0)


from sklearn.cluster import KMeans, SpectralClustering
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_samples, silhouette_score

# Leer la imagen
img = imread('DALL·E 2024-06-11 17.26.23Robot.jpg')
img_size = img.shape

# Reshape para que sea bidimensional


X = img.reshape(img_size[0] * img_size[1], img_size[2])

# Correr el algoritmo K-Means


km = KMeans(n_clusters=30)
km.fit(X)

# Use los centroides para comprimir la imagen

X_compressed = km.cluster_centers_[km.labels_]
X_compressed = np.clip(X_compressed.astype('uint8'), 0, 255)

# Reshape X_recovered para tener la misma dimensión que la original

X_compressed = X_compressed.reshape(img_size[0], img_size[1], img_size[2])

# Dibujar la imagen original y la comprimida

fig, ax = plt.subplots(1, 2, figsize = (12, 8))


ax[0].imshow(img)
ax[0].set_title('Original Image')
ax[1].imshow(X_compressed)
ax[1].set_title(‘Comprimir la imagen a 30 colores’)
for ax in fig.axes:
ax.axis('off')
plt.tight_layout();

Figura 1. Compresión de imagen a 30 colores con K-Means. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 14


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Entrenar con el algoritmo Elkan K-Means

km = KMeans(n_clusters=40, algorithm='elkan')
km.fit(X)

# Usar los centroides para comprimir la imagen


X_compressed1 = km.cluster_centers_[km.labels_]
X_compressed1 = np.clip(X_compressed1.astype('uint8'), 0, 255)

X_compressed1 = X_compressed1.reshape(img_size[0], img_size[1],


img_size[2])

# Dibujar la imagen original y la comprimida

fig, ax = plt.subplots(1, 2, figsize = (12, 8))


ax[0].imshow(img)
ax[0].set_title('Imagen original')
ax[1].imshow(X_compressed1)
ax[1].set_title('Imagen comprimida a 40 colores')
for ax in fig.axes:
ax.axis('off')
plt.tight_layout();

Figura 2. Compresión de imagen a 40 colores con Elkan K-Means. Fuente: elaboración propia.

A continuación, veremos el vídeo de Optimización y mejores prácticas en

clustering.

Aprendizaje Automático No Supervisado 15


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=46b607a1-f531-
4aec-b5a1-b1be00e3fb82

Aprendizaje Automático No Supervisado 16


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.6. Soft K-Means / Fuzzy K-Means

Uno de los problemas que tiene el K-Means y de la mayoría de sus

implementaciones, es la sensibilidad a la hora de inicializar los centroides. Una forma

de minimizar este riesgo es inicializando K-Means varias veces y utilizar el valor que

mejor separe a los grupos (Lazyprogrammer.me, 2016). Computacionalmente es

más fácil crear límites difusos que establecer un solo grupo para un punto. Un punto

puede pertenecer a uno o más grupos.

Teniendo en cuenta que la función de coste es sensible al mínimo local, se puede

minimizar la función utilizando membresía difusa para cada clase. Es decir, cada

punto tiene un % de membresía a cada grupo. Por ejemplo, puede ser un 70 % de un

grupo y un 30 % de otro grupo. A continuación, explicamos el algoritmo de

agrupamiento difuso clásico.

Agrupamiento difuso clásico

1. El primer paso es el mismo que el algoritmo clásico de K-Means, inicializar los K

clústeres al azar.

2. Cada punto puede pertenecer a todos los grupos. Mediante el uso de una

función de membresía que está entre 0 y 1, donde 0 indica que el punto está muy

alejado del clúster y 1 está muy cerca al centroide del grupo.

Suponiendo que tenemos dos grupos en los que se van a dividir los datos, si se

inicializa al azar, cada punto se encuentra en ambos grupos con un valor de

membresía. En la siguiente tabla podemos ver los diferentes valores de membresía:

Tabla 1. Valores de la membresía. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 17


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3. Encontrar el centroide: se utiliza la siguiente fórmula para calcular cada uno de

los centroides:

Donde ϒ es el valor de pertenencia difusa del punto de datos y m es el parámetro

de borrosidad al conjunto difuso del dato que generalmente es 2 y xk es el punto.

Los centroides son: (2.21, 6.26) y (4.75,8.06).

4. Calcular la distancia de cada punto a cada uno de los centroides. Calculemos

la distancia del punto (1,5) a los dos centroides:

5. Actualizar el valor de membresía utilizando la siguiente ecuación.

Aprendizaje Automático No Supervisado 18


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Calculamos el valor de membresía a cada centroide del punto (1,5).

6. Repetir los pasos de encontrar el centroide, calcular la distancia y actualizar

el valor de la membresía. Se repite hasta que se obtengan valores constantes para

los valores de membresía o la diferencia sea menor a un valor de tolerancia.

7. Desfuzzificar los valores de membresía obtenidos.

Aplicaciones

La aplicación del clúster difuso es muy amplia. Algunas de sus aplicaciones son las

siguientes:

▸ En segmentación de imágenes ayuda a agrupar imágenes por píxeles con

propiedades similares, como color y textura.

▸ En marketing se pueden identificar para segmentar a los clientes en función de sus

preferencias y comportamientos de compra, permitiendo campañas más

personalizadas.

▸ En diagnóstico médico se pueden agrupar pacientes con síntomas similares y que

pueden tener varios diagnósticos a la vez.

▸ En monitoreo ambiental ayuda a identificar áreas de preocupación ambiental por

contaminación.

▸ En análisis de tráfico identifica áreas donde el flujo de tráfico es similar ayudando a

gestionar y planificar el tráfico.

Aprendizaje Automático No Supervisado 19


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ En evaluación de riesgo se utiliza para cuantificar riesgos de campos como

finanzas, seguros e ingeniería.

Ventajas

El algoritmo de agrupación difusa cuenta con varias ventajas; entre ellas tenemos:

▸ Flexibilidad: permite superponer agrupaciones. Es muy útil cuando los datos tienen

una estructura compleja o cuando los límites de las clases son ambiguas.

▸ Robustez: puede ser más robusta su implementación ante valores atípicos y ruido

de los datos, al permitir una transición gradual entre grupos.

▸ Interpretabilidad: proporciona una comprensión más específica de los datos, y una

representación más detallada de las relaciones entre los puntos de datos.

Desventajas

Encontramos algunos inconvenientes a la hora de implementar los algoritmos de

agrupación difusa:

▸ Complejidad: computacionalmente son más costosos, ya que tiene que calcular el

grado de membresía a cada grupo.

▸ Elegir el número correcto de clústeres y funciones de membresía puede ser todo un

desafío y requerir conocimientos de un experto, además de mucha prueba y error.

A continuación, se puede ver un ejemplo en Python, utilizando la librería de Scikit-

learn y la librería fcmeans:

from fcmeans import FCM


from sklearn.datasets import make_blobs
from matplotlib import pyplot as plt
import seaborn as sns
from seaborn import scatterplot as scatter
import numpy as np
import pandas as pd
from sklearn import datasets

Aprendizaje Automático No Supervisado 20


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

from sklearn.datasets import load_iris

iris=load_iris()
X=iris['data']
y=iris['target']
#Dibujar los datos originales
plt.scatter(X[y==0,0], X[y==0,1], s=80, c='orange', label = 'Iris-setosa')
plt.scatter(X[y==1,0], X[y==1,1], s=80, c='yellow', label = 'Iris-
versicolour')
plt.scatter(X[y==2,0], X[y==2,1], s=80, c='green', label = 'Iris-
virginica')
plt.xlabel('Sepal length)
plt.ylabel('Sepal width')
plt.title(‘Datos originales’)
plt.legend()

Figura 3. Datos del dataset Iris con su clasificación original. Fuente: elaboración propia.

#Entrenar el algoritmo fuzzy K-Means


fcm=FCM(n_clusters=3)
fcm.fit(X)
fcm_centers=fcm.centers
fcm_labels=fcm.u.argmax(axis=1)
f,axes=plt.subplots(1,2,figsize=(11,5))

#Dibujar los puntos y los centroides resultantes.


sns.scatterplot(x=X[:,0], y=X[:,1], ax= axes[0])
sns.scatterplot(x=X[:,0], y=X[:,1], ax= axes[1], hue=fcm_labels)

Aprendizaje Automático No Supervisado 21


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

sns.scatterplot(x=fcm_centers[:,0], y=fcm_centers[:,1], ax=axes[1], marker=


"s", s=200)
plt.show()

Figura 4. Aplicaciones de los clústeres difusos sobre el dataset de Iris. Fuente: elaboración propia.

# Predecir la membresía del clúster para cada punto de datos


cluster_membership = fcm.u.argmax(axis=1)

# Imprimir los centros de los clústeres


print('Centro de clústeres:', fcm_centers)

# Imprima la membresía del clúster para cada punto de datos


print('Membresía de clúster:', cluster_membership)

Figura 5. Centroides y etiquetas dadas por la membresía después de aplicar Fuzzy K-Means. Fuente:

elaboración propia.

En el código primero se importa el dataset de Iris. Después se dibujan los puntos

originales (Figura 3), identificando cada clase con un color. Sin tener en cuenta la

etiqueta original se le aplica un algoritmo de Fuzzy K-Means y posteriormente se

muestran los centroides resultantes (Figura 4). La clasificación realizada no difiere

mucho de la clasificación real. Y, finalmente, imprimimos los puntos donde están

Aprendizaje Automático No Supervisado 22


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

ubicados los centroides y las etiquetas asignadas a cada punto después de aplicar
Fuzzy K-Means (Figura 5).

A continuación, veremos el vídeo Aplicaciones avanzadas de K-Means.

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=04202076-ca31-

40b9-b608-b1be00da113d

Aprendizaje Automático No Supervisado 23


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.7. Cuaderno de ejercicios

Ejercicio 1: exploración y descripción de datos

Implementa el algoritmo Lloyd's K-Means utilizando la librería Scikit-learn en Python.

Usa el dataset de make_blobs con 300 muestras, 3 centros y 2 características.

Grafica los datos originales y los clústeres formados.

Solución

import matplotlib.pyplot as plt


from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

# Generar datos
X, y = make_blobs(n_samples=300, centers=3, n_features=2, random_state=0)

# Implementar K-Means
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

# Graficar resultados
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.show()

Ejercicio 2: flujo de trabajo y retos

Explica las diferencias clave entre los algoritmos Lloyd's y MacQueen's K-Means.

¿En qué escenarios sería preferible usar MacQueen's K-Means?

Solución

Lloyd’s K-Means actualiza los centroides después de asignar todos los puntos,

mientras que MacQueen’s K-Means actualiza los centroides continuamente con cada

nueva asignación. Lloyd’s es más eficiente computacionalmente para grandes

conjuntos de datos estáticos, ya que requiere menos recalculaciones por iteración.

Aprendizaje Automático No Supervisado 24


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

MacQueen’s es preferible en escenarios de datos de flujo continuo, ya que ofrece

una convergencia más rápida al ajustar los centroides de inmediato con cada nuevo

punto de datos.

Ejercicio 3: preprocesamiento de datos

Implementa el algoritmo Elkan's K-Means usando Scikit-learn y compara su eficiencia

con el K-Means estándar en el dataset make_blobs de 1000 muestras, 5 centros y 2

características.

Solución

from sklearn.cluster import KMeans


from sklearn.datasets import make_blobs
import time

# Generar datos
X, _ = make_blobs(n_samples=1000, centers=5, n_features=2, random_state=0)

# K-Means estándar
start = time.time()
kmeans = KMeans(n_clusters=5, algorithm='auto').fit(X)
end = time.time()
print(f"K-Means estándar: {end - start} segundos")

# Elkan's K-Means
start = time.time()
elkan_kmeans = KMeans(n_clusters=5, algorithm='elkan').fit(X)
end = time.time()
print(f"Elkan's K-Means: {end - start} segundos")

Este código muestra que Elkan's K-Means puede ser más eficiente al reducir los

cálculos de distancia, especialmente en conjuntos de datos más grandes.

Ejercicio 4: discretización y codificación de datos categóricos

Describe cómo se podría aplicar Soft K-Means para la segmentación de una imagen

y menciona una ventaja y una desventaja de este método.

Solución

Aprendizaje Automático No Supervisado 25


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Soft K-Means se aplica a la segmentación de imágenes asignando a cada píxel una

pertenencia difusa a varios clústeres en lugar de una asignación rígida. Esto permite

que los píxeles pertenezcan parcialmente a múltiples clústeres, manejando mejor las

transiciones suaves entre regiones de la imagen.

▸ Ventaja: flexibilidad en la asignación de píxeles, lo que resulta en transiciones más

suaves entre regiones.

▸ Desventaja: computacionalmente más costoso debido al cálculo continuo de

pertenencias difusas.

Aprendizaje Automático No Supervisado 26


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

3.8. Referencias bibliográficas

Lazyprogrammer.me. (2016). Unsupervised Machine Learning in Python: Master

Data Science and Machine Learning with Cluster Analysis, Gaussian Mixture Models,

and Principal Components Analysis. Amazon.

Slonim, N., Aharoni, E. y Crammer, K. (2013). Hartigan’s K-means versus Lloyd’s K-

means: is it time for a change? Proceedings of the 23rd International Joint

Conference on Artificial Intelligence, 1677-1684.

Wohlenberg, J. (2021, junio 21). 3 versions of k-Means. Medium.

https://towardsdatascience.com/three-versions-of-k-means-cf939b65f4ea

Aprendizaje Automático No Supervisado 27


Tema 3. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Ejemplo resuelto del algoritmo de agrupamiento


Fuzzy C-Means

Mahesh Huddar. (2023, julio 4). Fuzzy C Means Clustering Algorithm Solved

Example | Clustering Algorithm in ML & DL by Mahesh Huddar [Vídeo]. YouTube.


https://www.youtube.com/watch?v=X7co6-U4BJY

El vídeo discute conceptos clave como el clustering difuso, el algoritmo Fuzzy C-

Means y su aplicación en machine learning y minería de datos. También se explica el

algoritmo C-Means y se compara con el K-Means mediante ejemplos.

Aprendizaje Automático No Supervisado 28


Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Algoritmo de agrupamiento C-Means

Data Science with Sharan. (2021, septiembre 8). Day 70 - Fuzzy C-Means Clustering

Algorithm [Vídeo]. YouTube. https://www.youtube.com/watch?v=VhYt7nxOKKs

Explica en detalle el algoritmo de Fuzzy C-Means, un método de clustering difuso

que permite que un punto de datos pertenezca a más de un grupo con diferentes

grados de pertenencia.

Aprendizaje Automático No Supervisado 29


Tema 3. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Cuál es la principal diferencia entre los algoritmos de Lloyd MacQueen?

A. Lloyd actualiza los centroides de manera continua, mientras que

MacQueen lo hace en pasos discretos.

B. MacQueen actualiza los centroides de manera continua, mientras que

Lloyd lo hace en pasos discretos.

C. Lloyd y MacQueen actualizan los centroides de la misma manera.

D. Lloyd y MacQueen no recalculan los centroides.

2. ¿Cuál de las siguientes afirmaciones es correcta sobre el algoritmo de Hartigan-

Wong?

A. No realiza actualizaciones de centroides.

B. Es menos eficiente que Lloyd en términos de cálculo.

C. Es más simple de implementar que Lloyd.

D. Realiza actualizaciones de centroides más frecuentes y locales.

3. ¿Qué ventaja tiene el algoritmo de Elkan sobre K-Means estándar?

A. No necesita calcular distancias.

B. No necesita inicializar centroides.

C. Usa límites superiores e inferiores para reducir cálculos de distancia.

D. Siempre converge al óptimo global.

4. ¿Cuál es la desventaja del algoritmo de Fuzzy K-Means?

A. No permite superponer agrupaciones.

B. Es menos robusto ante valores atípicos.

C. Computacionalmente es más costoso.

D. No puede manejar conjuntos de datos grandes.

Aprendizaje Automático No Supervisado 30


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Cuál es una ventaja del Fuzzy K-Means respecto al K-Means clásico?

A. Mayor robustez ante valores atípicos y ruido.

B. Menor flexibilidad en la asignación de puntos.

C. Mayor sensibilidad a la inicialización de centroides.

D. Menor interpretación de datos.

6. En el algoritmo de Elkan, ¿qué se actualiza cada vez que se recalculan los

centroides?

A. Solo los límites superiores.

B. Solo los límites inferiores.

C. Los límites superiores e inferiores de las distancias.

D. Ninguna de las anteriores.

7. ¿Cuál es el objetivo principal de la inicialización en los algoritmos de K-Means?

A. Seleccionar puntos que representen el centro de cada clúster.

B. Evitar la convergencia.

C. Asegurar que todos los puntos estén en el mismo clúster.

D. Reducir el número de iteraciones.

8. ¿Qué técnica se utiliza el algoritmo de Elkan para evitar calcular distancias

innecesarias?

A. Inicialización aleatoria.

B. Distancia euclidiana.

C. Desigualdad triangular.

D. Clustering jerárquico.

Aprendizaje Automático No Supervisado 31


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuál es un problema común en la mayoría de las implementaciones de K-

Means?

A. La sensibilidad a la inicialización de los centroides.

B. La interpretación de los resultados obtenidos.

C. La convergencia rápida.

D. La sobreestimación de la cantidad de clústeres.

10. ¿Qué tipo de datos se agrupan en la segmentación de imágenes utilizando

Fuzzy K-Means?

A. Textos con propiedades similares.

B. Píxeles con propiedades similares como color y textura.

C. Puntos de datos sin relación.

D. Palabras con significados similares.

Aprendizaje Automático No Supervisado 32


Tema 3. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 4

Aprendizaje Automático No Supervisado

Tema 4. Agrupamiento
jerárquico
Índice
Esquema

Ideas clave

4.1. Introducción y objetivos

4.2. Tipos de clustering jerárquico

4.3. Implementación en Python

4.4. Comparación entre K-Means y clúster jerárquico

4.5. Cuaderno de ejercicios

4.6. Referencias bibliográficas

A fondo

Una introducción al clustering jerárquico en Python

¿Cómo se analiza el clúster jerárquico en la herramienta


estadística SPSS?

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 4. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.1. Introducción y objetivos

En el universo del aprendizaje no supervisado, el agrupamiento jerárquico surge

como alternativa al algoritmo K-Means. Se caracteriza por construir una jerarquía de

clústeres que pueden ser visualizados a través de un gráfico 2D llamado

dendrograma.

El dendrograma que es nuestro protagonista de este capítulo, es similar a un árbol

que se va dividiendo con base en una secuencia de registros. A diferencia de K-

Means no es necesario conocer el número de grupos que se desean crear,

haciéndolo más flexible.

El clustering jerárquico puede ser aglomerativo o divisivo; veremos cada uno de ellos

en detalle.

En este tema nos planteamos los siguientes objetivos:

▸ Explicar detalladamente qué es el clustering jerárquico y cuál es la diferencia con

otros métodos de clustering.

▸ Definir los dos tipos de clúster jerárquico: divisivo y aglomerativo.

▸ Aprender a interpretar un dendrograma y cómo utilizarlo para hallar el número

óptimo de clústeres.

▸ Estudiar los algoritmos más comunes utilizados para clustering jerárquico y su

implementación en Python.

Aprendizaje Automático No Supervisado 4


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.2. Tipos de clustering jerárquico

E l clustering jerárquico es un algoritmo de aprendizaje no supervisado, agrupa los

datos en jerarquía y de allí su nombre. La jerarquía se representa a través de un

dendrograma o árbol que muestra las relaciones de inclusión de los diferentes

grupos (Van Der Post y Smith, 2023).

Dentro del clúster jerárquico tenemos dos grandes enfoques que trabajaremos de

manera más detallada:

▸ Clustering jerárquico aglomerativo o bottom-up.

▸ Clustering jerárquico divisivo o top-down.

Clustering jerárquico aglomerativo o bottom-up

Descripción

Se denomina aglomerativo porque empieza con grupos muy pequeños hasta formar

un grupo. En este caso, cada punto del conjunto de datos comienza como un clúster

individual, luego se combinan repetidamente en función de su similitud hasta que

todos los puntos hagan parte de un solo clúster o se alcance un criterio de parada.

Proceso

Asumiendo que se tienen un montón de puntos, el funcionamiento es el siguiente

(Dissanayake, 2024):

▸ Primero, cada punto es un grupo en sí mismo. Como se puede ver en la Figura 1.

Aprendizaje Automático No Supervisado 5


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 1. Cada punto es un clúster. Fuente: elaboración propia.

▸ Luego se agrupan o dos puntos o dos grupos o un punto y un grupo cercano.

Aprendizaje Automático No Supervisado 6


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Creando clústeres entre puntos o grupos cercanos. Fuente: elaboración propia.

▸ Se repiten los dos pasos anteriores hasta que todos pertenezcan a un mismo grupo.

Como se puede ver en la Figura 3.

Aprendizaje Automático No Supervisado 7


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 3. Creación de un clúster. Fuente: elaboración propia.

Clustering jerárquico divisivo o top-down

Descripción

Comienza con todos los datos en un solo clúster y se divide recursivamente en

clústeres más pequeños.

Proceso

Aprendizaje Automático No Supervisado 8


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

El método divisivo funciona exactamente al revés del método aglomerativo

(Dissanayake, 2024):

▸ Comienza guardando en un solo grupo todos los puntos.

▸ En la segunda iteración, divide el grupo en dos pequeños grupos, intenta dividir un

grupo más grande en grupos más pequeños.

▸ En la tercera iteración, se divide aún más en grupos más pequeños.

▸ El algoritmo itera hasta que cada punto sea un clúster en sí mismo.

Figura 4. Paso a paso del clúster jerárquico divisivo. Fuente: elaboración propia.

¿Cómo dividir los clústeres?

Rara vez se utiliza el método divisivo, normalmente se usa el aglomerativo. Es más

natural intentar agrupar en función de la similitud o la distancia que intentar dividir

pedazos más pequeños.

Aprendizaje Automático No Supervisado 9


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Las secuencias de los puntos en un grupo se pueden registrar como un árbol y por

eso le llamamos jerarquía. El dendrograma es un árbol que registra la secuencia de

fusiones en el caso del agrupamiento aglomerativo o divisiones en el caso de

agrupamiento divisivo (Prakash, 2023).

Como ya hemos mencionado, este algoritmo no recibe el número de grupos como

hiperparámetros. En este caso, se puede elegir el número de grupos de maneara

visual.

▸ El primer paso es calcular una matriz de proximidad, lo que significa partiendo de los

puntos dados: P1,P2,P3,…,Pn. En la matriz se registran los valores de similitud entre

cada par de puntos.

▸ Se genera un bucle con los siguientes pasos:

• Fusión de los grupos más cercanos y registro del valor de la distancia entre los

grupos en la matriz de proximidad.

• Se ignoran los valores de la diagonal, ya que es el cálculo de la distancia del punto

consigo mismo. Es necesario registrar los valores fuera de la diagonal.

▸ Con las distancias de los diferentes clústeres creados se va creando el

dendrograma, el detalle algorítmico se puede ver en la Figura 5.

Aprendizaje Automático No Supervisado 10


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Aprendizaje Automático No Supervisado 11


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 5. Paso a paso para crear el dendrograma. Fuente: elaboración propia.

▸ Se analizan cada una de las divisiones que se pueden realizar en el dendrograma

para elegir el número de clústeres ideal.

• Vamos a trazar una línea vertical que haga un primer corte en el diagrama. En este
caso se crearían 2 clúster. Uno formado por los puntos P1, P2, P3 y el segundo
formado por los puntos P4, P5 y P6 (ver Figura 6).

Aprendizaje Automático No Supervisado 12


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

• Hagamos otro corte más abajo. En este caso, se crean 4 clústeres o grupos (ver
Figura 7).

• Y un corte más, creando en esta ocasión 6 clústeres Figura 8).

Figura 6. Corte en la parte más alta del dendrograma. Fuente: elaboración propia.

Figura 7. Corte en la parte media del dendrograma. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 13


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 8. Corte en la parte baja del dendrograma. Fuente: elaboración propia.

Figura 9. Análisis del mejor corte del dendrograma para decidir el mejor valor para el número de clústeres.

Fuente: elaboración propia.

Para el ejemplo anterior, el mejor corte es el de 2 clústeres. Debido a que es la

distancia más larga y garantiza la suficiente distancia inter-clúster haciendo que cada

grupo este bien diferenciado.

¿Cómo definimos la similitud inter-clúster? Para dar respuesta a esta pregunta

existen diferentes métodos:

▸ Mínimo o «single linkage algorithm» : es la distancia más corta entre dos puntos

que pertenezcan a los dos grupos. Se mide la distancia entre los puntos más

Aprendizaje Automático No Supervisado 14


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

cercanos de los diferentes grupos (Figura 10). La fortaleza de este método es que

puede manejar formas no elípticas. Y como limitación es que es altamente sensible a


ruido y valores outliers.

Figura 10. Distancia mínima inter-clúster. Fuente: elaboración propia.

▸ Máximo o «complete linkage algorithm»: calcula la distancia máxima entre

cualquier par de puntos que pertenezcan a diferentes grupos. Representa la máxima


disimilitud entre conglomerados e indica la presencia de conglomerados bien
separados, como se puede observar en la Figura 11. Es menos susceptible al ruido.

Aprendizaje Automático No Supervisado 15


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 11. Distancia máxima inter-clúster. Fuente: elaboración propia.

▸ Media-grupal «average linkage»: calcula la distancia promedio entre todos los

pares de puntos de datos que pertenecen a los diferentes grupos. Se obtiene una
medida de disimilitud promedio entre grupos, como se puede observar en la Figura
12. Este método también es menos susceptible al ruido y a los valores atípicos.

Aprendizaje Automático No Supervisado 16


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 12. Distancia media grupal inter-clúster. Fuente: elaboración propia.

▸ Entre-centroides: se calcula el centroide de cada grupo y se calcula la distancia

entre ellos. Como se puede observar en la Figura 13.

Aprendizaje Automático No Supervisado 17


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 13. Distancia entre centroides. Fuente: elaboración propia.

▸ Método Ward: es una técnica de enlace utilizada en el clustering jerárquico

aglomerativo. Su objetivo principal es minimizar la varianza dentro de cada clúster.


Cada punto de datos comienza como un clúster individual. En cada paso, se

seleccionan los dos clústeres cuya fusión resulta en el menor incremento en la suma
total de las varianzas dentro de todos los clústeres. Esta suma se calcula como la
suma de las distancias cuadráticas entre cada punto y el centroide del clúster al que
pertenece. El proceso de fusión se repite hasta que todos los puntos estén en un
solo clúster o se cumpla un criterio de parada específico (por ejemplo, un número
predefinido de clústeres).

Aprendizaje Automático No Supervisado 18


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.3. Implementación en Python

Inspirados en el ejemplo mostrado en el siguiente enlace


https://www.aprendemachinelearning.com/k-means-en-python-paso-a-paso/

construiremos el dendograma de un conjunto de datos que corresponde a un análisis

psicológico de tweets de famosos.

El conjunto de datos tiene los siguientes atributos: grado de apertura, grado de

orden, extraversión, empatía, neuroticismo, número medio de palabras usadas en los

tweets y categoría de actividad laboral.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

dataframe = pd.read_csv(r"analisis.csv")
dataframe.head()

#140 famosos se les hizo un test Basado en una metodología de psicología


conocida como “Ocean: The Big Five”
#OP --> grado de apertura a nuevas experiencias, curiosidad, arte.
#CO --> grado de orden, pulcritud, organización.
#EX --> Extraversión - grado de timidez, soledad o participación ante el
grupo social
#AG --> Agreeableness - grado de empatía con los demás, temperamento
#NE --> Neuroticismo, - grado de neuroticismo, nerviosismo, irritabilidad,
seguridad en sí mismo.
#Wordcount--> número medio de palabras utilizadas en sus tweets.
#Categoría - actividad laboral del usuario (actor, cantante, etc.)

El archivo contiene 9 categorías laborales: actor/actriz, cantante, modelo, tv, series,

radio, tecnología, deportes, política y escritor.

print(dataframe.groupby('categoria').size())
# Como vemos tenemos 34 cantantes, 27 actores, 17 deportistas, 16
políticos,etc.

#Borramos la categoría para no limitar los clústeres.

Aprendizaje Automático No Supervisado 19


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

dataframe.drop(['categoria'],1).hist()
plt.show()

def plot_dendrogram(model, **kwargs):


# Crear una matriz de enlaces y luego se dibuja el dendrograma.

# crear los recuentos de muestras debajo de cada nodo


counts = np.zeros(model.children_.shape[0])
n_samples = len(model.labels_)
for i, merge in enumerate(model.children_):
current_count = 0
for child_idx in merge:
if child_idx < n_samples:
current_count += 1
else:
current_count += counts[child_idx - n_samples]
counts[i] = current_count

linkage_matrix = np.column_stack(
[model.children_, model.distances_, counts]
).astype(float)

# Dibujar el dendograma
dendrogram(linkage_matrix, **kwargs)

from sklearn.cluster import AgglomerativeClustering


from scipy.cluster.hierarchy import dendrogram

model = AgglomerativeClustering(distance_threshold=0, n_clusters=None,


affinity='euclidean')
# affinity: distancia entre instancias

# distance_threshold=0, El umbral de distancia de enlace o por encima del


cual los clústeres no se fusionan.
# n_clusters=None si no se tienen predefinidos el número de clúster
# linkage{‘ward’, ‘complete’, ‘average’, ‘single’}, default=’ward’:
# * Enlace simple (single linkage): La distancia entre dos clusters se
define como la distancia entre los dos puntos más cercanos, uno de cada
cluster.
# * Enlace promedio (average linkage): distancia promedio entre todos los
pares de puntos, uno de cada cluster.
# * Enlace completo (complete linkage): mide la distancia entre dos
clusters basándose en la distancia máxima entre cualquier par de puntos,
tomando el par más lejano.
# * Enlace Ward: se basa en los criterios de minimización de la varianza.
Busca que la varianza total del nuevo clúster sea lo más baja posible.

Aprendizaje Automático No Supervisado 20


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

model = model.fit(X)
plt.title('Clúster Jerárquico')
plot_dendrogram(model, truncate_mode="level")
plt.xlabel("Número de instancias en el nodo.")
# Cutting the dendrogram at max_d
plt.axhline(y=45, c='k')
plt.show()

Figura 14. Dendrograma resultante. Fuente: elaboración propia.

Ahora etiquetamos cada instancia según la división que hemos realizado. Se van a

generar 5 clústeres.

model_1 = AgglomerativeClustering(n_clusters=5, affinity='euclidean')


etiquetas = model_1.fit_predict(X)
# affinity: distancia entre instancias

Generándose etiquetas desde la 0 hasta la 4. Como se puede ver en la Figura 15.

Aprendizaje Automático No Supervisado 21


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 15. Etiquetas a partir del análisis gráfico del dendrograma. Fuente: elaboración propia.

A continuación, veremos el vídeo Implementación de clustering jerárquico en

Python.

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=de6618d3-211d-
4070-a01e-b1be010c35ad

Aprendizaje Automático No Supervisado 22


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.4. Comparación entre K-Means y clúster


jerárquico

Las principales diferencias entre estos dos algoritmos son a nivel de metodología,

número de clústeres, forma de los clústeres, interpretabilidad, escalabilidad y

sensibilización a la inicialización.

Tabla 1. Principales diferencias entre K-Means y clúster jerárquico. Fuente: elaboración propia.

¿Cuándo usar K-Means y cuándo agrupación jerárquica?

▸ K-Means funciona muy bien cuando la separación entre los grupos está bien

Aprendizaje Automático No Supervisado 23


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

definida. Como el algoritmo busca minimizar la suma de cuadrados dentro del grupo;

es muy eficaz identificando grupos compactos o esféricos.

▸ El clúster jerárquico permite explorar las relaciones dentro de los datos en diferentes

niveles de granularidad.

▸ K-Means es computacionalmente más eficiente y puede manejar gran cantidad de

datos. Es ideal para aplicaciones donde la eficiencia es importante.

▸ El clúster jerárquico es adecuado para conjuntos de datos pequeños o medianos.

▸ K-Means requiere el número de clústeres previamente, si se conoce este valor K-

Means puede ser una opción adecuada.

▸ El clúster jerárquico no requiere que el número este predeterminado.

▸ K-Means funciona muy bien con datos numéricos, gracias al manejo de distancias

entre puntos. Es adecuado para variables continuas o atributos que se puedan


representar numéricamente.

▸ El clúster jerárquico es ideal para datos donde existe una estructura jerárquica

natural, como taxonomías biológicas, jerarquías organizacionales o relaciones


genealógicas.

▸ K-Means ayuda a crear prototipos y a realizar análisis exploratorio de datos.

Proporciona información inicial sobre la estructura de los datos y ayuda a formular

una hipótesis y realizar observaciones iniciales.

▸ El clúster jerárquico es visualmente atractivo e informativo. Es útil cuando se desea

explorar y visualizar cómo se agrupan los datos en diferentes niveles de similitud, lo


que puede proporcionar una visión inicial valiosa antes de aplicar otros métodos de
clustering.

▸ Si tiene una idea de donde se pueden inicializar los clústeres, K-Means puede

converger más rápido y producir resultados más precisos.

Aprendizaje Automático No Supervisado 24


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ En el clúster jerárquico, a diferencia de K-Means, no es necesario especificar el

número de clústeres al principio. El dendrograma permite visualizar y decidir el


número óptimo de clústeres.

A continuación, veremos el vídeo Comparación entre K-Means y clustering

jerárquico.

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=b63b42fc-95ba-
4426-9da1-b1be014b0f73

Aprendizaje Automático No Supervisado 25


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.5. Cuaderno de ejercicios

Ejercicio 1

Comparación de métodos

Describe las principales diferencias entre el clustering jerárquico aglomerativo y

divisivo. ¿En qué situaciones crees que es uno mejor que el otro?

Solución

El método aglomerativo comienza con cada punto como un clúster individual y los

fusiona hasta formar un único clúster, mientras que el divisivo comienza con todos

los puntos en un solo clúster y los divide recursivamente. Se puede discutir la

eficiencia computacional y la facilidad de interpretación en diferentes contextos de

datos.

Ejercicio 2

Interpretación de dendrogramas

Dibuja un dendrograma con base en los siguientes puntos dados {2,3,5,8,10,12}.

Describe el proceso de agrupamiento y determina el número óptimo de clústeres a

partir del dendrograma.

Solución

Mostrar un dendrograma donde se fusionan los puntos más cercanos primero (2 y 3,

luego 5, y así sucesivamente) y explicar cómo el corte del dendrograma puede

determinar el número de clústeres óptimos.

Ejercicio 3

Aplicación práctica

Aprendizaje Automático No Supervisado 26


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Implementa un algoritmo de clustering jerárquico aglomerativo en Python utilizando

un conjunto de datos de tu elección. Describe cada paso del proceso, desde la

importación hasta la visualización del dendrograma.

Solución

Un ejemplo sencillo para este punto podría ser el siguiente:

# Import libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

# Import iris data


iris = datasets.load_iris()

iris_data = pd.DataFrame(iris.data)
iris_data.columns = iris.feature_names
iris_data['flower_type'] = iris.target
iris_data.head()

import scipy.cluster.hierarchy as sc
# Plot dendrogram
plt.figure(figsize=(20, 7))
plt.title("Dendrograms")

# Create dendrogram
sc.dendrogram(sc.linkage(iris_X, method='ward'))

plt.title('Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Euclidean distance')

Ejercicio 4

Evaluación de similitud

Explica cómo se puede definir la similitud inter-clúster utilizando métodos single

linkage, complete linkage y average linkaje y proporciona un ejemplo.

Solución

Aprendizaje Automático No Supervisado 27


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Single linkage

Definición: la distancia entre dos clústeres se define como la distancia entre los dos

puntos más cercanos, uno de cada clúster.

Ejemplo:

▸ Clúster A: puntos (1, 2) y (2, 3).

▸ Clúster B: puntos (4, 5) y (6, 7).

Cálculo de distancias entre todos los puntos:

▸ Distancia entre (1, 2) y (4, 5): sqrt((4-1)² + (5-2)²) = sqrt(18) = 4.24.

▸ Distancia entre (1, 2) y (6, 7): sqrt((6-1)² + (7-2)²) = sqrt(50) = 7.07.

▸ Distancia entre (2, 3) y (4, 5): sqrt((4-2)² + (5-3)²) = sqrt(8) = 2.83.

▸ Distancia entre (2, 3) y (6, 7): sqrt((6-2)² + (7-3)²) = sqrt(32) = 5.66.

Single linkage: la distancia mínima es 2.83.

Complete linkage

Definición: la distancia entre dos clústeres se define como la distancia entre los dos

puntos más alejados, uno de cada clúster.

Ejemplo:

▸ Clúster A: puntos (1, 2) y (2, 3).

▸ Clúster B: puntos (4, 5) y (6, 7).

Cálculo de distancias entre todos los puntos:

▸ Distancia entre (1, 2) y (4, 5): sqrt((4-1)² + (5-2)²) = sqrt(18) = 4.24.

Aprendizaje Automático No Supervisado 28


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Distancia entre (1, 2) y (6, 7): sqrt((6-1)² + (7-2)²) = sqrt(50) = 7.07.

▸ Distancia entre (2, 3) y (4, 5): sqrt((4-2)² + (5-3)²) = sqrt(8) = 2.83.

▸ Distancia entre (2, 3) y (6, 7): sqrt((6-2)² + (7-3)²) = sqrt(32) = 5.66.

Complete linkage: la distancia máxima es 7.07.

Average linkage

Definición: la distancia entre dos clústeres se define como el promedio de todas las

distancias entre pares de puntos, uno de cada clúster.

Ejemplo:

▸ Clúster A: puntos (1, 2) y (2, 3).

▸ Clúster B: puntos (4, 5) y (6, 7).

Cálculo de distancias entre todos los puntos:

▸ Distancia entre (1, 2) y (4, 5): sqrt((4-1)² + (5-2)²) = sqrt(18) = 4.24.

▸ Distancia entre (1, 2) y (6, 7): sqrt((6-1)² + (7-2)²) = sqrt(50) = 7.07.

▸ Distancia entre (2, 3) y (4, 5): sqrt((4-2)² + (5-3)²) = sqrt(8) = 2.83.

▸ Distancia entre (2, 3) y (6, 7): sqrt((6-2)² + (7-3)²) = sqrt(32) = 5.66.

Average linkage: el promedio de estas distancias es (4.24 + 7.07 + 2.83 + 5.66) / 4 =

4.95.

Aprendizaje Automático No Supervisado 29


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

4.6. Referencias bibliográficas

Dissanayake, K. (2024, junio 6). Machine Learning Algorithms(14)— K-Means

Clustering andHierarchical Clustering. Medium. https://towardsdev.com/machine-

learning-algorithms-14-k-means-clustering-and-hierarchical-clustering-46acc005057d

Prakash, C. (2023, junio 25). Everything to know about Hierarchical Clustering:

Agglomerative Clustering & Divisive Clustering. Medium.

https://medium.com/@chandu.bathula16/everything-to-know-about-hierarchical-
clustering-agglomerative-clustering-divisive-clustering-badf31ae047

Van Der Post, H. y Smith, M. (2023). Unsupervised Machine Learning: with Python.

Reactive Publishing.

Aprendizaje Automático No Supervisado 30


Tema 4. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Una introducción al clustering jerárquico en


Python

Keita, Z. (2023, enero). An introduction to Hierarchical clustering in Python.

Datacamp. https://www.datacamp.com/es/tutorial/introduction-hierarchical-clustering-
python

Este artículo proporciona los detalles de la agrupación jerárquica y su

implementación en Python.

Aprendizaje Automático No Supervisado 31


Tema 4. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

¿Cómo se analiza el clúster jerárquico en la


herramienta estadística SPSS?

Elías Alvarado. (2023, diciembre 31). Análisis clúster jerárquico en SPSS [Vídeo].

YouTube. https://www.youtube.com/watch?v=jUAVEHXdjUI&t=4s

Elías a través de un ejemplo práctico enseña cómo utilizar el SPSS para crear y

analizar clústeres jerárquicos.

Aprendizaje Automático No Supervisado 32


Tema 4. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué método de clustering jerárquico comienza con todos los puntos en un solo

clúster y los divide recursivamente en clústeres más pequeños?

A. Clustering aglomerativo.

B. Clustering divisivo.

C. K-Means.

D. DBSCAN.

2. ¿Cuál de las siguientes técnicas de enlace calcula la distancia entre dos

clústeres basándose en la distancia mínima entre puntos?

A. Complete linkage.

B. Average linkage.

C. Single linkage.

D. Centroid linkage.

3. ¿Qué representa un dendrograma en el contexto del clustering jerárquico?

A. Un gráfico de dispersión.

B. Una jerarquía de clústeres.

C. Un histograma de frecuencias.

D. Un gráfico de líneas.

4. ¿Cuál es la principal diferencia entre el clustering jerárquico aglomerativo y el

divisivo?

A. El aglomerativo es más rápido que el divisivo.

B. El aglomerativo requiere el número de clústeres previamente establecidos.

C. El divisivo usa técnicas de enlace, mientras que el aglomerativo no.

D. El aglomerativo fusiona los clústeres, mientras que el divisivo los divide.

Aprendizaje Automático No Supervisado 33


Tema 4. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Cuál de las siguientes técnicas de enlace calcula la distancia entre dos

clústeres basándose en la distancia máxima de puntos?

A. Complete linkage.

B. Average linkage.

C. Single linkage.

D. Método Ward.

6. ¿Qué tipos de datos son más adecuados para el clustering jerárquico?

A. Datos con forma esférica.

B. Datos categóricos.

C. Datos con estructuras complejas y arbitrarias.

D. Datos que requieren particionamiento rápido.

7. ¿Cuál es una desventaja del clustering jerárquico comparado con K-Means?

A. No puede manejar datos categóricos.

B. Es computacionalmente más costoso.

C. Requiere el número de clústeres previamente.

D. No proporciona visualización de resultados.

8. En el contexto del clustering jerárquico, ¿qué método de enlace se basa en la

minimización de la varianza?

A. Single linkage.

B. Complete linkage.

C. Average linkage.
D. Método Ward.

Aprendizaje Automático No Supervisado 34


Tema 4. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuál es el principal beneficio de usar el clustering jerárquico sobre K-Means

cuando no se conoce el número de clústeres?

A. Es más rápido.

B. Ofrece una jerarquía de clústeres.

C. Es menos sensible a la inicialización.

D. Maneja mejor los datos categóricos.

10. En el clustering jerárquico, ¿qué se utiliza para representar las relaciones de

inclusión entre diferentes grupos?

A. Gráfico de barras.

B. Diagrama de cajas.

C. Dendrograma.

D. Gráfico de líneas.

Aprendizaje Automático No Supervisado 35


Tema 4. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 5

Aprendizaje Automático No Supervisado

Tema 5. Clustering basado en


densidad DBSCAN
Índice
Esquema

Ideas clave

5.1. Introducción y objetivos

5.2. ¿Por qué DBSCAN?

5.3. Parametrización

5.4. Pasos para seguir con el DBSCAN

5.5. Métricas de evaluación DBSCAN

5.6. Implementación en Python

5.7. Comparación entre DBSCAN y K-Means

5.8. Cuaderno de ejercicios

5.9. Referencias bibliográficas

A fondo

Vídeo explicativo sobre DBSCAN

Tutorial de codificación de DBSCAN en Python

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 5. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.1. Introducción y objetivos

El algoritmo DBSCAN (Density-Based Spatial Clustering of Applications with Noise)

es una técnica de agrupamiento no supervisada ampliamente utilizada en el campo

de la inteligencia artificial y el análisis de datos. Desarrollado por Martin Ester, Hans-

Peter Kriegel, Jörg Sander y Xiaowei Xu en 1996. DBSCAN se destaca por su

capacidad para identificar clústeres de forma arbitraria en conjuntos de datos que

contienen ruido y distribuciones no lineales.

A diferencia de otros algoritmos de agrupamiento, como K-Means, que requieren que

el usuario especifique el número de clústeres, DBSCAN trabaja identificando

regiones densas de puntos y expandiéndose a partir de estos. Utiliza dos parámetros

principales: ε (épsilon), que define el radio de vecindad de un punto, y MinPts, que

determina el número mínimo de puntos necesarios para formar un clúster. Un punto

se considera parte de un clúster si al menos MinPts puntos caen dentro de su radio ε.

Si un punto no cumple con este criterio y no pertenece a ningún clúster, se clasifica

como ruido.

DBSCAN es particularmente útil en aplicaciones donde los datos tienen estructuras

complejas y no se conoce de antemano el número de clústeres. Además, su

capacidad para manejar ruido y su eficiencia con grandes conjuntos de datos lo

hacen ideal para tareas de minería de datos, reconocimiento de patrones y detección


de anomalías.

En este tema, exploraremos en detalle cómo funciona DBSCAN, sus ventajas y

desventajas, y presentaremos casos de uso prácticos que demuestran su

aplicabilidad en el mundo real.

Como objetivos de este tema nos planteamos:

▸ Explicar en detalle los conceptos y mecanismos detrás del algoritmo DBSCAN,

Aprendizaje Automático No Supervisado 4


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

incluyendo la definición de los parámetros ε y MinPts, y cómo estos afectan el


proceso de agrupamiento.

▸ Analizar las ventajas y limitaciones de DBSCAN en comparación con otros

algoritmos de agrupamiento, destacando su capacidad para manejar ruido y su


flexibilidad en la identificación de clústeres de formas arbitrarias.

Aprendizaje Automático No Supervisado 5


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.2. ¿Por qué DBSCAN?

Los métodos basados en K-Means y agrupación jerárquica encuentran grupos que

tienen forma esférica o convexa; es decir, solamente son adecuados para conjuntos

de datos cuyas clases están bien separadas. Otro problema de los algoritmos más

convencionales es que se ven muy afectados por la presencia de ruido o por valores

atípicos.

DBSCAN puede encontrar clústeres de forma arbitraria y compleja. Esto es gracias a

que se basa en el cálculo de la densidad de los puntos para formar un grupo.

Además, supera uno de los grandes obstáculos de los algoritmos que hemos visto y

es que no es necesario especificar o conocer de antemano el número de clústeres.

En su lugar, utiliza dos parámetros ฀ (épsilon), que define la distancia máxima entre

dos puntos para considerarlos vecinos, y MinPts, que es el número mínimo requerido

para formar un clúster.

En la vida real los datos tienen muchas irregularidades, los grupos tienen diferentes

formas, contienen ruido y los valores atípicos son muy comunes. Basándose en la

idea de que un grupo en el espacio de datos es una región contigua de alta densidad

de puntos, separada de otros grupos similares por regiones contiguas de baja

densidad de puntos, DBSCAN tiene la capacidad de identificar puntos de datos que

no pertenecen a ningún clúster, y los etiqueta fácilmente como posible ruido.

Otra característica del DBSCAN es su eficiencia en conjuntos de grandes cantidades

de datos, utilizando sus variantes KD-Trees o R-Trees para buscar vecinos de

manera eficiente.

Aprendizaje Automático No Supervisado 6


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.3. Parametrización

Para utilizar DBSCAN es importante entender y ajustar sus dos parámetros clave:

▸ Épsilon (ϵ): es la distancia máxima entre dos puntos para que se consideren

vecinos el uno del otro. Es decir, si la distancia entre dos puntos es menor o igual a
ϵ se consideran vecinos. Si este valor es muy pequeño, una gran parte de los datos
se considerarán como valor atípico. En cambio, si el valor es muy grande, los grupos
se fusionarán y la mayoría de los puntos de datos estarán en los mismos grupos.

▸ Mínimo número de puntos: el número mínimo de puntos que debe formar un grupo

denso. Como regla general, los mínimos se pueden derivar del número de

dimensiones D en el conjunto de datos como mínimo número de puntos >= D+1. El


valor debe ser elegido, y como sugerencia es que sea 3 como mínimo.

En este algoritmo tenemos tres tipos de puntos de datos:

▸ Punto central: es considerado punto central si tiene más puntos MinPts dentro de

los eps (ϵ).

▸ Punto fronterizo: un punto que tiene menos de MinPts dentro de los eps (ϵ), pero

que está en las proximidades de un punto central.

▸ Ruido o valor atípico: un punto que no es un punto central o un punto fronterizo.

Estos parámetros se pueden ajustar utilizando prueba y error o a través de la gráfica

del codo. También se puede usar la matriz de distancia, de esta forma se pueden

estimar valores razonables.

Aprendizaje Automático No Supervisado 7


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.4. Pasos para seguir con el DBSCAN

Los pasos que sigue el algoritmo son los siguientes:

▸ Encuentra todos los puntos vecinos dentro de eps (ϵ) e identifica los puntos

centrales o visitados con más vecinos teniendo en cuenta el número.

▸ Para cada punto central, si aún no le han asignado grupo, se crea un nuevo grupo.

▸ De manera recursiva encuentra todos los puntos conectados por densidad y

asígnalos al mismo grupo que el punto central. Un punto a y b están conectados por
densidad si existe un punto c que tiene un número suficiente de puntos en sus
vecinos y ambos puntos a y b están dentro de la distancia ϵ. Es un proceso de
encadenamiento; entonces, si a es vecino de c, c es vecino de d y d es vecino de e,

lo que a su vez indica que d es vecino de a, además implica que b es vecino de a.

▸ Repetir con todos los puntos restantes no visitados en el conjunto de datos. Aquellos

puntos que no pertenecen a ningún grupo son considerados ruido o outliers.

Pseudocódigo (GeeksforGeeks, 2023):

DBSCAN(conjunto de datos, eps, MinPts){


# índice de clúster
C = 1
para cada punto no visitado p en el conjunto de datos {
marcar p como visitado
# encontrar vecinos
Vecinos N = encontrar los puntos vecinos de p

si |N|>=Ptos Mínimos:
N = NU N'
si p' no es miembro de ningún grupo:
agregue p' al grupo C

Veamos un ejemplo de aplicación utilizando datos de peso y talla:

Asumamos que hemos recopilado datos de peso y talla de un grupo de personas:

Aprendizaje Automático No Supervisado 8


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 1. Recopilación de datos. Fuente: elaboración propia.

Dibujamos los puntos originales (Figura 1).

Figura 1. Puntos originales de peso y talla. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 9


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Identificación de un punto y sus vecinos. Fuente: elaboración propia.

El punto rojo está cerca de otros seis puntos (Figura 2).

Figura 3. Identificación de varios puntos y sus vecinos. Fuente: elaboración propia.

En la Figura 3 vemos dos puntos que tienen seis puntos cerca y un punto (el número

3) está cerca solo de 1 punto y no hay otros puntos en sus proximidades. Así se

Aprendizaje Automático No Supervisado 10


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

repite el proceso para cada uno de los puntos del conjunto de datos.

En este ejemplo estamos considerando que un punto central debe tener cerca al

menos otros cinco puntos. Sin embargo, debemos tener en cuenta que el número de

puntos cercanos para un punto central está definido por el usuario.

Para el ejemplo de la Figura 3, los puntos 1 y 2 son puntos centrales, pero el punto 3

no lo es, no cumple la condición.

Elegimos aleatoriamente un punto central y lo asignamos al primer grupo como se

puede observar en la Figura 4.

Figura 4. Empezamos a crear un clúster a partir de la elección aleatoria de un punto. Fuente: elaboración

propia.

Luego todos los puntos centrales que están cerca de este primer grupo creado se

unen a él y lo extienden a los otros puntos centrales que están cerca.

Existen puntos cercanos a puntos centrales, pero no cumplen la condición de tener

un número de puntos cercanos. Dichos puntos no pueden unirse al grupo; haciendo

que el grupo no pueda extenderse más.

Aprendizaje Automático No Supervisado 11


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Veamos el código y el resultado de utilizar DBSCAN en este ejemplo:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler

# Generar datos aleatorios


np.random.seed(42) # Fijar la semilla para reproducibilidad
peso = np.random.randint(50, 100, 100)
talla = np.random.randint(150, 200, 100)

# Crear un conjunto de datos combinando peso y talla


X = np.column_stack((peso, talla))

# Escalar los datos


X = StandardScaler().fit_transform(X)

# Aplicar DBSCAN
db = DBSCAN(eps=0.5, min_samples=5).fit(X)
labels = db.labels_

# Número de clusters en los datos, ignorando el ruido si está presente


n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

# Graficar los resultados


unique_labels = set(labels)
colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1,
len(unique_labels))]

# Graficar cada cluster con colores diferentes


for k, col in zip(unique_labels, colors):
if k == -1:
# El color negro es para el ruido.
col = [0, 0, 0, 1]

class_member_mask = (labels == k)

xy = X[class_member_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
markeredgecolor='k', markersize=6)

plt.title(f'Número estimado de clusters: {n_clusters_}')


plt.xlabel('Peso (escalado)')
plt.ylabel('Talla (escalado)')
plt.show()

Aprendizaje Automático No Supervisado 12


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Finalmente, todos los puntos centrales se han asignado a un grupo. Hemos

terminado de crear nuevos grupos (Figura 5).

Figura 5. Resultado final al aplicar DBSCAN a los datos de peso y talla. Fuente: elaboración propia.

Al utilizar DBSCAN, podemos agrupar los datos de manera más precisa y eficiente.

El DBSCAN puede identificar clústeres anidados en grandes dimensiones. DBSCAN

imita la identificación de grupos por las densidades de los puntos en los que se

encuentran los grupos, mientras que los valores atípicos tienden a estar en áreas de

baja densidad.

Aprendizaje Automático No Supervisado 13


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.5. Métricas de evaluación DBSCAN

Veamos dos métricas que nos permiten evaluar y comparar algoritmos de clustering:

índice Rand y la puntuación silueta.

Índice Rand

Este índice mide la similitud entre dos agrupaciones (clústeres) de un conjunto de

datos: una agrupación «predicha» y una agrupación de referencia que puede ser una

agrupación hecha por otro algoritmo de clustering.

El índice Rand se basa en la idea de contar las decisiones de pares correctas y las

incorrectas hechas por el algoritmo de clustering. Se consideran las siguientes cuatro

cantidades:

▸ a: número de pares de puntos que están en el mismo clúster en ambos

agrupamientos (predicho y real).

▸ b: número de pares de puntos que están en clústeres diferentes en ambos

agrupamientos.

▸ c: número de pares de puntos que están en el mismo clúster en el agrupamiento

real, pero en clústeres diferentes en el agrupamiento predicho.

▸ d: número de pares de puntos que están en el mismo clúster en el agrupamiento

predicho, pero en clústeres diferentes en el agrupamiento real.

El índice Rand se calcula usando la siguiente fórmula:

Donde:

▸ a+ba + ba+b es el número total de acuerdos (pares que están en el mismo clúster

Aprendizaje Automático No Supervisado 14


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

en ambos agrupamientos o en diferentes clústeres en ambos agrupamientos).

▸ a+b+c+da + b + c + da+b+c+d es el número total de pares de puntos en el conjunto

de datos.

Interpretación del índice Rand:

▸ Valor de 1: indica una coincidencia perfecta entre los dos agrupamientos.

▸ Valor de 0: indica que no hay acuerdo entre los agrupamientos (esto es

teóricamente posible, pero improbable).

▸ Valor cercano a 1: indica un alto grado de similitud entre los agrupamientos.

▸ Valor cercano a 0.5: indica que la similitud entre los agrupamientos es similar a la

que se esperaría al azar.

Puntuación silueta

La puntuación de silueta mide qué tan similar es un punto a los puntos de su propio

clúster (cohesión) en comparación con los puntos del clúster más cercano

(separación). Se define para cada punto y luego se puede promediar para todos los

puntos en el conjunto de datos.

Cálculo de la puntuación de silueta

Para un punto i:

▸ Cohesión ( ): la distancia promedio entre el punto i y todos los demás puntos en

el mismo clúster.

▸ Separación ( ): la distancia promedio entre el punto i y todos los puntos en el


clúster más cercano diferente del suyo.

La puntuación de silueta para el punto i se define como:

Aprendizaje Automático No Supervisado 15


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Donde:

▸ puede variar entre -1 y 1.

▸ Un valor cercano a 1 indica que el punto está bien agrupado.

▸ Un valor cercano a -1 indica que el punto está mal agrupado.

▸ Un valor cercano a 0 indica que el punto está en el límite entre dos clústeres.

A continuación, veremos el vídeo Comparación de dos algoritmos de clustering

utilizando el índice Rand y puntuación silueta.

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=906d592f-2449-
4f71-aacf-b1be01528d68

Aprendizaje Automático No Supervisado 16


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.6. Implementación en Python

El DBSCAN utiliza el KD-Tree y el R-Tree para optimizar la búsqueda de clústeres.

Vamos a ver cómo construir e implementar un KD-Tree, su aplicación en el algoritmo

DBSCAN para mejorar el rendimiento de la búsqueda de puntos centrales y su

implementación en Python.

KD-Tree

U n KD-Tree (K-Dimensional Tree) es una estructura de datos en forma de árbol

utilizada para organizar puntos en un espacio k-dimensional. Es particularmente útil

para operaciones como la búsqueda de vecinos más cercanos y la agrupación de

datos en algoritmos de aprendizaje automático y minería de datos.

Estructura del árbol

Un KD-Tree es un árbol binario en el que cada nodo representa una partición de los
puntos de datos en el espacio k-dimensional.

Cada nodo tiene una «dimensión de corte» asociada y divide los puntos según su

valor en esa dimensión.

Construcción del KD-Tree

▸ La construcción del KD-Tree es un proceso recursivo.

▸ Comenzamos con todos los puntos y elegimos una dimensión para dividirlos.

▸ Encontramos el punto mediano en esa dimensión y usamos ese punto para dividir el

conjunto de datos en dos subconjuntos: uno con puntos a la izquierda del mediano y
otro con puntos a la derecha.

▸ Recursivamente repetimos el proceso para cada subconjunto, alternando las

dimensiones en cada nivel del árbol (primera dimensión, segunda dimensión, ..., k-

Aprendizaje Automático No Supervisado 17


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

ésima dimensión, y luego volvemos a la primera dimensión).

Búsqueda en el KD-Tree

Para buscar los vecinos más cercanos de un punto dado, navegamos el árbol

comparando el punto con los nodos del árbol y decidiendo si ir a la izquierda o a la

derecha.

Podemos podar (descartar) ramas del árbol que no pueden contener un vecino más

cercano que el mejor encontrado hasta ahora, reduciendo así el número de

comparaciones necesarias.

Supongamos que tenemos un conjunto de puntos en un espacio 2D (x, y):

▸ Primera división (dimensión x):

• Ordenamos los puntos por la coordenada x.

• Elegimos el punto mediano (mediano en x) como la raíz del árbol.

• Los puntos a la izquierda del mediano se convertirán en el subárbol izquierdo y los


puntos a la derecha en el subárbol derecho.

▸ Segunda división (dimensión y):

• En el nivel siguiente, ordenamos los puntos en cada subárbol por la coordenada y.

• Elegimos el punto mediano en y para dividir nuevamente los puntos en subárboles


izquierdo y derecho.

▸ Continuamos recursivamente:

• Alternamos las dimensiones x y y en cada nivel del árbol.

Si tenemos los siguientes puntos: (3, 6), (17, 15), (13, 15), (6, 12), (9, 1),

(2, 7), (10, 19).

Aprendizaje Automático No Supervisado 18


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Ordenamos los puntos teniendo en cuenta la coordenada X: (2, 7), (3, 6),

(6, 12), (9, 1), (10, 19), (13, 15), (17, 15).

Primera división (x):

Mediana en x: (9, 1).

Raíz: (9, 1).

Izquierda: (3, 6), (2, 7), (6, 12)

Derecha: (10, 19), (13, 15), (17, 15).

Ordenamos los puntos teniendo en cuenta la coordenada Y del subárbol

izquierdo que obtuvimos con la coordenada x: (3, 6), (2, 7), (6, 12).

Primera división (y):

Mediana en x: (2,7).

Raíz: (2, 7).

Izquierda: (3, 6)

Derecha: (6,12).

Y así sucesivamente alternando las dimensiones x y y en cada nivel del

árbol.

Ventajas del KD-Tree

▸ Eficiencia en búsquedas: reduce el número de comparaciones necesarias para

buscar puntos cercanos.

Desventajas

Aprendizaje Automático No Supervisado 19


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Desequilibrio: si los datos no están distribuidos uniformemente, el árbol puede

volverse desequilibrado, afectando el rendimiento.

▸ Actualizaciones: insertar o eliminar puntos puede requerir la reconstrucción del

árbol.

Una de las partes críticas del algoritmo DBSCAN es la consulta de vecindad:

determinar los puntos que están dentro de un cierto radio (eps) de un punto dado.

Este proceso puede ser computacionalmente costoso, especialmente para grandes

conjuntos de datos, debido a la necesidad de calcular distancias entre muchos pares

de puntos.

El Kd-Tree se puede utilizar para acelerar estas consultas de vecindad. En lugar de

comparar cada punto con todos los demás para encontrar vecinos dentro del radio

eps, se puede utilizar el Kd-Tree para reducir significativamente el número de

comparaciones necesarias.

R-Tree

E l R-Tree es una estructura de datos en forma de árbol utilizada para indexar

información espacial o multidimensional. Es particularmente útil para realizar

consultas espaciales eficientes, como encontrar todos los objetos dentro de una

región dada. A diferencia de otros árboles, como el KD-Tree, el R-Tree está diseñado

para manejar datos que no solo se representan como puntos, sino también como

objetos de mayor dimensión (rectángulos, polígonos, etc.).

Estructura del árbol

Un R-Tree está compuesto por nodos que contienen un número variable de entradas.

Cada entrada en un nodo no hoja es un par formado por un identificador de nodo hijo

y el MBR (Minimum Bounding Rectangle) de todos los objetos contenidos en ese

nodo hijo.

Aprendizaje Automático No Supervisado 20


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Las hojas del árbol contienen las entradas reales, que son los MBR de los objetos

almacenados.

Minimum Bounding Rectangle (MBR)

Un MBR es el rectángulo más pequeño que puede contener un conjunto de objetos

en el espacio.

Cada nodo del R-Tree almacena el MBR de sus hijos, proporcionando una jerarquía
de MBRs que permite la indexación eficiente.

Construcción

▸ Los datos se insertan en el R-Tree uno a uno.

▸ Durante la inserción, se elige la hoja que requerirá la menor expansión de su MBR

para incluir el nuevo objeto.

▸ Si una hoja excede su capacidad, se divide en dos nuevas hojas, y se ajustan los

MBRs de los nodos padre.

Consultas

Las consultas pueden buscar todos los objetos dentro de un MBR dado o encontrar

el vecino más cercano.

La estructura del árbol permite que muchas ramas se podan durante la búsqueda,

reduciendo significativamente el número de comparaciones.

Ventajas

▸ Eficiencia en búsquedas espaciales: el R-Tree permite realizar búsquedas

espaciales de manera eficiente, reduciendo el número de comparaciones

necesarias.

▸ A diferencia del KD-Tree, el R-Tree puede manejar objetos de diferentes tamaños y

Aprendizaje Automático No Supervisado 21


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

formas, no solo puntos.

Desventajas

▸ La implementación y ajuste del R-Tree pueden ser más complejos que otras

estructuras de datos.

▸ En ciertos casos, el rendimiento puede verse afectado si los MBRs de los nodos

superiores tienen mucha superposición.

¿Cómo funciona el KD-Tree y el R-Tree con DBSCAN?

▸ Construimos un KD-Tree o un R-Tree a partir del conjunto de datos. Esto organiza

los puntos de manera que las consultas espaciales sean más eficientes.

▸ Para cada punto en el conjunto de datos, en lugar de calcular la distancia a todos los

otros puntos, utilizamos el árbol generado por el KD-Tree o el R-Tree para encontrar

rápidamente todos los puntos dentro del radio eps.

▸ El KD-Tree y R-Tree permiten búsquedas eficientes en el espacio, lo que reduce el

número de comparaciones y, por lo tanto, acelera el proceso de encontrar vecinos.

▸ Una vez que tenemos los vecinos, el algoritmo DBSCAN puede clasificar el punto

actual como parte de un clúster, expandir el clúster o marcar el punto como ruido,
según corresponda.

Veamos un ejemplo de implementación en Python con KD-Tree:

import numpy as np
from sklearn.cluster import DBSCAN
from sklearn.neighbors import KDTree
import matplotlib.pyplot as plt

# Generamos datos de ejemplo


np.random.seed(0)
n_points_per_cluster = 250
C1 = [-5, -2] + .8 * np.random.randn(n_points_per_cluster, 2)
C2 = [4, -1] + .1 * np.random.randn(n_points_per_cluster, 2)

Aprendizaje Automático No Supervisado 22


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

C3 = [1, -2] + .2 * np.random.randn(n_points_per_cluster, 2)


C4 = [-2, 3] + .3 * np.random.randn(n_points_per_cluster, 2)
X = np.vstack((C1, C2, C3, C4))

# Creamos un árbol KD
tree = KDTree(X, leaf_size=30)

# Configuramos DBSCAN con los parámetros deseados y el árbol KD


db = DBSCAN(eps=0.3, min_samples=10, algorithm='kd_tree', leaf_size=30)
db.fit(X)

# Obtenemos las etiquetas de los clusters


labels = db.labels_

# Número de clusters en los datos, ignorando ruido si hay (-1).


n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)

print(f'Número estimado de clusters: {n_clusters}')


print(f'Número estimado de puntos de ruido: {n_noise}')

# Visualizamos los resultados


unique_labels = set(labels)
colors = [plt.cm.Spectral(each)
for each in np.linspace(0, 1, len(unique_labels))]
for k, col in zip(unique_labels, colors):
if k == -1:
# Negro se utiliza para ruido en la visualización.
col = [0, 0, 0, 1]

class_member_mask = (labels == k)

xy = X[class_member_mask &amp; ~np.isnan(X).any(axis=1)]


plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
markeredgecolor='k', markersize=6)

plt.title(f'Número estimado de clusters: {n_clusters}')


plt.show()

Aprendizaje Automático No Supervisado 23


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 6. Resultado final al aplicar DBSCAN utilizando KD-Tree. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 24


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.7. Comparación entre DBSCAN y K-Means

En la Tabla 2 vemos las diferencias entre DBSCAN y K-Means:

Tabla 2. Diferencias entre DBSCAN y K-Means. Fuente: basado en GeeksforGeeks, 2023.

A continuación, veremos el vídeo DBSCAN: aplicaciones avanzadas y

optimización en Python.

Aprendizaje Automático No Supervisado 25


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=5f972c9e-00bc-
4478-a1c6-b1be015c8563

Aprendizaje Automático No Supervisado 26


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.8. Cuaderno de ejercicios

Ejercicio 1. Conceptos básicos

Explica en tus propias palabras qué es el algoritmo DBSCAN y cuáles son sus

principales ventajas en comparación con otros algoritmos de clustering como K-

Means. Asegúrate de mencionar al menos tres ventajas clave y dar ejemplos de


situaciones en las que DBSCAN sería más adecuado que K-Means.

Solución

El alumno debería explicar que DBSCAN (Density-Based Spatial Clustering of

Applications with Noise) es un algoritmo de clustering que agrupa puntos de datos en

función de la densidad de puntos en una región.

Ventajas:

▸ No requiere especificar el número de clústeres: a diferencia de K-Means, que

necesita que se defina el número de clústeres antes de ejecutarse.

▸ Forma arbitraria de clústeres: puede identificar clústeres de cualquier forma, no solo

esféricos como K-Means.

▸ Manejo del ruido: DBSCAN puede detectar y manejar ruido y valores atípicos,

etiquetándolos como ruido en lugar de forzarlos a un clúster.

Ejercicio 2. Parametrización

Describe los dos parámetros principales de DBSCAN, épsilon (฀) y MinPts, y explica
cómo afectan al resultado del clustering. Proporciona un ejemplo de cómo ajustar

estos parámetros en un conjunto de datos específico.

Solución

฀ es la distancia máxima entre dos puntos para que se consideren vecinos. Si ฀ es

Aprendizaje Automático No Supervisado 27


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

muy pequeño, muchos puntos serán considerados ruido. Si es muy grande, clústeres

diferentes pueden fusionarse.

MinPts es el número mínimo de puntos que debe tener una región para ser

considerada un clúster denso. Por ejemplo, en un conjunto de datos de dos

dimensiones, MinPts debería ser al menos 3 o 4. Ajustar estos parámetros puede

implicar el uso de una gráfica de distancia para encontrar un buen valor de ฀ y

establecer MinPts basado en el conocimiento del dominio.

Ejercicio 3. Implementación DBSCAN en Python

Describe los pasos básicos para implementar el algoritmo DBSCAN en Python

utilizando la biblioteca Scikit-learn. Incluye un breve código de ejemplo y explica cada

parte del código.

Solución

▸ Importar las bibliotecas necesarias: numpy , matplotlib , sklearn.cluster.DBSCAN .

▸ Generar o cargar el conjunto de datos.

▸ Preprocesar los datos: normalización o estandarización.

▸ Aplicar el algoritmo DBSCAN: configurar los parámetros ϵ y MinPts.

▸ Visualizar los resultados: graficar los clústeres identificados.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler

# Generar datos aleatorios


np.random.seed(42)
X = np.random.rand(100, 2)

# Escalar los datos


X = StandardScaler().fit_transform(X)

Aprendizaje Automático No Supervisado 28


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Aplicar DBSCAN
db = DBSCAN(eps=0.3, min_samples=5).fit(X)
labels = db.labels_

# Graficar los resultados


plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.show()

Ejercicio 4. Evaluación de clustering con DBSCAN

Explica cómo se puede evaluar la calidad de un clustering realizado con DBSCAN

utilizando la puntuación de la silueta y la puntuación de Rand. Proporciona ejemplos


de cómo interpretar estos valores en un conjunto de datos.

Solución

La silueta mide la cohesión y separación de los clústeres, con valores que van de -1

a 1. Una puntuación cercana a 1 indica clústeres bien definidos. La puntuación de

Rand compara la similitud entre las agrupaciones generadas y una verdad conocida,

con valores entre 0 y 1. Un valor superior a 0.9 indica un modelo muy bueno.

Ejemplo de interpretación: si la puntuación de la silueta es 0.75 y la puntuación de

Rand es 0.85, se puede concluir que el clustering es de alta calidad, con buena

separación entre clústeres y consistencia con las etiquetas reales, si existen.

Aprendizaje Automático No Supervisado 29


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

5.9. Referencias bibliográficas

GeeksforGeeks. (2023, mayo 23). Agrupación DBSCAN en ML | agrupación basada

en densidad. https://www.geeksforgeeks.org/dbscan-clustering-in-ml-density-based-

clustering/

Aprendizaje Automático No Supervisado 30


Tema 5. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Vídeo explicativo sobre DBSCAN

StatQuest with Josh Starmer. (2022, enero 10). Clustering with DBSCAN, Clearly

Explained!!! [Vídeo]. YouTube. https://www.youtube.com/watch?v=RDZUdRSDOok

Este vídeo ofrece una explicación clara y detallada del algoritmo DBSCAN,

abordando sus conceptos básicos, cómo funciona y ejemplos prácticos de

implementación en Python.

Aprendizaje Automático No Supervisado 31


Tema 5. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Tutorial de codificación de DBSCAN en Python

Greg Hogg. (2022, agosto 22). DBSCAN Clustering Coding Tutorial in Python &

Scikit-Learn [Vídeo]. YouTube. https://www.youtube.com/watch?v=VO_uzCU_nKw

Este tutorial se centra en la implementación práctica del algoritmo DBSCAN

utilizando Python y la biblioteca Scikit-learn. Cubre desde la configuración de los

parámetros hasta la visualización de los resultados, proporcionando una guía paso a

paso.

Aprendizaje Automático No Supervisado 32


Tema 5. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué significa DBSCAN?

A. Density-Based Spatial Clustering of Applications with Noise.

B. Data-Based Spatial Clustering Algorithm.

C. Density-Balanced Spatial Clustering Algorithm.

D. Distance-Based Spatial Clustering of Applications with Noise.

2. ¿Cuál de los siguientes parámetros es clave en DBSCAN?

A. K.

B. Épsilon (ϵ).

C. Sigma (σ).

D. Alpha (α).

3. ¿Qué tipo de clústeres puede identificar el DBSCAN?

A. Solamente esféricos.

B. Solamente convexos.

C. De cualquier forma.

D. Solamente cóncavos.

4. ¿A qué hace referencia el parámetro MinPts?

A. El número mínimo de puntos en el dataset.

B. El número mínimo de clústeres.

C. El número mínimo de puntos para formar un clúster denso.

D. La distancia mínima entre dos puntos.

Aprendizaje Automático No Supervisado 33


Tema 5. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Qué ocurre si el valor de épsilon (ϵ) es muy pequeño?

A. Todos los puntos se considerarán clústeres.

B. La mayoría de los puntos serán considerados ruido.

C. Todos los puntos se unirán en un solo clúster.

D. Se formarán clústeres de forma esférica.

6. ¿Cómo se denomina un punto que tiene menos de MinPts dentro de la distancia

ϵ pero que está cerca de un punto central?

A. Punto central.

B. Punto de ruido.

C. Punto aislado.

D. Punto fronterizo.

7. ¿Cuál es una ventaja importante de DBSCAN frente a K-Means?

A. Requiere menos parámetros.

B. Identifica clústeres de forma esférica.

C. Es más rápido.

D. No necesita especificar el número de clústeres de antemano.

8. ¿Qué métrica de evaluación se puede usar para evaluar la calidad de un

clustering con DBSCAN?

A. Puntaje de la silueta.

B. Error cuadrático medio.

C. Puntaje de Z-Score.

D. Prueba t de Student.

Aprendizaje Automático No Supervisado 34


Tema 5. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. En el contexto de DBSCAN, ¿para qué se utiliza un KD-Tree?

A. Acelerar la búsqueda de vecinos.

B. Reducir el número de puntos en el dataset.

C. Mejorar la precisión del clustering.

D. Aumentar el número de clústeres.

10. ¿Qué hace DBSCAN con los puntos que no pertenecen a ningún clúster?

A. Los redistribuye a clústeres existentes.

B. Los etiqueta como ruido.

C. Los elimina del dataset.

D. Los marca como puntos centrales.

Aprendizaje Automático No Supervisado 35


Tema 5. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 6

Aprendizaje Automático No Supervisado

Tema 6. Técnicas lineales.


Análisis de componentes
principales (PCA)
Índice
Esquema

Ideas clave

6.1. Introducción y objetivos

6.2. ¿Qué es PCA?

6.3. ¿Por qué PCA simplifica los datos para el clustering?

6.4. Ventajas y desventajas de PCA

6.5. ¿Cómo evaluar y mejorar PCA?

6.6. Implementación en Python

6.7. Cuaderno de ejercicios

6.8. Referencias bibliográficas

A fondo

Vídeo explicativo sobre PCA

Diferencia entre análisis factorial (FA) y análisis de


componentes principales (PCA)

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 6. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.1. Introducción y objetivos

En el análisis de datos, simplificar la información es una tarea compleja, pero a la vez

clave para obtener información útil. El análisis de componentes principales

(Principal Component Analysis - PCA) es una herramienta eficaz que ayuda a

descubrir estructuras ocultas en grandes conjuntos de datos. No es un simple

algoritmo matemático, es una técnica estadística utilizada en aprendizaje automático

no supervisado que permite reducir la dimensionalidad, ver patrones y relaciones en

los datos que de otra forma no se podría observar.

Esta técnica es esencial para simplificar la información y mejorar la eficiencia en

diversas aplicaciones, desde la compresión de imágenes hasta la bioinformática y el

análisis financiero (Ma y Dai, 2011; Boutsidis, Mahoney y Drineas, 2008; Xie y Yu,

2021).

Como objetivos de este tema nos planteamos:

▸ Explicar detalladamente los conceptos y mecanismos detrás del algoritmo PCA,

incluyendo la estandarización de datos, la matriz de covarianza, y el cálculo de


valores y vectores propios.

▸ Demostrar cómo la aplicación de PCA puede simplificar los datos y mejorar la

efectividad de los algoritmos de clustering, a través de ejemplos prácticos y


ejercicios en Python.

Aprendizaje Automático No Supervisado 4


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.2. ¿Qué es PCA?

Vamos a imaginarnos que queremos tomar una foto a la Sagrada Familia de

Barcelona. Queremos capturar su esencia, su diseño único y su construcción

prolongada, pero después de muchos intentos, vemos que es imposible. Lo que

podemos hacer es buscar un buen ángulo que muestre sus mejores características.

Principal Component Analysis (PCA) o análisis de componentes principales examina

los datos complejos y multidimensionales para encontrar las perspectivas que nos

den la mayor cantidad de información sobre los datos. Resalta los patrones más

importantes y reduce aquellos menos importantes.

El objetivo de PCA es reducir la dimensionalidad de los datos; ayuda a simplificar

los datos en un conjunto más pequeño denominado «de componentes principales».

Los componentes principales son variables que se construyen como combinación

lineal de las variables originales, intentando capturar la máxima variación o

información del conjunto de datos.

La varianza de los datos es como la diversidad de información. Una varianza alta es

un indicador de que tiene una amplia gama de valores, lo que posiblemente indica

una fuente rica en información. Entonces, PCA lo que hace es buscar direcciones

donde esa variación sea máxima. Para elegir el primer componente principal, se

intenta representar en una variable la mayor varianza posible. El segundo


componente es independiente del primero; captura al igual que el primero la mayor

varianza posible. Y así se crea cada uno de los componentes, reduciendo la

dimensionalidad.

Estructura matemática de PCA

Comenzamos con un conjunto de datos generalmente grande; representado como

una matriz donde las filas representan las observaciones y las columnas

corresponden a los atributos o características. El algoritmo sigue estos pasos:

Aprendizaje Automático No Supervisado 5


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Estandarización de datos

Recordemos que lo que hace la estandarización es centrar los datos. Se resta la

media y se divide por la desviación estándar cada uno de los datos. Así

garantizamos que todas las características tengan la misma importancia.

Matriz de covarianza

Es una matriz cuadrada que describe la variabilidad conjunta de dos variables. Para

un conjunto de datos con n características, la matriz de covarianza será de tamaño

. La matriz de covarianza es el corazón del algoritmo PCA. Podemos pensar en

la matriz de covarianza como una tabla que responde a la pregunta cuando una

variable aumenta, ¿qué sucede con las demás? Los valores positivos indican una

relación positiva (es decir, aumentan juntos), los valores negativos indican una

relación negativa y cero indica que no hay relación.

Cálculo de valores y vectores propios

Un vector propio o vector característico es un vector que cuando se transforma

mediante una matriz solo se escala por un factor, conocido como el valor propio que

representa la cantidad de varianza explicada por cada vector propio, a esto le

llamaremos componente principal.

▸ Valores propios (eigenvalues): indica cuánto estira o encoge un vector cuando se

aplica una transformación lineal representada por una matriz.

▸ Vectores propios (eigenvectors): son vectores que cuando se aplica una

transformación lineal solo cambian en magnitud, no en dirección. Es donde la magia


de PCA comienza a desarrollarse. Cada vector propio representa un componente.
Lo interesante de estos vectores es que están orientados hacia donde los datos
varían más.

La relación matemática entre una matriz , un vector propio y su valor propio

Aprendizaje Automático No Supervisado 6


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

se expresa a través de la siguiente ecuación:

Aplicamos la matriz al vector y el resultado es el vector escalado por .

Figura 1. Vectores propios dibujados sobre un gráfico de dispersión. Fuente: elaboración propia.

Ordenar valores y vectores propios

Para poder identificar los componentes principales, se deben ordenar los valores

propios de forma descendente, de tal manera que mayor valor sea el primero de la

lista.

Seleccionar los componentes principales

Se seleccionan los vectores propios con mayor valor propio. El primer componente

principal corresponde al vector propio con el valor propio más grande, explicando la

mayor varianza existente en el conjunto de datos. El segundo componente principal

corresponde al vector propio con el segundo valor propio más grande, y así

sucesivamente. Los componentes principales son ortogonales, lo que significa que

Aprendizaje Automático No Supervisado 7


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

no están correlacionados. El resultado es una matriz que proyecta los datos

originales en un espacio de menor dimensión, reduciendo el conjunto de datos.

El análisis de componentes principales (PCA) no solo destaca por su elegancia

matemática, sino que también se presenta como una herramienta esencial y eficaz

para solucionar problemas reales.

Aprendizaje Automático No Supervisado 8


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.3. ¿Por qué PCA simplifica los datos para el


clustering?

Cuando tenemos un conjunto de datos de alta dimensionalidad, sufrimos la maldición

de la dimensionalidad. A medida que aumenta el número de dimensiones

(características o variables) en un conjunto de datos, pueden ocurrir varios

fenómenos complejos:

▸ Escasez de datos: los puntos de datos tienden a estar más dispersos. Esto significa

que para mantener la misma densidad de datos que en espacios de menor


dimensión, se necesitarían más datos, lo cual rara vez es posible.

▸ Grandes distancias entre datos: la distancia entre puntos de datos tiende a

aumentar y las diferencias entre las distancias se vuelven menos pronunciadas. Esto

puede dificultar la identificación de patrones y la agrupación de datos.

▸ Relevancia de las variables: es probable que muchas dimensiones o atributos

sean ruidosas o irrelevantes, complicando la aplicación de modelos o reduciendo su


rendimiento.

▸ Problemas computacionales: el procesamiento y análisis de datos en alta

dimensión suele ser costoso en términos de tiempo y recursos computacionales. Los


algoritmos que funcionan bien en baja dimensión pueden volverse ineficientes o
ineficaces en alta dimensión.

PCA reduce la dimensionalidad al proyectar los datos en nuevos espacios de

dimensiones, facilitando la visualización, la eliminación de ruido y las redundancias.

Al trabajar con un conjunto de datos de menor dimensionalidad, la complejidad

computacional se reduce, se tienen procesamientos más rápidos y menor exigencia

en recursos computacionales. Los datos a menudo vienen con ruido, variaciones que

no son de interés pero que pueden oscurecer otros patrones. Los datos proyectados

Aprendizaje Automático No Supervisado 9


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

en los componentes principales son menos susceptibles al ruido y a las variaciones

aleatorias de las características originales, mejorando la separabilidad de los

posibles grupos existentes.

Ejemplo de cómo PCA nos ayuda cuando queremos realizar clustering.

Imaginemos que estamos trabajando con un conjunto de datos de clientes

con 50 características, como edad, ingresos, hábitos de compra, etc. Si

aplicamos PCA, podemos reducir de 50 características a un conjunto de 2

o 3 componentes principales que capturan la mayor parte de la variabilidad

de los datos. Al realizar clustering sobre las componentes principales, es

probable que obtengamos clústeres más claros y significativos, lo que

facilita la segmentación de clientes y la identificación de patrones de

comportamiento.

Aprendizaje Automático No Supervisado 10


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.4. Ventajas y desventajas de PCA

Algunas de las ventajas que podemos resaltar de PCA son las siguientes:

▸ Reducción de dimensionalidad: al reducir el número de variables, los modelos se

vuelven más simples. Mejora el rendimiento computacional de los modelos que se


aplican después de aplicar PCA y, por ende, el tiempo de entrenamiento es menor.

▸ Eliminación de redundancia: ayuda a eliminar la multicolinealidad al transformar

las variables originales en un nuevo conjunto de variables independientes.

▸ Visualización en 2D y 3D: facilita la visualización de datos complejos en dos o tres

dimensiones, ayudando sobre todo en el análisis exploratorio de los datos.

▸ Reducción de ruido: al enfocarse en las componentes principales que captura la

mayor varianza, deja de lado los componentes que representan ruido en el conjunto

de datos.

▸ Mejora de la interpretabilidad: facilita la identificación de patrones y relaciones

subyacentes en los datos que no son evidentes en el espacio original.

PCA se aplica en diferentes dominios, tales como (Dey, 2023):

▸ Compresión de imágenes: al reducir la dimensionalidad de las imágenes y

preservar su esencia, se pueden almacenar y transferir las imágenes.

▸ Bioinformática: las expresiones genéticas suelen ser conjuntos de datos de alta

dimensionalidad. Con PCA se pueden identificar patrones y reducir el ruido.

▸ Reconocimiento facial: permite la extracción de rasgos faciales esenciales para

tareas de reconocimiento.

▸ Sistemas de recomendación: usar PCA suele obtener recomendaciones muy

eficientes en datos de interacción entre un usuario y elementos en particular,

Aprendizaje Automático No Supervisado 11


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

generalmente elementos web.

A continuación, veremos el vídeo de PCA utilizando Python.

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=00d8d339-9b7c-
4478-acb7-b1be0170d19f

Aprendizaje Automático No Supervisado 12


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.5. ¿Cómo evaluar y mejorar PCA?

Existen algunos métodos para determinar el valor óptimo para el parámetro

. Se puede realizar a través de dos visualizaciones diferentes.

L a primera visualización es graficar el porcentaje de varianza explicada de los

componentes individuales y el porcentaje de varianza total que capturan todos los

componentes principales. Veamos el código que hace posible dicha visualización

(Kavlakoglu, 2024):

# Calcular la matriz de covarianza, los vectores y valores propios


cov_mat = np.cov(X_train_scaled.T)
eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)

exp_var = []

# Ordenar los valores propios en orden descendente


eigen_vals = np.sort(eigen_vals)[::-1]

for i in eigen_vals:
var = (i / np.sum(eigen_vals)) * 100
exp_var.append(var)

bar = plt.bar(range(1, 14), exp_var, align='center',


label='Individual explained variance')

# Agregar etiquetas a las barras más altas.


for i, bar in enumerate(bar):
plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(),
f'{exp_var[i]:.1f}%',
ha='center', va='bottom')

plt.ylabel('Percentage of variance explained (%)')


plt.xlabel('Principal component index')
plt.xticks(ticks=list(range(1, 14)))
plt.legend(loc='best')
plt.tight_layout()

Aprendizaje Automático No Supervisado 13


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Varianza explicada vs. índice de componente principal. Fuente: Kavlakoglu, 2024.

La segunda visualización es utilizar la técnica del codo utilizando el porcentaje de

varianza explicada frente al número de componentes principales. Para poder decidir

cuál es el número de componentes principales ideal. Veamos el código que hace

posible dicha visualización (Kavlakoglu, 2024):

# generate scree plot


pca = PCA()
X_train = pca.fit_transform(X_train_scaled)
explained_variance = pca.explained_variance_ratio_
plt.plot(pca.explained_variance_, marker='o')
plt.xlabel("Eigenvalue number")
plt.ylabel("Eigenvalue size")
plt.title("Scree Plot")

Aprendizaje Automático No Supervisado 14


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 3. Valor y número de valores propios, gráfica del codo. Fuente: (Kavlakoglu, 2024).

Aprendizaje Automático No Supervisado 15


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.6. Implementación en Python

En este apartado veremos dos ejemplos. Empecemos con un ejemplo sencillo de

implementación en Python de PCA utilizando la biblioteca de Scikit-learn.

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Generar datos aleatorios de ejemplo


np.random.seed(42)
data = np.random.rand(100, 5) # 100 muestras, 5 características
df = pd.DataFrame(data, columns=[f'Feature_{i+1}' for i in range(5)])

# 1. Estandarización de los datos


scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)

# 2. Aplicación de PCA
# Reducimos de 5 características a 2 componentes principales

pca = PCA(n_components=2)
principal_components = pca.fit_transform(scaled_data)
pca_df = pd.DataFrame(data=principal_components, columns=['Principal
Component 1', 'Principal Component 2'])

# 3. Explicación de la varianza
explained_variance = pca.explained_variance_ratio_

# 4. Visualización de los resultados


#Creamos un gráfico de dispersión para visualizar los datos proyectados en
las dos componentes principales.

plt.figure(figsize=(8, 6))
plt.scatter(pca_df['Principal Component 1'], pca_df['Principal Component
2'], c='blue', edgecolor='k', s=40)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('2 Component PCA')
plt.grid()
plt.show()

Aprendizaje Automático No Supervisado 16


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Mostrar la varianza explicada por cada componente


# Se imprime la proporción de varianza explicada por cada componente
principal para entender cuánta información se retiene en las nuevas
componentes.

print(f'Varianza explicada por la componente principal 1:


{explained_variance[0]:.2f}')
print(f'Varianza explicada por la componente principal 2:
{explained_variance[1]:.2f}')

Figura 4. Resultado final de aplicar PCA a un conjunto de datos de cinco características. Fuente:

elaboración propia.

Continuemos con un ejemplo más complejo, utilizaremos el conjunto de datos que se

puede encontrar en: https://github.com/jgscott/STA380/blob/master/data/protein.csv.

Contiene la cantidad de alimentos consumidos por país: leche, huevos, pescado,

cereales, carnes rojas, carnes blancas, nueces y verduras. Inspirados en el artículo

de Lee (2024) desarrollaremos el siguiente ejercicio:

▸ Leemos el conjunto de datos.

Aprendizaje Automático No Supervisado 17


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

url = "https://raw.githubusercontent.com/fenago/datasets/main/protein.csv"
food_data = pd.read_csv(url)

▸ Estandarizamos los datos para que tengan una media de 0 y una desviación de 1.

scaler = StandardScaler()
food_scaled = scaler.fit_transform(food_data.iloc[:, 1:])

▸ Aplicamos PCA sobre los datos estandarizados. No vamos a especificar cuántos

componentes deseamos, después hacemos un análisis sobre esto.

pca = PCA()
principal_components = pca.fit_transform(food_scaled)

▸ Analizamos los componentes principales y determinamos cuántas componentes

debemos tener.

loadings = pd.DataFrame(pca.components_.T, columns=[f'PC{i}' for i in


range(1, len(food_data.columns))], index=food_data.columns[1:])
print(loadings)

▸ ¿Cuáles son las características más importantes de cada componente principal?

import pandas as pd

# Establecer un umbral de 0.3 para saber con qué características trabajar.


threshold = 0.3

# Encontrar características con cargas por encima del umbral para cada
componente principal.

important_features = {}
for column in loadings.columns:
important_features[column] = loadings.index[loadings[column].abs() >
threshold].tolist()

# Ahora el diccionario ‘important_features’ contiene las características

Aprendizaje Automático No Supervisado 18


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

importantes
for pc, features in important_features.items():
print(f"{pc}: {', '.join(features)}")

▸ Veamos el mapa de calor de todos los componentes principales.

import seaborn as sns

# Creamos un mapa de calor

plt.figure(figsize=(12, 8))
sns.heatmap(loadings, annot=True, cmap='coolwarm')
plt.title('PCA Loadings Heatmap')
plt.show()

Figura 5. Mapa de calor de las componentes principales. Fuente: elaboración propia.

▸ ¿Con cuántos componentes me quedo?

import numpy as np
# Crear un diagrama del codo
plt.figure(figsize=(8,5))
plt.plot(range(1, len(pca.explained_variance_ratio_) + 1),
pca.explained_variance_ratio_, marker='o', linestyle='--')
plt.title('Scree Plot')

Aprendizaje Automático No Supervisado 19


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

plt.xlabel('Number of components')
plt.ylabel('Explained variance ratio')
plt.show()

# Calcular la varianza acumulada


cumulative_explained_variance = np.cumsum(pca.explained_variance_ratio_)
# Crear un gráfico para explicar la varianza acumulada
plt.figure(figsize=(8,5))
plt.plot(range(1, len(cumulative_explained_variance) + 1),
cumulative_explained_variance, marker='o', linestyle='--')
plt.title('Cumulative Explained Variance')
plt.xlabel('Number of components')
plt.ylabel('Cumulative explained variance')
plt.axhline(y=0.9, color='r', linestyle='-') # 90% variance line
plt.text(0.5, 0.85, '90% cut-off threshold', color = 'red', fontsize=16)
plt.show()

Figura 6. Gráfico del codo: número de componentes vs. varianza acumulada explicada. Fuente:

Aprendizaje Automático No Supervisado 20


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

elaboración propia.

Según el resultado gráfico, el umbral que supera el 90 % está entre 4 y 5

componentes. Si elegimos el 4 estamos justo por debajo del umbral y si agregamos


los cinco componentes podemos superarlo. Entonces nos quedaremos con los

componentes PC1, PC2, PC3, PC4 y PC5. Si se eligen cuatro componentes es

totalmente válido, sería un modelo más simple y con menos varianza acumulada

explicada.

Existe otro método para decidir qué componentes principales son las mejores. Se

llama el método del criterio de Kaiser:

eigenvalues = pca.explained_variance_

# Aplicando el criterio Kaiser


kaiser_criterion = eigenvalues > 1

# Obtener el valor que satisfaga el criterio Kaiser.


n_components_kaiser = sum(kaiser_criterion)

# Imprimir las components que satisfacen el criterio Kaiser


print(f"Number of components with eigenvalue > 1: {n_components_kaiser}")
important_components = np.arange(1, n_components_kaiser + 1)
print(f"Important components according to Kaiser Criterion:
{important_components}")

for i, (ev, satisfy) in enumerate(zip(eigenvalues, kaiser_criterion),


start=1):
if satisfy:
print(f"Component {i} with eigenvalue: {ev}")

Number of components with eigenvalue > 1: 3


Important components according to Kaiser Criterion: [1 2 3]
Component 1 with eigenvalue: 4.173372472563685
Component 2 with eigenvalue: 1.7031244242017378
Component 3 with eigenvalue: 1.1749161502198004

Dataframe final:

import pandas as pd

Aprendizaje Automático No Supervisado 21


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Convertir componentes a un DataFrame


principal_components_df = pd.DataFrame(principal_components, columns=
[f'PC{i}' for i in range(1, len(food_data.columns))])

# Concatenar con la columna país

final_df = pd.concat([food_data['Country'], principal_components_df],


axis=1)

# Desplegar las 5 primeras filas del DataFrame


final_df.head()

Figura 7. Datos. Fuente: elaboración propia.

Cómo interpretarlo:

▸ PC1: carnes rojas, carnes blancas, huevos, leche, cereales y nueces. PC1

representa los elementos fundamentales de una dieta basada en proteínas junto con
alimentos básicos como cereales y nueces. Se utilizaría esta componente para
comprender patrones generales de consumo de proteínas y calorías.

▸ PC2: pescado, almidón, frutas y vegetales. PC2 representa patrones dietéticos que

se inclinan hacia una dieta basada en pescado como fuente principal de proteína y
gran cantidad de frutas y vegetales.

▸ PC3: carne blanca, leche, pescado, frutas y vegetales. PC3 contiene elementos que

contrastan entre la carne blanca y el pescado, además la presencia de leche. Podría

explicar una dieta donde el elemento común es la leche y se podría explorar con
este componente la interacción entre el consumo de aves, mariscos y lácteos.

▸ PC4: carnes rojas, huevos, almidón, frutos secos, alimentos frescos y vegetales.

Aprendizaje Automático No Supervisado 22


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

PC4 representa una dieta mixta, que combina proteína animal, huevos y una
variedad de alimentos de origen vegetal. No se inclina por una única fuente de
proteínas.

▸ PC5: carne roja, carne blanca y almidón. En PC5 la carne roja, blanca y almidón son

importantes. Parece ser una dieta que busca el equilibrio entre consumo de carne y
carbohidratos.

▸ PC6: carnes rojas, huevos, leche y nueces.

▸ PC7: huevos, leche, cereales, nueces, frutas y vegetales.

▸ PC8: huevos, pescado y cereales.

▸ PC9: carne blanca, huevos, pescado y frutos secos.

Cada componente resume un aspecto diferente de los hábitos alimenticios, y estos

conocimientos pueden ser muy valiosos para estudios relacionados con la nutrición,

la salud pública o la investigación de mercados de productos.

A continuación, veremos el vídeo PCA: aplicaciones avanzadas y optimización en

Python.

Aprendizaje Automático No Supervisado 23


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=9ed75fc9-515e-
43d6-9697-b1be017a858c

Aprendizaje Automático No Supervisado 24


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.7. Cuaderno de ejercicios

Ejercicio 1. Conceptos básicos

Explica con tus propias palabras qué es el análisis de componentes principales

(PCA) y cuál es su objetivo principal. Luego aplica PCA a un conjunto de datos que

desees y muestra los dos primeros componentes principales.

Solución

PCA es una técnica de reducción de dimensionalidad que transforma un conjunto de

datos de alta dimensión en un espacio de menor dimensión, capturando la mayor

varianza posible en las nuevas componentes principales. Su objetivo es simplificar

los datos sin perder información relevante. Para aplicar PCA en Python, primero

estandarizamos los datos y luego utilizamos la biblioteca Scikit-learn para calcular los

componentes principales:

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Generar datos aleatorios


np.random.seed(42)
data = np.random.rand(100, 5)
df = pd.DataFrame(data, columns=[f'Feature_{i+1}' for i in range(5)])

# Estandarizar los datos


scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)

# Aplicar PCA
pca = PCA(n_components=2)
principal_components = pca.fit_transform(scaled_data)
print(principal_components[:5]) # Mostrar las dos primeras componentes
principales

Ejercicio 2. Detalle del paso a paso en PCA

Aprendizaje Automático No Supervisado 25


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Describe los pasos básicos para implementar PCA en Python utilizando un conjunto

de datos de cinco características. Luego muestra un gráfico de dispersión de los dos

primeros componentes principales.

Solución

Para implementar PCA se deben seguir estos pasos: estandarizar los datos, calcular

las componentes principales y visualizar los resultados. El siguiente código muestra

cómo hacerlo:

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Generar datos aleatorios


np.random.seed(42)
data = np.random.rand(100, 5)
df = pd.DataFrame(data, columns=[f'Feature_{i+1}' for i in range(5)])

# 1. Estandarizar los datos


scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)

# 2. Aplicar PCA
pca = PCA(n_components=2)
principal_components = pca.fit_transform(scaled_data)
pca_df = pd.DataFrame(data=principal_components, columns=['Principal
Component 1', 'Principal Component 2'])

# 3. Visualizar los resultados


plt.figure(figsize=(8, 6))
plt.scatter(pca_df['Principal Component 1'], pca_df['Principal Component
2'], c='blue', edgecolor='k', s=40)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('2 Component PCA')
plt.grid()
plt.show()

Ejercicio 3. Identificación de componentes principales e interpretabilidad del


primer componente

Aprendizaje Automático No Supervisado 26


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Se tiene un conjunto de datos de calidad del aire con las siguientes columnas:

ciudad, PM2.5, PM10, NO2, CO, SO2, O3, temperatura, humedad y velocidad del

viento.

Contiene los siguientes datos:

data = { 'Ciudad': ['CiudadA', 'CiudadB', 'CiudadC', 'CiudadD'], 'PM2.5':


[30, 70, 40, 50], 'PM10': [50, 90, 60, 70], 'NO2': [20, 60, 30, 40], 'CO':
[0.5, 1.0, 0.7, 0.8], 'SO2': [10, 30, 15, 20], 'O3': [25, 35, 30, 28],
'Temperatura': [22, 25, 20, 23], 'Humedad': [55, 65, 60, 58], 'Velocidad
del Viento': [3.5, 4.0, 3.8, 4.2] }

▸ Interpreta los componentes principales obtenidos mediante PCA.

▸ Utilizando el conjunto de datos de calidad del aire en diferentes ciudades, identifica

las características más importantes en el primer componente principal.

Solución

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Conjunto de datos de calidad del aire


data = {
'Ciudad': ['CiudadA', 'CiudadB', 'CiudadC', 'CiudadD'],
'PM2.5': [30, 70, 40, 50],
'PM10': [50, 90, 60, 70],
'NO2': [20, 60, 30, 40],
'CO': [0.5, 1.0, 0.7, 0.8],
'SO2': [10, 30, 15, 20],
'O3': [25, 35, 30, 28],
'Temperatura': [22, 25, 20, 23],
'Humedad': [55, 65, 60, 58],
'Velocidad del Viento': [3.5, 4.0, 3.8, 4.2]
}

# Crear DataFrame
df = pd.DataFrame(data)
df.set_index('Ciudad', inplace=True)

Aprendizaje Automático No Supervisado 27


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Estandarización de los datos


scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)

# Aplicar PCA
pca = PCA(n_components=2) # Reducimos a 2 componentes para simplificar la
visualización
pca_result = pca.fit_transform(scaled_data)

# Interpretación de las componentes principales


pc1 = pca.components_[0]
explained_variance_ratio = pca.explained_variance_ratio_

# Crear un DataFrame para visualizar las cargas de las variables en la PC1


loadings = pd.DataFrame(pc1, index=df.columns, columns=['PC1'])

# Mostrar el DataFrame de cargas de las variables en la PC1


print("Cargas de las variables en la PC1:\n", loadings)

# Varianza explicada por cada componente principal


explained_variance_ratio = pca.explained_variance_ratio_
cumulative_explained_variance = explained_variance_ratio.cumsum()

# Crear el gráfico de varianza explicada acumulada


plt.figure(figsize=(10, 6))
plt.plot(range(1, len(explained_variance_ratio) + 1),
cumulative_explained_variance, marker='o', linestyle='--', color='b')
plt.title('Gráfico de Varianza Explicada Acumulada')
plt.xlabel('Número de Componentes Principales')
plt.ylabel('Varianza Explicada Acumulada')
plt.grid(True)
plt.show()

# Mostrar varianza explicada por cada componente principal


for i, var_exp in enumerate(explained_variance_ratio, start=1):
print(f"Componente Principal {i}: Varianza Explicada = {var_exp:.4f}")

# Mostrar varianza explicada acumulada


print("Varianza Explicada Acumulada:\n", cumulative_explained_variance)

Interpretación:

Cargas de las variables en la PC1:

Aprendizaje Automático No Supervisado 28


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 1. Cargas de las variables en la PC1. Fuente: elaboración propia.

En este ejemplo, las variables PM2.5, PM10 y NO2 son las que más contribuyen al

primer componente principal. Esto sugiere que estos contaminantes son las

características más importantes para explicar la variabilidad en la calidad del aire en

estas ciudades.

Ejercicio 4. Interpretación de todos los componentes principales

Explica cómo se puede evaluar la cantidad de varianza explicada por cada

componente principal en PCA. Luego genera un gráfico de varianza explicada

acumulada utilizando el conjunto de datos del ejercicio anterior.

Solución

La varianza explicada por cada componente principal se puede evaluar observando

Aprendizaje Automático No Supervisado 29


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

los valores propios (eigenvalues). Un gráfico de varianza explicada acumulada

muestra cuánta varianza total se captura al agregar más componentes. Para generar

este gráfico:

import matplotlib.pyplot as plt

pca = PCA()
principal_components = pca.fit_transform(scaled_data)
explained_variance = np.cumsum(pca.explained_variance_ratio_)

# Graficar la varianza explicada acumulada


plt.figure(figsize=(8, 5))
plt.plot(range(1, len(explained_variance) + 1), explained_variance,
marker='o', linestyle='--')
plt.xlabel('Número de componentes')
plt.ylabel('Varianza acumulada explicada')
plt.title('Gráfico de varianza explicada acumulada')
plt.axhline(y=0.9, color='r', linestyle='-')
plt.text(0.5, 0.85, 'Umbral del 90%', color='red', fontsize=16)
plt.show()

Figura 8. Gráfico de varianza explicada acumulada. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 30


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

El estudiante analizará las características que más pesan en cada componente.

Aprendizaje Automático No Supervisado 31


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

6.8. Referencias bibliográficas

Boutsidis, C., Mahoney, M. W. y Drineas, P. (2008). Unsupervised feature selection

for principal components analysis. Proceedings of the 14th ACM SIGKDD

international conference on Knowledge discovery and data mining.

Dey, R. (2023, octubre 6). Understanding Principal Component Analysis (PCA).

M e d i u m . https://medium.com/@roshmitadey/understanding-principal-component-
analysis-pca-d4bb40e12d33

Kavlakoglu, E. (2024, marzo 6). Reducing dimensionality with principal component

analysis with Python. IBM Developer. https://developer.ibm.com/tutorials/awb-

reducing-dimensionality-with-principal-component-analysis/

Lee, E. (2024, abril 9). Secrets of PCA: A Comprehensive Guide to Principal

Component Analysis with Python and Colab. Medium. https://drlee.io/secrets-of-pca-

a-comprehensive-guide-to-principal-component-analysis-with-python-and-colab-

6f7f3142e721

Ma, S. y Dai, Y. (2011). Principal component analysis based methods in

bioinformatics studies. Briefings in bioinformatics, 12(6), 714-722.

Xie, L. y Yu, S. (2021). Unsupervised feature extraction with convolutional

autoencoder with application to daily stock market prediction. Concurrency and


Computation: Practice and Experience, 33(16), e6282.

Aprendizaje Automático No Supervisado 32


Tema 6. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Vídeo explicativo sobre PCA

Stanford Online. (2023, agosto 14). Stanford CS229 Machine Learning I Factor

Analysis/PCA I 2022 I Lecture 14 [Vídeo]. YouTube. https://www.youtube.com/watch?

v=o2KzJdbOwMc

En la lección 14 de Stanford CS229, se explica el análisis de componentes

principales (PCA) y el análisis factorial. La clase cubre cómo estas técnicas de

reducción de dimensionalidad ayudan a identificar y eliminar la redundancia en los

datos, mejorando la eficiencia de los algoritmos de aprendizaje automático. Además,

se discuten ejemplos prácticos y aplicaciones en diversos campos.

Aprendizaje Automático No Supervisado 33


Tema 6. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Diferencia entre análisis factorial (FA) y análisis de


componentes principales (PCA)

Thesis Helper. (2023, octubre 9). Differences Between Factor Analysis and Principal

Component Analysis [Vídeo]. YouTube. https://www.youtube.com/watch?


v=8vH0WH7p39M

Explica las diferencias clave entre el análisis factorial (FA) y el análisis de

componentes principales (PCA). FA se enfoca en modelar la estructura de las

correlaciones entre variables observadas para identificar factores subyacentes no

observados, mientras que PCA es una técnica de reducción de dimensionalidad que

transforma las variables originales en un nuevo conjunto de variables no

correlacionadas, llamadas componentes principales.

Aprendizaje Automático No Supervisado 34


Tema 6. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué significa PCA?

A. Principal Component Analysis.

B. Pattern Classification Algorithm.

C. Probability Calculation Approach.

D. Partial Correlation Adjustment.

2. ¿Cuál es el principal objetivo de PCA?

A. Aumentar el número de variables en un conjunto de datos.

B. Reducir la dimensionalidad manteniendo la mayor cantidad de variabilidad.

C. Clasificar datos categóricos.

D. Eliminar datos redundantes sin considerar la variabilidad.

3. ¿Qué se estandariza en PCA?

A. Las filas de la matriz de datos.

B. Los valores y vectores propios.

C. Las columnas de la matriz de datos.

D. Los clústeres resultantes.

4. ¿Qué representa un valor propio en PCA?

A. La cantidad de varianza explicada por cada componente principal.

B. El valor de la covarianza entre dos variables.

C. La media de los datos.

D. La distancia entre clústeres.

Aprendizaje Automático No Supervisado 35


Tema 6. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Qué se utiliza para calcular la matriz de covarianza en PCA?

A. La matriz transpuesta de los datos originales.

B. Los datos estandarizados.

C. Los datos en su forma original.

D. Los valores propios de los datos.

6. ¿Por qué es importante reducir la dimensionalidad de los datos?

A. Para aumentar la complejidad computacional.

B. Para facilitar la visualización y el análisis.

C. Para eliminar toda la variabilidad.

D. Para duplicar los datos disponibles.

7. ¿Qué es un vector propio en PCA?

A. Un vector que cambia de dirección durante la transformación.

B. Un vector que se utiliza para estandarizar datos.

C. Un vector que solo cambia en magnitud, no en dirección.

D. Un vector que se elimina tras la transformación.

8. ¿Qué técnica de visualización se utiliza para decidir el número de componentes

en PCA?

A. Matriz de confusión.

B. Gráfica de codo.

C. Histograma.

D. Análisis de regresión.

Aprendizaje Automático No Supervisado 36


Tema 6. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuál es una ventaja de PCA en clustering?

A. Incrementa la dimensionalidad de los datos.

B. Facilita la identificación de clústeres en datos de alta dimensionalidad.

C. Elimina completamente el ruido de los datos.

D. Siempre produce mejores resultados que otros algoritmos.

10. ¿Cómo se seleccionan las componentes principales en PCA?

A. Por orden alfabético de los nombres de las variables originales.

B. Por el orden de aparición en el conjunto de datos original.

C. Ordenando los valores propios de mayor a menor y seleccionando los

vectores propios correspondientes.

D. Aleatoriamente.

Aprendizaje Automático No Supervisado 37


Tema 6. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 7

Aprendizaje Automático No Supervisado

Tema 7. Técnicas no lineales.


t-SNE, MDS e ISOMAP
Índice
Esquema

Ideas clave

7.1. Introducción y objetivos

7.2. Entendiendo el t-SNE

7.3. t-SNE vs. PCA

7.4. Implementación del t-SNE en Python

7.5. Multi-Dimensional Scaling (MDS)

7.6. Isometric mapping (Isomap)

7.7. Tabla comparativa entre las diferentes técnicas de


reducción de dimensiones

7.8. Cuaderno de ejercicios

7.9. Referencias bibliográficas

A fondo

Reducción de dimensiones: t-SNE

Entendiendo cómo trabaja la reducción de


dimensionalidad

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 7. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.1. Introducción y objetivos

Cuando vimos PCA nos dimos cuenta de que la visualización y el análisis de grandes

cantidades de datos puede ser complejo, pero es importante para la comprensión y

detección de patrones.

En este tema seguiremos explorando diversas técnicas de reducción de

dimensionalidad, siendo el t-SNE (t-Distributed Stochastic Neighbor Embedding) una

de las más destacadas (Belkina, Ciccolella, Anno, Halpert, Spidlen y Snyder-

Cappione, 2019). El t-SNE permite transformar datos de múltiples dimensiones a

representaciones bidimensionales o tridimensionales, facilitando la identificación de

estructuras y relaciones intrínsecas que serían difíciles de observar en su espacio

original. Su capacidad para preservar las relaciones locales entre los puntos de datos

la convierte en una técnica invaluable para la exploración de conjuntos de datos

complejos (Soni, Prabakar y Upadhyay, 2020; Cheng, Wang y Xia, 2021).

Además del t-SNE, exploraremos otras dos técnicas: MDS (Multi-Dimensional

Scaling) e Isomap (Abdi, 2007; Tenenbaum, de Silva y Langford, 2000). Cada una de

estas ofrece distintos enfoques y ventajas para la reducción de dimensionalidad y la

visualización de datos. PCA es particularmente útil para datos lineales, mientras que

t-SNE, MDS e Isomap son eficaces para descubrir estructuras no lineales. A través

de la implementación práctica y comparación de estas técnicas, los estudiantes


podrán entender mejor cada uno de los métodos.

Como objetivos de este tema nos planteamos:

▸ Comprender los fundamentos teóricos de las técnicas de reducción de

dimensionalidad, explicando conceptos y diferencias entre t-SNE, MDS e Isomap.

▸ Aplicar los algoritmos de t-SNE, MDS e Isomap, implementando cada técnica en

Python utilizando Scikit-learn.

Aprendizaje Automático No Supervisado 4


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Evaluar las ventajas y limitaciones de cada una de las técnicas de reducción de

dimensionalidad, identificando fortalezas y analizando las ventajas y desafíos del uso


de cada técnica.

Aprendizaje Automático No Supervisado 5


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.2. Entendiendo el t-SNE

t-SNE o incrustación de vecinos estocásticos distribuidos en t es un método

estadístico que permite visualizar datos de alta dimensionalidad en un espacio de

menor dimensionalidad, generalmente dos o tres dimensiones.

La idea central de t-SNE es mapear los puntos de datos de alta dimensionalidad en

un espacio de menor dimensionalidad, preservando las relaciones locales entre los

puntos. Se mide la similitud entre puntos de datos en el espacio de dimensión alta y

se representa dicha similitud en función de sus probabilidades. Una vez se tienen las

distancias se construye una distribución de probabilidad similar en el espacio de

dimensiones inferiores y se minimiza la diferencia entre las dos distribuciones

utilizando la técnica del descenso del gradiente. De esta forma se captura de manera

efectiva la estructura local de los datos, lo que hace particularmente útil la

visualización de datos complejos y el descubrimiento de patrones.

Cuando se habla de preservar las relaciones entre los puntos, se refiere a mantener

las distancias relativas y las similitudes entre puntos de datos vecinos cuando se

asignan desde un espacio de alta dimensionalidad a un espacio de menor dimensión.

Imaginemos que tenemos un conjunto de datos que se encuentran muy cercanos

unos de otros en el espacio. Una vez que se reduce la dimensionalidad, los puntos

siguen estando muy juntos en el espacio 2D o 3D. De igual forma, si dos puntos
están lejos uno del otro en el espacio original, deberían permanecer alejados en un

espacio de 2D o 3D.

El concepto base del t-SNE es calcular las similitudes entre cada punto de datos con

todos los demás puntos del conjunto de datos. Una vez se tienen estas

puntuaciones, el algoritmo reduce la dimensionalidad a 2D o 3D, mientras se

preservan las relaciones locales, encontrando los vecinos más cercanos entre

Aprendizaje Automático No Supervisado 6


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

puntos.

Algoritmo

Vamos a ver el paso a paso del algoritmo:

▸ Selección del conjunto de datos.

▸ Preprocesamiento y normalización de los datos.

▸ Cálculo de distancias en la dimensión original: calcular las distancias entre

puntos no es muy confiable debido a la «maldición de la dimensionalidad», por lo


que t-SNE utiliza probabilidades. Para cada punto de datos, se traza una distribución

gaussiana a su alrededor con una media cero y una desviación estándar que se
determina en función de la densidad de los puntos cercanos alrededor de un punto
.

• En el eje X (x-axis), se van a representar las distancias desde un punto de

referencia, como (imaginemos que es un punto específico en nuestro conjunto de


datos). Para cada punto en nuestro conjunto de datos, calculamos la distancia a .
Las distancias se trazan a lo largo del eje X. Esto quiere decir que para cada punto

del conjunto de datos se tendrá una posición en el eje X basada en qué tan lejos
está de .

• En el eje Y (y-axis), vamos a representar la densidad de probabilidad. La idea es

representar qué tan probable es que un punto de datos se encuentre a cierta


distancia de . Esto se calcula utilizando la función de densidad de probabilidad,
que nos permite determinar la probabilidad de cada punto de datos en relación con
. Esta probabilidad actúa como una puntuación de similitud, indicando qué tan

similar es un punto al punto de referencia .

• De manera similar, se aplican los dos pasos anteriores a cada punto del conjunto de

datos, lo que nos da como resultado una matriz de . Donde la puntuación de


similitud para cada punto se registra en relación con todos los demás puntos de

Aprendizaje Automático No Supervisado 7


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

datos. La distribución es única alrededor de cada punto, la probabilidad del punto


dado un punto es y no es necesariamente igual a la
probabilidad de dado un punto . Un valor alto de P entre dos
puntos significa que son vecinos entre sí, y un valor bajo indica que están lejos el

uno del otro.

▸ Distribución de probabilidades t de Student: para reducir la dimensionalidad, se

distribuyen puntos aleatoriamente en el eje x. Se calcula la puntuación de similitud


de cada punto con relación a los demás, obteniendo otra matriz de .

▸ Con las dos matrices de , donde una representa las puntuaciones de similitud
en la dimensión superior y la otra representa las puntuaciones de similitud en una
dimensión inferior, se define una función de coste basada en la divergencia de
Kullback-Leibler entre las distribuciones de alta y baja dimensión. Se alinean la

matriz de dimensión inferior con la de dimensión superior, utilizando técnicas de


optimización como el descenso del gradiente, para minimizar la función de coste.
Esto implica ajustar la posición de los puntos de forma iterativa hasta que la matriz
de similitud en la dimensión inferior se parezca lo máximo posible a la de dimensión
superior. Dicho de otra forma, se itera hasta que las posiciones de los puntos en el
espacio de baja dimensión converjan a una configuración que minimice la función de

coste.

▸ Visualización y análisis: se generan visualizaciones de los datos en el espacio de

baja dimensión, interpretando los resultados y analizando las agrupaciones


formadas.

Formulación matemática del t-SNE

Para cada punto de datos en el espacio de alta dimensión calculamos su similitud


con todos los demás puntos utilizando una distribución gaussiana. De igual manera,

en el espacio de baja dimensionalidad, se calculan las similitudes usando una

distribución t.

Aprendizaje Automático No Supervisado 8


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Similitud en alta dimensionalidad

Dado un conjunto de datos con una similitud por pares ,

donde representa la probabilidad condicional de elegir como vecino de

bajo una distribución gaussiana centrada en , definida como:

Similitud en baja dimensionalidad

Para el espacio bajo-dimensional la similitud está

definida por la similitud en el espacio bajo-dimensional usando la distribución t-

Student con un grado de libertad:

La función objetivo

Deseamos minimizar la diferencia entre las similitudes de puntos en el espacio de

alta dimensión y sus contrapartes en el espacio de baja dimensión. Se mide esta


diferencia utilizando la divergencia de Kullback-Leibler (KL). La divergencia KL mide

qué tanto diverge una distribución de probabilidad de otra. En este caso, vamos a

medir qué tanto divergen los espacios de alta y de baja dimensionalidad.

La función objetivo C está definida como la divergencia Kullback-Leibler entre la

distribución y la , ponderado por la constante Perplexity que controla el

número efectivo de vecinos.

Aprendizaje Automático No Supervisado 9


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Descenso del gradiente

Para minimizar la divergencia de KL, utilizamos el descenso del gradiente. Lo que


hace es ajustar las posiciones de los puntos en el espacio de baja dimensionalidad.

En cada iteración, se calcula el gradiente con respecto a las posiciones de los puntos

en el espacio de baja dimensionalidad. El gradiente lo que nos indica es la dirección

en la que debemos movernos en cada punto para reducir la diferencia entre

similitudes entre alta y baja dimensión. Una vez actualizada la posición de los puntos

en función del gradiente, converge gradualmente hacia una configuración donde las

similitudes de baja dimensión coinciden con las del espacio de alta dimensionalidad.

El gradiente de la función objetivo con respecto a los puntos Y de baja dimensión se

calcula utilizando las posiciones de los puntos en el espacio de baja dimensión de

forma iterativa.

Gradiente de la función de coste con respecto a los puntos está dado por:

En lugar de calcular el gradiente de la función objetivo usando todos los puntos de

datos a la vez (lo cual sería muy costoso computacionalmente), el SGD actualiza las

posiciones de los puntos de manera iterativa y estocástica. Esto significa que, en

cada iteración, se selecciona un subconjunto aleatorio (mini-batch) de los datos para

calcular una aproximación del gradiente.

Aplicaciones del t-SNE (Awan, 2023)

▸ Agrupación y clasificación: agrupar puntos de datos similares en dimensiones

inferiores. Se suele utilizar para encontrar patrones en los datos.

Aprendizaje Automático No Supervisado 10


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Detección de anomalías: se pueden identificar valores atípicos y anomalías en los

datos.

▸ Procesamiento del lenguaje natural: visualiza incrustaciones de palabras

generadas a partir de un gran corpus de texto que facilita la identificación de


similitudes y relaciones entre palabras.

▸ Seguridad informática: se pueden visualizar patrones de tráfico de red y detectar

anomalías.

▸ Investigación del cáncer: para visualizar perfiles moleculares de muestras de

tumores e identificar subtipos de cáncer.

▸ Interpretaciones geológicas: visualización de atributos sísmicos e identificación de

anomalías geológicas.

▸ Procesamiento de señales biomédicas: para visualizar electroencefalogramas y

detectar patrones de actividad cerebral.

Ventajas y desventajas del t-SNE (Sachinsoni, 2024)

▸ Si se aplica correctamente, puede ofrecer visualizaciones muy intuitivas preservando

la estructura local de los datos en las dimensiones inferiores.

▸ Es costoso computacionalmente.

▸ No es muy bueno preservando la estructura global.

▸ Sensible a hiperparámetros.

▸ Puede quedarse atascado en los mínimos locales.

▸ La interpretación puede ser un desafío.

Aprendizaje Automático No Supervisado 11


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.3. t-SNE vs. PCA

Tanto t-SNE como PCA son técnicas de reducción de dimensionalidad. PCA

funciona mejor con datos lineales; busca identificar los componentes principales

subyacentes en los datos proyectándolos en dimensiones inferiores, minimizando la

variación y preservando grandes distancias por pares.

A t-SNE no le interesa si los datos son lineales o no, se centra en preservar las

similitudes por pares entre puntos de datos en un espacio de dimensiones inferiores.

t-SNE se preocupa por preservar pequeñas distancias por pares, mientras que PCA

se enfoca en mantener grandes distancias por pares para maximizar la varianza. En

la Figura 1, se muestra un ejemplo de reducción de dimensionalidad del conjunto de

datos MNIST utilizando PCA y t-SNE.

Figura 1. PCA vs. t-SNE conjunto de datos MNIST. Fuente: elaboración propia.

En la figura 1, podemos ver como t-SNE nos da una mejor visualización de los

grupos de datos que perteneces a los diferentes dígitos en comparación con PCA.

Los datos del MNIST son no lineales y t-SNE captura mejor los datos que PCA.

Aprendizaje Automático No Supervisado 12


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.4. Implementación del t-SNE en Python

Veamos el ejemplo con el conjunto de datos MNIST; un conjunto de datos que

contiene imágenes de dígitos del 0 al 9 escrito a mano.

#Importar las librerías necesarias


import numpy as np
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler

# Descargar el conjunto de datos MNIST


mnist = fetch_openml('mnist_784', version=1)
X = mnist.data
y = mnist.target.astype(int)

# Normalizar los datos


scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Reducir la dimensionalidad a 2 componentes usando t-SNE (puede tardar


varios minutos)
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_scaled)

# Crear una gráfica de los datos proyectados


plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y, cmap='tab10',
alpha=0.7)
plt.colorbar(scatter)
plt.xlabel('Componente t-SNE 1')
plt.ylabel('Componente t-SNE 2')
plt.title('Proyección t-SNE de MNIST')
plt.show()

Aprendizaje Automático No Supervisado 13


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. t-SNE sobre el conjunto de datos MNIST. Fuente: elaboración propia.

A continuación, veremos el vídeo t-SNE utilizando Python.

Aprendizaje Automático No Supervisado 14


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=0d3c083c-0cb4-
4bdd-9d37-b1bf00149af2

Aprendizaje Automático No Supervisado 15


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.5. Multi-Dimensional Scaling (MDS)

E l escalado multidimensional (MDS) es una herramienta estadística que ayuda a

descubrir conexiones entre puntos en un espacio de dimensiones más bajo que las

dimensiones originales. Utiliza técnicas de análisis de datos de similitud o disimilitud

canónica.

El objetivo principal es mantener las proximidades originales entre conjuntos de

datos; los datos más similares se ubican muy cerca unos de otros, mientras que los

datos más separados se colocan separados en el espacio de dimensión menor.

Utiliza algoritmos de optimización avanzados para minimizar las discrepancias entre

las distancias originales en el espacio de altas dimensiones y el espacio de bajas

dimensiones. Para poder lograrlo, el algoritmo ajusta las posiciones de los puntos

para que las distancias en las dimensiones más bajas sean lo más cercanas posibles

a los datos originales.

Sus aplicaciones se han dado especialmente en áreas como la psicología,

sociología, marketing, geografía y biología.

Existen tres tipos de escala multidimensional:

▸ Algoritmo clásico: toma una matriz de entrada que representa diferencias entre

pares de elementos y produce una matriz de coordenadas que minimiza la


dimensionalidad.

▸ Escalamiento multidimensional métrico que generaliza el procedimiento de

optimización a varias funciones de pérdida y matrices de entrada con distancias y

pesos desconocidos. Minimiza una función de coste llamada «stress».

▸ Escalado multidimensional no métrico: encuentra la relación monótona no

paramétrica entre las diferencias y distancias euclidianas entre elementos, junto con

Aprendizaje Automático No Supervisado 16


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

la ubicación de cada elemento en el espacio de baja dimensionalidad. Se define una


función de «stress» a optimizar y se considera que es monótonamente creciente.

Veamos un ejemplo de implementación en Python:

#Cargamos la librería de Isomap


import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import MDS

# Descargar el conjunto de datos MNIST


mnist = fetch_openml('mnist_784', version=1)
X = mnist.data
y = mnist.target.astype(int)

# Usar solo una muestra del conjunto de datos para reducir la carga de
memoria
sample_size = 10000 # Puedes ajustar este número según sea necesario
X_sample = X[:sample_size]
y_sample = y[:sample_size]

# Normalizar los datos


scaler = StandardScaler()
X_sample_scaled = scaler.fit_transform(X_sample)

# Reducir la dimensionalidad a 50 componentes usando PCA


pca = PCA(n_components=50)
X_sample_pca = pca.fit_transform(X_sample_scaled)

# Reducir la dimensionalidad a 2 componentes usando MDS


mds = MDS(n_components=2, random_state=42)
X_sample_mds = mds.fit_transform(X_sample_pca)

# Crear una gráfica de los datos proyectados


plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_sample_mds[:, 0], X_sample_mds[:, 1], c=y_sample,
cmap='tab10', alpha=0.7)
plt.colorbar(scatter)
plt.xlabel('Componente MDS 1')
plt.ylabel('Componente MDS 2')
plt.title('Proyección MDS de una muestra de MNIST')
plt.show()

Aprendizaje Automático No Supervisado 17


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 3. MDS sobre el conjunto de datos MNIST. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 18


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.6. Isometric mapping (Isomap)

Mapeo isométrico o Isomap combina varios algoritmos que le permiten utilizar una

forma no lineal para reducir las dimensiones preservando las estructuras locales.

Algoritmo

▸ Utiliza KNN para encontrar los K vecinos más cercanos de cada uno de los puntos. K

es un número elegido arbitrariamente.

▸ Una vez se han encontrado los vecinos, se construye un gráfico de vecindad donde

los puntos están conectados entre sí si son vecinos. Los demás puntos permanecen
desconectados.

▸ Se calcula el camino más corto entre cada par de puntos, utilizando el algoritmo

Floyd-Warshall o también el de Dijkstra. Este paso halla la distancia geodésica entre


puntos. Este es el secreto de la capacidad que tiene el algoritmo para reducir la
dimensionalidad no lineal y al mismo tiempo equilibrar la relación entre las
estructuras locales y globales.

▸ Utiliza el escalado multidimensional (MDS) para calcular la incrustación de

dimensiones inferiores. Como se conocen las distancias entre puntos, MDS coloca
cada objeto en el espacio N-dimensional de tal manera que las distancias entre
puntos se conservan bastante bien.

Veamos cómo implementarlo en Python utilizando el mismo conjunto de datos que

venimos trabajando en los ejemplos anteriores, el de los dígitos escritos a mano-

MNIST.

#Cargamos la librería de Isomap


from sklearn.manifold import Isomap

# Reducir la dimensionalidad a 2 componentes usando Isomap


isomap = Isomap(n_components=2)
X_isomap = isomap.fit_transform(X_scaled)

Aprendizaje Automático No Supervisado 19


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Crear una gráfica de los datos proyectados


plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_isomap[:, 0], X_isomap[:, 1], c=y, cmap='tab10',
alpha=0.7)
plt.colorbar(scatter)
plt.xlabel('Componente Isomap 1')
plt.ylabel('Componente Isomap 2')
plt.title('Proyección Isomap de MNIST')
plt.show()

El código anterior tiene un problema requiere gran cantidad de memoria. Para poder

ejecutarlo en Python es necesario trabajar con una muestra más pequeña.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import fetch_openml
from sklearn.preprocessing import StandardScaler
from sklearn.manifold import Isomap

# Descargar el conjunto de datos MNIST


mnist = fetch_openml('mnist_784', version=1)
X = mnist.data
y = mnist.target.astype(int)

# Usar solo una muestra del conjunto de datos para reducir la carga de
memoria
sample_size = 10000 # Se puede ajustar este número
X_sample = X[:sample_size]
y_sample = y[:sample_size]

# Normalizar los datos


scaler = StandardScaler()
X_sample_scaled = scaler.fit_transform(X_sample)

# Reducir la dimensionalidad a 2 componentes usando Isomap


isomap = Isomap(n_components=2)
X_isomap = isomap.fit_transform(X_sample_scaled)

# Crear una gráfica de los datos proyectados


plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_isomap[:, 0], X_isomap[:, 1], c=y_sample,
cmap='tab10', alpha=0.7)
plt.colorbar(scatter)
plt.xlabel('Componente Isomap 1')

Aprendizaje Automático No Supervisado 20


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

plt.ylabel('Componente Isomap 2')


plt.title('Proyección Isomap de una muestra de MNIST')
plt.show()

Figura 4. Isomap sobre el conjunto de datos MNIST. Fuente: elaboración propia.

Isoamp también se utiliza como parte del análisis de procesamiento del lenguaje

natural para reducir la dimensionalidad de los datos de texto antes de entrenar un

modelo de clasificación.

Aprendizaje Automático No Supervisado 21


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.7. Tabla comparativa entre las diferentes


técnicas de reducción de dimensiones

Veamos las diferencias y características de las técnicas que hemos visto en este

tema a través de la Tabla 1:

Tabla 1. Características de las técnicas de reducción de dimensiones. Fuente: basado en GeeksforGeeks,

2024.

A continuación, veremos el vídeo Comparación de técnicas de reducción de

dimensionalidad en Python.

Aprendizaje Automático No Supervisado 22


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=e84afe29-0480-

4b59-aa21-b1bf000dd216

Aprendizaje Automático No Supervisado 23


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.8. Cuaderno de ejercicios

Ejercicio 1. Conceptos básicos

Explica brevemente en qué se diferencian las técnicas de PCA y t-SNE en términos

de sus objetivos y aplicaciones.

Solución

PCA (Principal Component Analysis) busca maximizar la variación de los datos a lo

largo de ejes ortogonales y es particularmente eficaz para transformaciones lineales,

capturando la estructura global. t-SNE, por otro lado, se centra en preservar las

relaciones locales entre puntos de datos en un espacio de menor dimensionalidad,

siendo más adecuado para la visualización de datos no lineales y complejos, como

en el caso del conjunto de datos MNIST.

Ejercicio 2. Implementación t-SNE

Describe los pasos básicos necesarios para implementar t-SNE en Python utilizando

un conjunto de datos de ejemplo.

Solución

Para implementar t-SNE en Python, primero se importan las librerías necesarias

(numpy, matplotlib, sklearn). Luego se descarga y normaliza el conjunto de datos.

Posteriormente, se aplica t-SNE con TSNE (n_components=2 o 3) y se transforma el


conjunto de datos. Finalmente, se visualizan los datos proyectados en un gráfico 2D

usando plt.scatter() .

Ejercicio 3. Aplicaciones de MDS

Menciona dos aplicaciones del escalado multidimensional (MDS) y explica

brevemente cómo esta técnica es útil en esos contextos.

Aprendizaje Automático No Supervisado 24


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Solución

MDS se utiliza en psicología para descubrir patrones en respuestas de encuestas y

en marketing para analizar preferencias de consumidores. En ambos casos, MDS

ayuda a visualizar y entender las similitudes y diferencias entre elementos (como

individuos o productos) en un espacio de menor dimensionalidad, manteniendo las

distancias relativas entre los datos.

Ejercicio 4. Ventajas y desventajas de Isomap

Menciona dos ventajas y dos desventajas del uso de Isomap en la reducción de

dimensionalidad.

Solución

Dos ventajas de Isomap son su capacidad para preservar relaciones no lineales y

descubrir la estructura intrínseca de los datos, lo que es útil para datos complejos
como imágenes o redes de sensores. Dos desventajas son su alta demanda

computacional y la sensibilidad a la elección del número de vecinos más cercanos

(K), lo cual puede afectar significativamente los resultados.

Aprendizaje Automático No Supervisado 25


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

7.9. Referencias bibliográficas

Abdi, H. (2007). Metric multidimensional scaling (MDS): analyzing distance matrices.

Encyclopedia of measurement and statistics, 1-13.

Awan, A. (2023, march). Introduction to t-SNE. Datacamp.


https://www.datacamp.com/tutorial/introduction-t-sne?
dc_referrer=https%3A%2F%2F2.zoppoz.workers.dev%3A443%2Fhttps%2Fwww.google.com%2F

Belkina, A. C., Ciccolella, C. O., Anno, R., Halpert, R., Spidlen, J. y Snyder-Cappione,

J. E. (2019). Automated optimized parameters for T-distributed stochastic neighbor

embedding improve visualization and analysis of large datasets. Nature

communications, 10(1), 5415.

Cheng, Y., Wang, X. y Xia, Y. (2021). Supervised t-distributed stochastic neighbor

embedding for data visualization and classification. INFORMS journal on computing,

33(2), 566-585.

GeeksforGeeks. (2024, Mayo 19). What is Multidimensional Scaling?


https://www.geeksforgeeks.org/what-is-multidimensional-scaling/

Sachinsoni. (2024, febrero 11). Mastering t-SNE (t-distributed stochastic neighbor

embedding). M e d i u m . https://medium.com/@sachinsoni600517/mastering-t-sne-t-

distributed-stochastic-neighbor-embedding-0e365ee898ea

Soni, J., Prabakar, N. y Upadhyay, H. (2020). Visualizing high-dimensional data using

t-distributed stochastic neighbor embedding algorithm. Principles of data science,

189-206.

Tenenbaum, J. B., de Silva, V. y Langford, J. C. (2000). A global geometric

framework for nonlinear dimensionality reduction. Science, 290(5500), 2319-2323.


https://doi.org/10.1126/science.290.5500.2319

Aprendizaje Automático No Supervisado 26


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Aprendizaje Automático No Supervisado 27


Tema 7. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

Reducción de dimensiones: t-SNE

Organización de datos. (2020, junio 6). Reducción de dimensiones: t-SNE [Vídeo].

YouTube. https://www.youtube.com/watch?v=NtvFoZORPB8&t=620s

Explica de forma detallada el paso a paso del algoritmo con base en un artículo de

investigación.

Aprendizaje Automático No Supervisado 28


Tema 7. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Entendiendo cómo trabaja la reducción de


dimensionalidad

Wang, Y., Huang, H., Rudin, C. y Shaposhnik, Y. (2021). Understanding How

Dimension Reduction Tools Work: An Empirical Approach to Deciphering t-SNE,

UMAP, TriMap, and PaCMAP for Data Visualization. Journal of Machine Learning

Research, 22, 1-73. https://www.jmlr.org/papers/volume22/20-1061/20-1061.pdf

El objetivo del paper es que el lector comprenda los aspectos más importantes de

algunas técnicas de reducción de dimensiones. A partir de las técnicas estudiadas,

los autores diseñan un nuevo algoritmo denominado proyección de aproximación de

colector controlado por pares (PaMAP), que preserva tanto la estructura local como

la global.

Aprendizaje Automático No Supervisado 29


Tema 7. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Cuál es el objetivo principal del t-SNE?

A. Maximizar la variación global en los datos.

B. Preservar las relaciones locales entre puntos de datos.

C. Minimizar el uso de recursos computacionales.

D. Garantizar la linealidad de los datos.

2. ¿Cuál de las siguientes técnicas es más adecuada para datos lineales?

A. t-SNE.

B. PCA.

C. MDS.

D. Isomap.

3. ¿Cuál es una de las desventajas del t-SNE?

A. Es muy eficiente computacionalmente.

B. Preserva la estructura global de los datos.

C. Puede quedarse atascado en mínimos locales.

D. Es muy sensible a los hiperparámetros.

4. ¿Qué técnica utiliza distribuciones gaussianas para calcular similitudes en alta

dimensionalidad?

A. PCA.

B. MDS.

C. t-SNE.

D. Isomap.

Aprendizaje Automático No Supervisado 30


Tema 7. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Qué significa MDS en el contexto de la reducción de dimensionalidad?

A. Minimum Dimension Search.

B. Multi-Dimensional Scaling.

C. Maximum Distance Sorting.

D. Multi-Data Scaling.

6. ¿Cuál de las siguientes técnicas es especialmente útil para datos no lineales?

A. Isomap.

B. t-SNE

C. MDS.

D. Todas las anteriores.

7. ¿Qué técnica de reducción de dimensionalidad utiliza la divergencia de Kullback-

Leibler?

A. PCA.

B. MDS.

C. t-SNE.

D. Isomap.

8. ¿Cuál de las siguientes aplicaciones es adecuada para t-SNE?

A. Reducción de dimensionalidad de datos lineales.

B. Visualización de datos complejos y no lineales.

C. Análisis de encuestas de preferencias.

D. Cálculo de distancias euclidianas entre puntos.

Aprendizaje Automático No Supervisado 31


Tema 7. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Qué técnica utiliza el algoritmo de Floyd-Warshall para calcular el camino más

corto entre pares de puntos?

A. PCA.

B. MDS.

C. t-SNE.

D. Isomap.

10. ¿Cuál de las siguientes afirmaciones sobre las técnicas de reducción de

dimensionalidad es correcta?

A. MDS es más adecuado que t-SNE para datos con estructuras no lineales.

B. PCA puede preservar mejor las relaciones locales entre los datos que t-

SNE.

C. t-SNE es computacionalmente más eficiente que PCA para grandes

conjuntos de datos.

D. Isomap utiliza el cálculo de distancias geodésicas para preservar las

relaciones no lineales en los datos.

Aprendizaje Automático No Supervisado 32


Tema 7. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 8

Aprendizaje Automático No Supervisado

Tema 8. Detección de
anomalías
Índice
Esquema

Ideas clave

8.1. Introducción y objetivos

8.2. Métodos estadísticos para la detección de anomalías

8.3. Algoritmos basados en distancia

8.4. Algoritmos basados en densidad

8.5. Isolation Forest

8.6. Cuaderno de ejercicios

8.7. Referencias bibliográficas

A fondo

¿Cuáles son los algoritmos más comunes de aprendizaje


no supervisado para detectar anomalías?

Detección de anomalías en tiempo real

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 8. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.1. Introducción y objetivos

Los problemas de detección de anomalías son una aplicación común del

aprendizaje automático. Pero ¿qué es la detección de anomalías? Imagina que

trabajas en una empresa que fabrica motores de aviones. A medida que los motores

salen de la cadena de montaje, se realiza una fase de aseguramiento de la calidad

en la cual se miden algunas características de los motores (ejemplo: calor generado

y vibración). Supongamos que tenemos un conjunto de datos con m motores que han

sido evaluados positivamente y han dado como resultado lo dibujado en la siguiente

gráfica.

Figura 1. Distribución de valores de vibración y calor generado por motores. Fuente: Indira, 2020.

Supongamos que al día siguiente se fabrica un nuevo motor y se utiliza un método

de detección de anomalías para comprobar su correcto funcionamiento, comparando

el de este motor nuevo con respecto a los motores previos. Obtenemos una gráfica

como la Figura 2.

Aprendizaje Automático No Supervisado 4


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Distribución de valores de vibración y calor generado por motores. Ejemplo de una instancia

correcta. Fuente: adaptado de Indira, 2020.

Lo más probable es que el motor funcione correctamente, pues su comportamiento

es muy similar al de motores previos. Sin embargo, la gráfica es como la Figura 3.

Figura 3. Distribución de valores de vibración y calor generado por motores. Ejemplo de una instancia

anómala. Fuente: adaptado de Indira, 2020.

Lo más probable es que el motor presente algún tipo de anomalía.

Aprendizaje Automático No Supervisado 5


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En este tipo de problemas partimos de un conjunto de datos que contiene registros

normales, o bien la gran mayoría de ellos lo son. El objetivo es utilizar este conjunto

como referencia y observar si existen nuevos ejemplos que son anómalos.

La detección de anomalías combina las técnicas de aprendizaje

supervisado para generar un modelo de valores normales y,

posteriormente, se utiliza este modelo con nuevos registros para

detectar valores anómalos o inusuales.

Una anomalía es una observación que se desvía del comportamiento o patrón

esperado de un conjunto de datos determinado. Estas técnicas también se conocen

en la literatura con el nombre de detección de outliers. En esencia, un outlier es un

valor poco habitual y, por tanto, puede ser considerado una anomalía.

La detección de anomalías se utiliza ampliamente en diversas aplicaciones, como

detección de fraude, detección de intrusiones en la red, diagnóstico médico,

mantenimiento predictivo, control de calidad de fabricación, monitoreo de redes


sociales, robo de identidad, monitoreo de tráfico, violación de datos, video vigilancia,

detección de fake news, entre otros.

Técnicas para detectar anomalías

Existen diversas técnicas que nos ayudan a detectar anomalías, pero las más

comunes son (Desai, 2023):

▸ Detección de anomalías con algoritmos supervisados: se utilizan datos

etiquetados para entrenar un modelo que incluye instancias normales y anómalas.

▸ Detección de anomalías con algoritmos no supervisados: el modelo aprende a

identificar anomalías sin conocimiento previo de lo que constituye un


comportamiento normal. Muy útil cuando no hay etiquetas disponibles o cuando las

Aprendizaje Automático No Supervisado 6


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

anomalías son raras o difíciles de encontrar.

▸ Detección de anomalías con algoritmos semisupervisados: utiliza la

combinación de datos etiquetados y no etiquetados para entrenar el modelo. El

modelo aprende a identificar anomalías en los datos sin etiquetar en función de lo


que aprende de los datos etiquetados.

▸ Detección estadística de anomalías: utilizando técnicas estadísticas para detectar

anomalías basadas en la distribución de los datos. Implica identificar puntos de datos


que quedan fuera de un rango predefinido de valores o que tienen propiedades
estadísticas inusuales.

Cada técnica de detección de anomalías tiene sus propias fortalezas y debilidades, y

la elección de la técnica depende de la aplicación específica y las características del


conjunto de datos.

La detección de valores atípicos y el análisis de agrupamiento son tareas muy

relacionadas. La agrupación encuentra la mayoría de los patrones en un conjunto de

datos y los organiza en consecuencia, mientras que la detección de valores atípicos

intenta capturar aquellos casos excepcionales que se desvían de la mayoría de los

patrones.

Tipos de valores atípicos

Se pueden clasificar en tres categorías:

▸ Valor atípico global: hay una desviación significativa del resto de datos.

▸ Valor atípico contextual: el objeto se desvía significativamente según un contexto

seleccionado. Por ejemplo, 28 grados centígrados es atípico para un invierno en


Siberia, pero no un valor atípico para un verano en España.

▸ Valor atípico colectivo: cuando un subconjunto de datos en un conjunto se desvía

del conjunto completo, incluso si los objetos de datos individuales pueden no ser

Aprendizaje Automático No Supervisado 7


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

valores atípicos. Por ejemplo, un electrocardiograma cuando a un paciente le quitan


los electrodos presenta un trazo diferente a un electrocardiograma normal.

En este tema veremos métodos estadísticos, algoritmos no supervisados de

agrupamiento basados en distancias y basados en densidad que nos ayudan a

detectar anomalías.

Ventajas y desventajas

Antes de entrar en materia veamos algunas ventajas y desventajas de los algoritmos

de detección de anomalías.

Ventajas:

▸ Detección temprana de anomalías: ayuda a identificar problemas potenciales y

oportunidades de mejora antes de que se vuelvan críticos. Tomando medidas


proactivas se pueden prevenir o mitigar los impactos negativos.

▸ Precisión mejorada: una vez se eliminan los valores atípicos, los análisis

estadísticos y los modelos de aprendizaje automático pueden lograr una mayor


precisión y confiabilidad.

▸ Seguridad mejorada: la detección de anomalías puede ayudar a identificar posibles

amenazas a la seguridad, como intrusiones en la red, fraude o ataques cibernéticos.

▸ Eficiencia mejorada: identificar y eliminar valores atípicos, se pueden optimizar

operaciones, reducir errores y mejorar la productividad.

Desventajas:

▸ Falsos positivos: con la detección de anomalías se puede identificar puntos de

datos normales como valores atípicos, lo que genera falsos positivos. Esto puede
generar alertas o acciones innecesarias y una pérdida de tiempo y de recursos.

▸ Preprocesamiento de datos: para poder detectar bien las anomalías es necesario

Aprendizaje Automático No Supervisado 8


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

realizar un preprocesamiento de datos cuidadoso y una selección de funciones para


garantizar resultados precisos y confiables. Este proceso puede ser engorroso y
consumir mucho tiempo y recursos.

▸ Selección del modelo: es un desafío encontrar el modelo correcto, ya que cada

modelo tiene sus fortalezas y sus debilidades y puede ser más o menos adecuado
para ciertos tipos de datos o aplicaciones.

▸ Datos desequilibrados: puede ser un desafío en conjuntos de datos

desequilibrados, donde las anomalías son la minoría. Conduciendo a bajas tasas de

detección y altas tasas de falsos negativos.

Como objetivos de este tema nos planteamos:

▸ Introducir los métodos de detección de anomalías y su principal aplicación.

▸ Describir cómo se pueden utilizar métodos estadísticos y de aprendizaje automático

para detectar anomalías.

Aprendizaje Automático No Supervisado 9


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.2. Métodos estadísticos para la detección de


anomalías

Para llevar a cabo la tarea de detección de anomalías, existen diversos métodos

estadísticos que se pueden aplicar tanto a variables individuales (univariables) como

a múltiples variables simultáneamente (multivariables).

L o s métodos estadísticos univariables se centran en el análisis de una sola

variable a la vez. Estos métodos incluyen técnicas como el cálculo de la media y la

desviación estándar para identificar valores que se desvían significativamente del

comportamiento esperado, el uso del Z-Score para estandarizar las puntuaciones y


detectar outliers, así como la aplicación de la media móvil para observar tendencias y

detectar irregularidades a lo largo del tiempo. La extensión de estos métodos a

escenarios multivariables también es posible.

Este tipo de métodos se basa en el análisis de las propiedades estadísticas de los

datos para identificar casos que se desvían significativamente de la norma. Es decir,

que las anomalías tienen atributos estadísticos distintos en comparación con los

puntos normales.

En el ámbito de la estadística, las pruebas son fundamentales para la toma de

decisiones y la prueba de hipótesis. Se utilizan pruebas paramétricas y no

paramétricas para discernir patrones y relaciones importantes en los datos, validar

suposiciones o desacreditar ciertas afirmaciones.

▸ Las no paramétricas son herramientas eficaces para detectar anomalías en

conjuntos de datos donde no se pueden hacer suposiciones sobre la distribución de


los datos. Aprovechando estas técnicas, podemos detectar anomalías basadas en
métricas como la media y los cuantiles.

▸ Las paramétricas se basan en el supuesto de que los datos siguen una distribución

Aprendizaje Automático No Supervisado 10


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

específica, normalmente distribución normal o gaussiana. También asume otras


condiciones como homogeneidad de varianzas e independencia de observaciones.
Si se cumplen dichos criterios, las pruebas paramétricas son herramientas
poderosas para detectar anomalías. Las técnicas paramétricas comunes son la

prueba de Z-Score y el test de T-Score.

Veamos en detalle algunas de ellas.

Pruebas no paramétricas

Las pruebas no paramétricas son útiles para detectar anomalías especialmente

cuando no se pueden hacer suposiciones sobre la distribución de los datos. A


continuación, presentamos algunos métodos no paramétricos como el método del

percentil y la media móvil. Existen otras pruebas no paramétricas comunes para la

detección de anomalías: test de Grubbs (test de Grubbs para un outlier), test de

Tukey (prueba de rango intercuartílico), test de Wilcoxon (test de Wilcoxon para

muestras apareadas), test de Kruskal-Wallis y test de Mann-Whitney U.

Método del percentil

El método del percentil define un umbral con base en el rango percentil de los puntos

de datos. Identificar anomalías como valores que están por debajo o por encima de

un percentil específico es útil cuando se trata de distribuciones asimétricas no

gaussianas.

Utilicemos este método con el mismo conjunto de datos del ejemplo anterior:

# Definir percentiles para marcar las anomalías


lower_percentile = 1
upper_percentile = 99

# Calcular los valores de los percentiles


lower_bound = np.percentile(data, lower_percentile)
upper_bound = np.percentile(data, upper_percentile)

# Identificar anomalías
anomalies = np.where((data < lower_bound) | (data > upper_bound))

Aprendizaje Automático No Supervisado 11


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Mostrar los datos y marcar las anomalías


plt.figure(figsize=(10, 6))
plt.plot(data, 'bo', markersize=5, label='Dato normal')
plt.plot(anomalies[0], data[anomalies], 'ro', markersize=7,
label='Anomalía')
plt.axhline(y=lower_bound, color='g', linestyle='--',
label=f'{lower_percentile} Percentil')
plt.axhline(y=upper_bound, color='r', linestyle='--',
label=f'{upper_percentile} Percentil')
plt.title('Detección de anomalías utilizando Percentiles')
plt.legend()
plt.show()

# Imprimir las anomalías detectadas


print(f'Anomalías detectadas: {data[anomalies]}')

Figura 4. Detección de datos anómalos utilizando el método del percentil. Fuente: elaboración propia.

Método de la media móvil

Este método calcula la media móvil de los puntos de datos y compara cada dato con

la media. Las anomalías suelen estar desviados significativamente del promedio

móvil.

Aprendizaje Automático No Supervisado 12


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Veamos un ejemplo en Python:

import numpy as np
import matplotlib.pyplot as plt

# Generación de datos sintéticos de una serie temporal


np.random.seed(0)
data = np.random.normal(0, 1, 100) # 100 datos con distribución normal

# Añadir algunas anomalías


data[50] = 8
data[51] = -9
data[70] = 10
data[71] = -10

plt.figure(figsize=(10, 6))
plt.plot(data, 'bo-', markersize=5)
plt.title('Serie temporal con posibles anomalías')
plt.show()

Figura 5. Ejemplo de serie temporal creada a partir de datos generados al azar. Fuente: elaboración

propia.

# Definir la ventana para la media móvil


window_size = 10

# Calcular la media móvil


rolling_mean = np.convolve(data, np.ones(window_size)/window_size,
mode='valid')

Aprendizaje Automático No Supervisado 13


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Calcular la desviación estándar de la ventana móvil


rolling_std = np.array([np.std(data[i:i+window_size]) for i in
range(len(data) - window_size + 1)])

# Definir el umbral para considerar un punto como anomalía (por ejemplo, 2


desviaciones estándar)
threshold = 2

# Identificar anomalías
anomalies = []
for i in range(len(rolling_mean)):
if np.abs(data[i + window_size - 1] - rolling_mean[i]) > threshold *
rolling_std[i]:
anomalies.append(i + window_size - 1)

# Mostrar los datos, la media móvil y las anomalías


plt.figure(figsize=(10, 6))
plt.plot(data, 'bo-', markersize=5, label='Dato')
plt.plot(range(window_size - 1, len(data)), rolling_mean, 'r-',
label='Media Móvil')
plt.plot(anomalies, data[anomalies], 'ro', markersize=7, label='Anomalía')
plt.title('Detección de anomalías utilizando Media Móvil')
plt.legend()
plt.show()

# Imprimir las anomalías detectadas


print(f'Anomalías detectadas: {data[anomalies]}')

Aprendizaje Automático No Supervisado 14


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 6. Ejemplo de detección de anomalía en una serie temporal utilizando la técnica de media móvil.

Fuente: elaboración propia.

Pruebas paramétricas

Estas técnicas se basan en parámetros estadísticos como la media y la desviación

estándar para identificar puntos de datos que se desvían significativamente de la

norma. Cada prueba actúa sobre un escenario diferente, por ejemplo, Z-Score y T-

Score se utilizan para comparar las medias de uno o dos grupos. Mientras que

ANOVA se utiliza para comparar las medias de tres o más grupos.

Z-Score

El Z-Score es una técnica estadística que nos permite detectar anomalías. Una vez

calculado el valor de Z para cada punto de datos, aquellos que superen un umbral de

x desviaciones estándar que se alejen de la media, se consideran anomalías.

Veamos un ejemplo donde el umbral está en 3 desviaciones estándar:

import numpy as np
import matplotlib.pyplot as plt

# Generación de datos sintéticos


np.random.seed(0)
data = np.random.normal(0, 1, 100) # 100 datos con distribución normal

# Añadir algunas anomalías


data = np.append(data, [8, 9, 10, -10, -9, -8])

plt.figure(figsize=(10, 6))
plt.plot(data, 'bo', markersize=5)
plt.title('Datos con posibles anomalías')
plt.show()

Aprendizaje Automático No Supervisado 15


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 7. Diagrama de dispersión de datos generados aleatoriamente. Fuente: elaboración propia.

from scipy import stats

# Calcular la media y desviación estándar


mean = np.mean(data)
std_dev = np.std(data)

# Calcular el Z-Score
z_scores = stats.zscore(data)

# Determinar los umbrales para marcar anomalías


threshold = 3
anomalies = np.where(np.abs(z_scores) > threshold)

# Mostrar los datos y marcar las anomalías


plt.figure(figsize=(10, 6))
plt.plot(data, 'bo', markersize=5, label='Dato normal')
plt.plot(anomalies[0], data[anomalies], 'ro', markersize=7,
label='Anomalía')
plt.title('Detección de anomalías utilizando Z-Score')
plt.legend()
plt.show()

# Imprimir las anomalías detectadas


print(f'Anomalías detectadas: {data[anomalies]}')

Aprendizaje Automático No Supervisado 16


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 8. Detección de datos anómalos utilizando DBSCAN. Fuente: elaboración propia.

T-Score

T-Score es similar al Z-Score, pero el T-Score se utiliza principalmente cuando el

tamaño de la muestra es pequeño y la desviación estándar de la población no es

conocida.

Mostramos un ejemplo en Python utilizando datos sintéticos:

import numpy as np
import pandas as pd
from scipy import stats

# Generar datos de ejemplo


np.random.seed(0)
data = np.random.normal(50, 10, 30) # 30 datos con media 50 y desviación
estándar 10
data = np.append(data, [100, 110, 120]) # Añadir algunas anomalías

# Convertir a DataFrame para mayor comodidad


df = pd.DataFrame(data, columns=['Valor'])

# Calcular el T-Score
t_scores = stats.t.sf(np.abs(stats.t.cdf((df['Valor'] - df['Valor'].mean())

Aprendizaje Automático No Supervisado 17


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

/ df['Valor'].std(), len(df)-1)), len(df)-1)

# Añadir el T-Score al DataFrame


df['T-Score'] = (df['Valor'] - df['Valor'].mean()) /
df['Valor'].std(ddof=1)

# Identificar las anomalías (por ejemplo, T-Score > 3 o T-Score < -3)
df['Anomalía'] = df['T-Score'].apply(lambda x: 'Sí' if np.abs(x) > 3 else
'No')

# Mostrar resultados
print(df)

# Si quieres mostrar solo las anomalías


print("\nAnomalías detectadas:")
print(df[df['Anomalía'] == 'Sí'])

Aprendizaje Automático No Supervisado 18


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 9. Detección de datos anómalos utilizando T-Score. Fuente: elaboración propia.

A continuación, veremos el vídeo Métodos estadísticos utilizados para detectar

anomalías.

Aprendizaje Automático No Supervisado 19


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=3635fb20-9410-
4cc7-8157-b1bf001bf30b

Aprendizaje Automático No Supervisado 20


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.3. Algoritmos basados en distancia

Los métodos basados en distancia detectan anomalías midiendo la distancia entre

puntos de datos en el espacio de características. La idea principal es que los puntos

de datos que están lejos de otros puntos se consideran anomalías.

Principios básicos

▸ Distancia euclidiana: a menudo se usa para medir la distancia entre puntos en el

espacio de características.

▸ Distancia al vecino más cercano: los puntos de datos que tienen una distancia

mayor que un umbral a su vecino más cercano se consideran anomalías.

▸ Distancia media a k-vecinos más cercanos: similar al anterior, pero considera la

distancia media a los k-vecinos más cercanos para determinar si un punto es una
anomalía.

Métodos comunes basados en distancia

k-Nearest Neighbors (k-NN) para detección de anomalías

▸ Detecta anomalías basándose en la distancia a los k vecinos más cercanos.

▸ Cómo funciona:

• Calcular distancias: calcula la distancia de cada punto a sus k vecinos más


cercanos.

• Determinar umbral: define un umbral de distancia.

• Detección de anomalías: los puntos cuya distancia a sus k vecinos más cercanos
excede el umbral se consideran anomalías.

Distance-Based Outlier Detection (DBOD)

Aprendizaje Automático No Supervisado 21


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Detecta anomalías considerando la distancia a un conjunto de vecinos.

▸ Cómo funciona:

• Definir vecinos: para cada punto, encuentra sus k vecinos más cercanos.

• Calcular distancia: calcula la distancia al vecino más cercano y a otros vecinos.

• Detección de anomalías: los puntos con las mayores distancias son considerados
anomalías.

Distancia de Mahalanobis

▸ Utiliza la distancia de Mahalanobis para detectar anomalías en datos multivariados

considerando la correlación entre variables.

▸ Cómo funciona:

• Calcular la distancia: usa la media y la covarianza de los datos para calcular la


distancia de Mahalanobis.

• Detección de anomalías: los puntos con una distancia de Mahalanobis alta se


consideran anomalías.

Métodos de distancia basados en agrupamiento

▸ Usa algoritmos de clustering (como K-Means) para detectar anomalías basado en la

distancia a los centroides de los clústeres.

▸ Cómo funciona:

• Aplicar clustering: aplica un algoritmo de clustering para agrupar los datos.

• Calcular distancias: calcula la distancia de cada punto al centroide de su clúster.

• Detección de anomalías: los puntos con grandes distancias a sus centroides son
considerados anomalías.

Aprendizaje Automático No Supervisado 22


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Aprendizaje Automático No Supervisado 23


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.4. Algoritmos basados en densidad

Los algoritmos basados en densidad identifican anomalías detectando puntos en el

espacio de datos que están en regiones de baja densidad. Los puntos de datos que

no tienen suficientes vecinos cercanos o están significativamente alejados de otros

puntos se consideran anomalías. Tienen en cuenta lo siguiente:

▸ La densidad local de un punto se calcula considerando su proximidad a otros

puntos. Los puntos en áreas de baja densidad se consideran anomalías.

▸ Los puntos que tienen una densidad significativamente menor que la densidad

media de sus vecinos se consideran anomalías.

Los algoritmos más comunes son: Local Outlier Factor (LOF), Density-Based Spatial

Clustering of Applications with Noise (DBSCAN) y One-Class SVM con Kernel

Gaussiano (RBF).

Veamos en detalle el DBSCAN y el LOF:

DBSCAN

Una simple analogía nos ayuda a entender cómo funciona DBSCAN para detectar

anomalías. Imaginemos que tenemos un montón de datos dibujados en un mapa y


queremos encontrar los que son raros o no encajan en el grupo.

Algoritmo

Vamos a ver el paso a paso del algoritmo:

▸ Comenzamos seleccionando aleatoriamente un punto de datos.

▸ Definimos un radio ϵ y un número mínimo de puntos.

▸ Verifiquemos los puntos vecinos. Examinemos los puntos de datos dentro del radio

Aprendizaje Automático No Supervisado 24


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

definido alrededor del punto seleccionado.

▸ Si hay al menos tantos puntos como lo definimos inicialmente dentro de un radio

épsilon, consideramos que el punto seleccionado y los puntos cercanos conforman


un grupo.

▸ Ahora, se repite el proceso con cada punto dentro del grupo recién formado. Si se

encuentran puntos adicionales los agregamos al grupo. Continuamos de forma


iterativa, expandiendo el grupo hasta que no se puedan agregar más puntos.

▸ Identificación de valores atípicos o ruido. Cualquier punto que este fuera del grupo

después del proceso de expansión se etiqueta como valor atípico o ruido.

Imaginemos que estamos en un campo con un grupo de personas

dispersas. Algunas personas están juntas y otras están solas. DBSCAN

nos ayuda a identificar dos cosas (Hiraltalsaniya, 2023):

Grupos de jugadores: es como si cogiésemos a una persona cualquiera,

le ponemos un hula hoop imaginario simulando una distancia máxima y

comprobamos cuántas personas más hay dentro de ese hula hoop. Si el

número de personas es suficiente, se conformaría el grupo.

Jugadores solitarios: una vez conformado el grupo, se elige una persona

dentro del grupo y se le coloca un hula hoop y comprobamos si hay más


personas dentro. Las personas que están dentro del hula hoop se agregan

al grupo y el proceso se continúa hasta que no existan más personas para

agregar.

Ahora viene lo interesante, cualquier persona que no esté en un grupo, es

un caso atípico o jugador en solitario.

A continuación, vamos a poner un ejemplo de implementación en Python:

Aprendizaje Automático No Supervisado 25


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler

# Generación de datos sintéticos


centers = [[0, 0], [5, 5]]
X, labels_true = make_blobs(n_samples=300, centers=centers,
cluster_std=0.5, random_state=0)

# Añadir ruido (anomalías)


np.random.seed(0)
X = np.vstack([X, np.random.uniform(low=-5, high=10, size=(20, 2))])

# Escalar los datos


X = StandardScaler().fit_transform(X)

# Aplicación del algoritmo DBSCAN


db = DBSCAN(eps=0.3, min_samples=10).fit(X)
labels = db.labels_

# Identificación de núcleos y ruido


core_samples_mask = np.zeros_like(labels, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)
print(f'Número de clusters estimados: {n_clusters}')
print(f'Número de puntos de ruido: {n_noise}')

# Visualización de los resultados


unique_labels = set(labels)
colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1,
len(unique_labels))]

for k, col in zip(unique_labels, colors):


if k == -1:
# Negro para el ruido.
col = [0, 0, 0, 1]
class_member_mask = (labels == k)
xy = X[class_member_mask &amp; core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
markeredgecolor='k', markersize=14)
xy = X[class_member_mask &amp; ~core_samples_mask]
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
markeredgecolor='k', markersize=6)
plt.title('Clusters detectados por DBSCAN')

Aprendizaje Automático No Supervisado 26


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

plt.show()

Figura 10. Detección de datos anómalos utilizando DBSCAN. Fuente: elaboración propia.

A continuación, veremos el vídeo DBSCAN para detectar anomalías.

Aprendizaje Automático No Supervisado 27


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=0f32b4f1-1a0f-

4a0a-9e9f-b1bf00257807

Local Outlier Factor (LOF)

El LOF mide la densidad local de un punto en comparación con la densidad de sus

vecinos más cercanos. Detecta anomalías en datos de alta dimensión y en clústeres

de diferentes densidades.

¿Cómo funciona?

▸ Distancia k-vecino más cercano: para cada punto, se calcula la distancia al k-

ésimo vecino más cercano.

▸ Densidad local: se calcula la densidad local de un punto como la inversa de la

distancia promedio a sus k vecinos más cercanos.

▸ Factor de outlier local (LOF): compara la densidad local del punto con la densidad

local de sus vecinos. Un LOF significativamente mayor que 1 indica una anomalía.

Ejemplo en Python

from sklearn.neighbors import LocalOutlierFactor


import numpy as np

# Generar datos de ejemplo


np.random.seed(0)
data = np.random.normal(50, 10, (100, 2))

# Añadir algunas anomalías


data = np.append(data, [[100, 100], [110, 110], [120, 120]], axis=0)

# Aplicar LOF para detección de anomalías


lof = LocalOutlierFactor(n_neighbors=20)
outlier_labels = lof.fit_predict(data)

# Los puntos con etiqueta -1 son anomalías


anomalías = data[outlier_labels == -1]

Aprendizaje Automático No Supervisado 28


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

print(anomalías)

Figura 11. Detección de datos anómalos utilizando LOF. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 29


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.5. Isolation Forest

Existen otros métodos como el Isolation Forest que no están basados ni en distancia

ni en densidad. Es un algoritmo de aprendizaje automático no supervisado. Como su

nombre lo indica, es un método basado en árboles de decisión, similar al Random

Forest.

La idea principal del Isolation Forest se basa en que las anomalías son datos «poco

frecuentes» y «diferentes» que se aíslan fácilmente. Es decir, se necesitan pocas

particiones para aislar una anomalía (Liu, Ting y Zhou, 2008).

Algoritmo

Supongamos que tenemos los siguientes puntos:

Figura 12. Paso 1, algoritmo Isolation Forest. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 30


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Se crean múltiples árboles de aislamiento (isolation trees). Y en cada uno de los

árboles se selecciona aleatoriamente una característica y un valor de corte para

particionar el espacio.

Por ejemplo, un primer árbol selecciona una dimensión de forma aleatoria y se

dividen aleatoriamente los datos a lo largo de la dimensión. En la Figura 13 se puede

observar una división sobre el eje X.

Figura 13. Selección aleatoria de dimensión y primera división de los datos. Fuente: elaboración propia.

Cada espacio define su propio subárbol. En el caso de la Figura 13, el corte separa

un punto solitario del resto del conjunto. Como se muestra en la Figura 14.

Aprendizaje Automático No Supervisado 31


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 14. Subárbol generado a partir de la primera división sobre el eje X de los datos. Fuente:

elaboración propia.

Veamos otro ejemplo de un segundo árbol donde se seleccionan divisiones

diferentes. En la Figura 15 se puede ver como la primera división no aísla el valor

atípico.

Aprendizaje Automático No Supervisado 32


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 15. División de otro subárbol sobre el eje X. Fuente: elaboración propia.

En el segundo caso, el árbol tiene dos nodos, uno con los puntos de la izquierda y

otro con los puntos de la derecha, como se muestra en la Figura 16.

Aprendizaje Automático No Supervisado 33


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 16. Segundo subárbol generado a partir de la división realizada en el eje X. Fuente: elaboración

propia.

Este proceso se realiza recursivamente hasta que todos los puntos del conjunto de

datos estén aislados o se llegue a la profundidad máxima establecida como

parámetro.

Aprendizaje Automático No Supervisado 34


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 17. Segunda división realizada sobre el eje X y subárbol resultante. Fuente:
elaboración propia.

Las instancias que quedan aisladas más rápidamente suelen ser anomalías,

requieren menos particiones.

La profundidad promedio en las que una observación finaliza en todos los árboles es

la que se utiliza para calcular la puntuación de una anomalía. Las puntuaciones bajas

indican que la observación fue aislada rápidamente, y, por ende, es muy probable

Aprendizaje Automático No Supervisado 35


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

que se trate de una anomalía. En la Figura 18 creamos un ejemplo hipotético donde

analizamos una observación y contamos el número de divisiones en cada árbol antes

del aislamiento definitivo, promediamos y ese es el puntuaje de anomalía que se le

asigna.

Figura 18. Promedio de divisiones de una observación en diferentes árboles. Fuente: elaboración propia.

Veamos un ejemplo de su implementación en Python:

import numpy as np
import pandas as pd
from sklearn.ensemble import IsolationForest
import matplotlib.pyplot as plt

# Crear un DataFrame con datos sintéticos


np.random.seed(42)
data = np.random.normal(0, 1, 100).tolist() # Datos normales
data.extend([10, 15, -10, -15]) # Añadir anomalías

df = pd.DataFrame(data, columns=['value'])

# Visualizar los datos


plt.figure(figsize=(10, 6))
plt.plot(df['value'], label='Value')
plt.title('Datos Sintéticos con Anomalías')
plt.xlabel('Índice')
plt.ylabel('Valor')
plt.legend()

Aprendizaje Automático No Supervisado 36


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

plt.show()

# Ajustar el modelo Isolation Forest


model = IsolationForest(contamination=0.1, random_state=42) # Ajustar el
parámetro contamination según tus necesidades
df['anomaly_score'] = model.fit_predict(df[['value']])

# Filtrar anomalías
df['anomaly'] = df['anomaly_score'] == -1

# Mostrar los resultados


print(df)

# Visualizar resultados
plt.figure(figsize=(10, 6))
plt.plot(df['value'], label='Value')
plt.scatter(df[df['anomaly']].index, df[df['anomaly']]['value'],
color='red', label='Anomaly')
plt.title('Detección de Anomalías usando Isolation Forest')
plt.xlabel('Índice')
plt.ylabel('Valor')
plt.legend()
plt.show().

Aprendizaje Automático No Supervisado 37


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.6. Cuaderno de ejercicios

Ejercicio 1. Detección de anomalías con Z-Score

El Z-Score es una técnica estadística utilizada para identificar anomalías. Esta

técnica calcula cuántas desviaciones estándar se aleja un punto de datos de la

media del conjunto de datos. Con los siguientes datos sintéticos generados en
Python responde a las preguntas planteadas.

import numpy as np

# Generación de datos sintéticos


np.random.seed(42)
data = np.random.normal(0, 1, 100) # 100 datos con distribución normal
data = np.append(data, [8, -8, 10, -10]) # Añadir algunas anomalías

▸ Calcula el Z-Score para cada punto de datos en el conjunto.

▸ Identifica los puntos de datos que se consideran anomalías usando un umbral de 3

desviaciones estándar.

▸ ¿Cuáles son las anomalías detectadas y por qué se consideran como tales?

Solución

1. Calcular el Z-Score:

import numpy as np
from scipy import stats

# Generación de datos sintéticos


np.random.seed(42)
data = np.random.normal(0, 1, 100)
data = np.append(data, [8, -8, 10, -10])

# Calcular el Z-Score
z_scores = stats.zscore(data)

2. Identificar anomalías con umbral de 3 desviaciones estándar:

Aprendizaje Automático No Supervisado 38


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

threshold = 3
anomalies = np.where(np.abs(z_scores) > threshold)

3. Anomalías detectadas:

detected_anomalies = data[anomalies]
print(f'Anomalías detectadas: {detected_anomalies}')

Anomalías detectadas: [ 8. -8. 10. -10.].

Los valores que se encuentran a más de 3 desviaciones estándar de la media son

considerados anomalías. En este caso, los valores 8, -8, 10 y -10 son detectados

como anomalías.

Ejercicio 2. Detección de anomalías con media móvil

La media móvil es un método utilizado para analizar series temporales. Ayuda a


suavizar las fluctuaciones de corto plazo y destacar las tendencias de largo plazo.

Con los datos sintéticos generados en Python responde a las siguientes preguntas:

▸ Calcula la media móvil para la serie temporal usando una ventana de tamaño 5.

▸ Identifica las anomalías en los datos comparando cada punto con la media móvil y

usando un umbral de 2 desviaciones estándar.

▸ ¿Qué puntos de datos se consideran anomalías y cuál es la razón?

import numpy as np
import matplotlib.pyplot as plt

# Generación de datos sintéticos de una serie temporal


np.random.seed(0)
data = np.random.normal(0, 1, 100) # 100 datos con distribución normal
data[50] = 8 # Añadir anomalías
data[70] = -8

# Definir la ventana para la media móvil


window_size = 5

Aprendizaje Automático No Supervisado 39


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Solución

1. Calcular la media móvil para la serie temporal usando una ventana de tamaño 5.

import numpy as np
import matplotlib.pyplot as plt

# Generación de datos sintéticos de una serie temporal


np.random.seed(0)
data = np.random.normal(0, 1, 100)
data[50] = 8
data[70] = -8

# Definir la ventana para la media móvil


window_size = 5
rolling_mean = np.convolve(data, np.ones(window_size)/window_size,
mode='valid')

2. Identificar las anomalías en los datos comparando cada punto con la media móvil y

usando un umbral de 2 desviaciones estándar.

rolling_std = np.array([np.std(data[i:i+window_size]) for i in


range(len(data) - window_size + 1)])
threshold = 2
anomalies = [i + window_size - 1 for i in range(len(rolling_mean)) if
np.abs(data[i + window_size - 1] - rolling_mean[i]) > threshold *
rolling_std[i]]

3. ¿Qué puntos de datos se consideran anomalías y cuál es la razón?

detected_anomalies = data[anomalies]
print(f'Anomalías detectadas: {detected_anomalies}')

Anomalías detectadas: [ 8. -8.].

Los puntos de datos que se desvían significativamente de la media móvil, más de 2

desviaciones estándar, son considerados anomalías. En este caso, los valores 8 y -8

son detectados como anomalías.

Ejercicio 3. Detección de anomalías con DBSCAN

Aprendizaje Automático No Supervisado 40


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) es un

algoritmo de agrupamiento que identifica anomalías basándose en la densidad de

puntos de datos.

Con los datos sintéticos generados en Python responde a las siguientes preguntas:

▸ ¿Cuántos clústeres se han detectado? ¿Cuántos puntos se consideran ruido

(anomalías)?

▸ Explica cómo DBSCAN diferencia entre puntos de datos densamente agrupados y

puntos aislados.

▸ Identifica y lista los puntos de datos considerados como anomalías.

from sklearn.datasets import make_blobs


from sklearn.cluster import DBSCAN
import numpy as np

# Generación de datos sintéticos


centers = [[0, 0], [5, 5]]
X, _ = make_blobs(n_samples=300, centers=centers, cluster_std=0.5,
random_state=0)
X = np.vstack([X, np.random.uniform(low=-5, high=10, size=(20, 2))]) #
Añadir ruido

# Aplicación del algoritmo DBSCAN


db = DBSCAN(eps=0.3, min_samples=10).fit(X)
labels = db.labels_

Solución

1. ¿Cuántos clústeres se han detectado? ¿Cuántos puntos se consideran ruido

(anomalías)?

from sklearn.datasets import make_blobs


from sklearn.cluster import DBSCAN
import numpy as np

# Generación de datos sintéticos


centers = [[0, 0], [5, 5]]

Aprendizaje Automático No Supervisado 41


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

X, _ = make_blobs(n_samples=300, centers=centers, cluster_std=0.5,


random_state=0)
X = np.vstack([X, np.random.uniform(low=-5, high=10, size=(20, 2))])

# Aplicación del algoritmo DBSCAN


db = DBSCAN(eps=0.3, min_samples=10).fit(X)
labels = db.labels_
n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)

2. Explicar cómo DBSCAN diferencia entre puntos de datos densamente agrupados y

puntos aislados.

print(f'Número de clústeres estimados: {n_clusters}')


print(f'Número de puntos de ruido: {n_noise}')

Número de clústeres estimados: 2.

Número de puntos de ruido: 20.

DBSCAN detecta 2 clústeres y 20 puntos de ruido. Los puntos de ruido son

considerados anomalías, ya que no pertenecen a ningún clúster.

3. Identificar y listar los puntos de datos considerados como anomalías.

anomalies = X[labels == -1]


print(f'Anomalías detectadas: {anomalies}')

Ejercicio 4. Detección de anomalías con Local Outlier Factor (LOF)

El Local Outlier Factor (LOF) mide la densidad local de un punto comparándola con
la densidad de sus vecinos más cercanos.

Con los datos sintéticos generados en Python responde a las siguientes preguntas:

▸ ¿Cuántos puntos de datos se consideran anomalías según LOF?

▸ Explica brevemente cómo funciona el algoritmo LOF y cómo identifica anomalías.

▸ Lista las coordenadas de los puntos de datos que fueron detectados como

Aprendizaje Automático No Supervisado 42


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

anomalías.

from sklearn.neighbors import LocalOutlierFactor


import numpy as np

# Generar datos de ejemplo


np.random.seed(42)
data = np.random.normal(50, 10, (100, 2))
data = np.append(data, [[100, 100], [110, 110], [120, 120]], axis=0) #
Añadir algunas anomalías

# Aplicar LOF para detección de anomalías


lof = LocalOutlierFactor(n_neighbors=20)
outlier_labels = lof.fit_predict(data)

Solución

1. ¿Cuántos puntos de datos se consideran anomalías según LOF?

from sklearn.neighbors import LocalOutlierFactor


import numpy as np

# Generar datos de ejemplo


np.random.seed(42)
data = np.random.normal(50, 10, (100, 2))
data = np.append(data, [[100, 100], [110, 110], [120, 120]], axis=0)

# Aplicar LOF para detección de anomalías


lof = LocalOutlierFactor(n_neighbors=20)
outlier_labels = lof.fit_predict(data)

2. Explicar brevemente cómo funciona el algoritmo LOF y cómo identifica anomalías.

anomalies = data[outlier_labels == -1]


print(f'Anomalías detectadas: {anomalies}')

Los puntos con una etiqueta de -1 son considerados anomalías por LOF debido a

que tienen una densidad local significativamente menor que sus vecinos.

3. Listar las coordenadas de los puntos de datos que fueron detectados como

anomalías.

Aprendizaje Automático No Supervisado 43


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Anomalías detectadas: [[100. 100.], [110. 110.] y [120. 120.]].

Aprendizaje Automático No Supervisado 44


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

8.7. Referencias bibliográficas

Desai, U. (2023, abril 28). Unsupervised machine learning with anomaly detection.

M e d i u m . https://utsavdesai26.medium.com/unsupervised-machine-learning-with-

anomaly-detection-5fae4fd2c957

Hiraltalsaniya. (2023, diciembre 22). Anomaly detection with unsupervised machine

learning. Medium. https://medium.com/simform-engineering/anomaly-detection-with-

unsupervised-machine-learning-3bcf4c431aff

Indira. (2020, septiembre 25). Machine Learning for Anomaly Detection- The

Mathematics Behind It! Medium. https://medium.com/srm-mic/machine-learning-for-

anomaly-detection-the-mathematics-behind-it-7a2c3b5a755

Liu, F. T., Ting, K. M. y Zhou, Z. H. (2008). Isolation Forest. Eighth IEEE International

Conference on Data Mining, 413-422. https://ieeexplore.ieee.org/document/4781136

Aprendizaje Automático No Supervisado 45


Tema 8. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

¿Cuáles son los algoritmos más comunes de


aprendizaje no supervisado para detectar
anomalías?

LinkedIn. (s. f.). ¿Cuáles son los algoritmos de detección de anomalías no

supervisados más comunes? https://www.linkedin.com/advice/1/what-most-common-

unsupervised-anomaly-detection-qqdvf

Describe las técnicas más comunes de detección de anomalías no supervisadas

incluyen varios algoritmos eficaces y ampliamente utilizados.

Aprendizaje Automático No Supervisado 46


Tema 8. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Detección de anomalías en tiempo real

Moffitt, J. (2024, abril 1). Real-Time Anomaly Detection: Use Cases and Code

Examples. Tinybird. https://www.tinybird.co/blog-posts/real-time-anomaly-detection

Se muestran algunos fragmentos de código de ejemplo que puede utilizar para

inspirar su sistema de detección de anomalías en tiempo real.

Aprendizaje Automático No Supervisado 47


Tema 8. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué es una anomalía en el contexto del análisis de datos?

A. Un valor que es extremadamente común en el conjunto de datos.

B. Un valor que se ajusta perfectamente al modelo de datos.

C. Un valor que se desvía significativamente del comportamiento esperado

del conjunto de datos.

D. Un valor que se encuentra dentro del rango intercuartílico.

2. ¿Cuál de los siguientes métodos se utiliza comúnmente para detectar anomalías

en series temporales?

A. K-Means clustering.

B. PCA.

C. Media móvil.

D. Árboles de decisión.

3. ¿Qué mide el Z-Score en un conjunto de datos?

A. La distancia de un punto de datos al centroide más cercano.

B. El número de desviaciones estándar que un punto de datos se aleja de la

media del conjunto de datos.

C. La densidad local de un punto de datos en comparación con sus vecinos

más cercanos.

D. La correlación entre dos variables en un conjunto de datos.

4. ¿Cuál de los siguientes es un algoritmo basado en densidad para la detección de

anomalías?

A. K-Nearest Neighbors (k-NN).

B. Support Vector Machines (SVM).

C. DBSCAN.

D. Árboles de regresión.

Aprendizaje Automático No Supervisado 48


Tema 8. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Cuál es una desventaja común de los algoritmos de detección de anomalías?

A. No pueden manejar grandes volúmenes de datos.

B. Requieren siempre datos etiquetados.

C. Pueden generar falsos positivos.

D. No son compatibles con técnicas de clustering.

6. ¿Qué técnica estadística se basa en suponer que los datos siguen una

distribución normal?

A. Método del percentil.

B. DBSCAN.

C. Z-Score.

D. LOF (Local Outlier Factor).

7. En el contexto de detección de anomalías, ¿qué es un «outlier»?

A. Un valor promedio en el conjunto de datos.

B. Un valor que está en la mediana del conjunto de datos.

C. Un valor que se encuentra dentro del rango intercuartílico.

D. Un valor que se desvía significativamente del resto de los datos.

8. ¿Qué tipo de algoritmo de detección de anomalías utiliza tanto datos etiquetados

como no etiquetados?

A. Algoritmos supervisados.

B. Algoritmos no supervisados.

C. Algoritmos semisupervisados.

D. Algoritmos basados en reglas.

Aprendizaje Automático No Supervisado 49


Tema 8. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Cuál de los siguientes métodos es más adecuado para detectar anomalías en

datos multivariados considerando la correlación entre variables?

A. K-Means clustering.

B. Mahalanobis distance.

C. Media móvil.

D. Árboles de decisión.

10. ¿Cuál es una ventaja de la detección temprana de anomalías?

A. Reduce la necesidad de preprocesamiento de datos.

B. Mejora la precisión de los modelos sin eliminar valores atípicos.

C. Ayuda a identificar problemas potenciales antes de que se vuelvan críticos.

D. Elimina la necesidad de técnicas de aprendizaje supervisado.

Aprendizaje Automático No Supervisado 50


Tema 8. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 9

Aprendizaje Automático No Supervisado

Tema 9. Introducción al
aprendizaje por refuerzo
Índice
Esquema

Ideas clave

9.1. Introducción y objetivos

9.2. Definición de agente

9.3. Procesos de decisión de Markov (MDP)

9.4. Aprendizaje por refuerzo y sus aplicaciones

9.5. Cuaderno de ejercicios

9.6. Referencias bibliográficas

A fondo

¿Qué es el aprendizaje por refuerzo y cómo trabaja?

Aprendizaje por refuerzo a partir de la retroalimentación


humana (RLHF).

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 9. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.1. Introducción y objetivos

E l aprendizaje por refuerzo (reinforcement learning, RL) es una rama del

aprendizaje automático que se centra en cómo los agentes deben tomar decisiones

para maximizar alguna noción de recompensa acumulada a lo largo del tiempo. A

diferencia de otros enfoques de aprendizaje, el RL permite a los agentes aprender a

través de la interacción directa con su entorno, ajustando sus estrategias en función

de las consecuencias de sus acciones (Kaelbling, Littman y Moore, 1996;

Szepesvári, 2022).

En este contexto, los agentes se definen como programas de software capaces de

operar de manera autónoma, percibiendo su entorno mediante sensores y actuando

sobre él mediante actuadores. Estos agentes son fundamentales en RL, ya que son

los responsables de experimentar, aprender y mejorar continuamente sus decisiones

para maximizar las recompensas.

El concepto de agente ha evolucionado desde una entidad aislada que opera de

forma independiente a un componente integral de sistemas más amplios, donde

múltiples agentes autónomos interactúan para formar un sistema global. Esta

evolución ha llevado a que el diseño de agentes sea visto tanto desde la perspectiva

de la ingeniería de software como de la inteligencia artificial.

Los objetivos de este tema son:

▸ Definir y comprender los agentes inteligentes: entender qué son los agentes

inteligentes, sus características principales y cómo interactúan con su entorno para


tomar decisiones autónomas.

▸ Explorar los componentes de los procesos de decisión de Markov (MDP):

analizar los componentes esenciales de los MDP, tales como estados, acciones,
recompensas y transiciones, y cómo estos proporcionan una estructura matemática

Aprendizaje Automático No Supervisado 4


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

para modelar problemas de decisión en RL.

▸ Aplicar las ecuaciones de Bellman: comprender y aplicar las ecuaciones de

Bellman para descomponer problemas de optimización a largo plazo en


subproblemas más manejables, facilitando la solución de MDPs y el desarrollo de
políticas óptimas.

▸ Explorar aplicaciones prácticas de RL: examinar diversas aplicaciones del

aprendizaje por refuerzo en áreas como conducción autónoma, automatización

industrial, comercio y finanzas, procesamiento del lenguaje natural, atención


sanitaria e ingeniería, demostrando su versatilidad y potencial en la solución de
problemas complejos en el mundo real.

Aprendizaje Automático No Supervisado 5


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.2. Definición de agente

Los agentes son fundamentales en el RL, ya que son los encargados de interactuar

con el entorno, aprender de las consecuencias de sus acciones y mejorar su

comportamiento para maximizar las recompensas a lo largo del tiempo.

Un agente es un tipo de programa software cuya función es observar el entorno y

reaccionar ante él, operando de forma autónoma. El proceso parte de la respuesta a

partir de unos datos de entrada, de tal manera que se puede interpretar lo que se

observa, razonar una respuesta, y luego aplicarla. De esta manera, es posible

considerar lo siguiente:

«Los agentes representan el nuevo paradigma más importante para el

desarrollo de software desde la orientación a objetos» (McBurney,

2004).

El concepto de agente ha pasado de ser un ente aislado que opera de forma

autónoma a un elemento más de un sistema en el que diferentes sistemas

autónomos conforman un sistema global. El concepto de agente desde la perspectiva

de la ingeniería de software se plantea más como un elemento de diseño de software

que como un elemento propio de la inteligencia artificial.

El agente percibe el entorno mediante sensores (reales o virtuales) y actúa sobre él

mediante actuadores (de nuevo, reales o virtuales) (ver Figura 1).

Aprendizaje Automático No Supervisado 6


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 1. Componentes que conforman un agente. Fuente: elaboración propia.

Las características de un agente inteligente son:

▸ Autonomía: capacidad para operar sin intervención humana directa y controlar sus

acciones y estado internos.

▸ Percepción y acción: utiliza sensores para obtener información del entorno y

actuadores para interactuar con él.

▸ Objetivo o función de recompensa: posee un criterio claro de éxito o recompensa

que guía sus decisiones y acciones.

▸ Adaptabilidad: capacidad de modificar su comportamiento basado en experiencias

pasadas o nueva información recibida del entorno.

▸ Persistencia: opera de manera continua a lo largo del tiempo.

Existen diferentes tipos de agentes inteligentes:

▸ Agente reactivo simple: toma decisiones basadas únicamente en la percepción

actual del entorno. Ejemplo: un termostato.

▸ Agente basado en modelo: mantiene un modelo interno del entorno para tomar

Aprendizaje Automático No Supervisado 7


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

decisiones más informadas. Ejemplo: un robot de limpieza que recuerda los


obstáculos.

▸ Agente basado en objetivos: actúa para cumplir ciertos objetivos específicos, no

solo para reaccionar. Ejemplo: un agente de búsqueda en un juego.

▸ Agente basado en utilidad: toma decisiones basadas en la maximización de una

función de utilidad que puede incorporar múltiples objetivos y prioridades. Ejemplo:


sistemas de recomendación personalizados.

A continuación, veremos el vídeo Implementación de aprendizaje por refuerzo a

través de un ejemplo.

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=4937a871-3bf9-
43b2-af16-b1c500f89a95

Aprendizaje Automático No Supervisado 8


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.3. Procesos de decisión de Markov (MDP)

Un MDP es un marco matemático utilizado para modelar la toma de decisiones en

situaciones donde los resultados son en parte aleatorios y en parte bajo el control de

un agente (Puterman, 1990; Wei, Xu, Lan, Guo y Cheng, 2017).

Los MDPs se componen de estados, acciones, recompensas y transiciones de

estado.

Son esenciales en el RL porque proporcionan la estructura matemática para modelar

y resolver problemas en los que un agente debe aprender a tomar decisiones

óptimas a través de la interacción con su entorno.

Componentes

▸ Estados (S): representan todas las posibles situaciones en las que puede

encontrarse el agente.

▸ Acciones (A): conjunto de todas las acciones posibles que el agente puede realizar.

▸ Transiciones (T): probabilidades de pasar de un estado a otro dado una acción

específica. Formalmente, , donde es el estado actual,


es la acción tomada y es el estado siguiente.

▸ Recompensas (R): recompensa recibida después de transitar de un estado a otro,

dado una acción. Formalmente, .

▸ Política (π): estrategia que el agente sigue para decidir qué acción tomar en cada

estado.

El paso a paso en los procesos de decisión de Markov se muestra en la Figura 2.

Aprendizaje Automático No Supervisado 9


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Proceso de solución en MDP. Fuente: elaboración propia.

Política óptima y política estacionaria

Política óptima

En el contexto de la teoría de decisiones y el aprendizaje por refuerzo, una política

(denotada usualmente como π) define una estrategia para elegir acciones en cada
estado con el fin de maximizar alguna medida de rendimiento a largo plazo,

generalmente la utilidad.

La política óptima, π*, es aquella que maximiza el rendimiento esperado desde

cualquier estado inicial. Es decir, es la mejor estrategia posible que un agente puede

seguir para obtener el mayor beneficio esperado.

Política estacionaria

Una política es estacionaria si las decisiones que se toman no dependen del tiempo,

sino únicamente del estado actual. Esto significa que, independientemente de

cuándo se encuentra el agente en un determinado estado, la acción que se tomará

será siempre la misma.

Las políticas estacionarias son importantes porque simplifican el análisis y la

implementación de algoritmos en el aprendizaje por refuerzo.

Utilidad

La utilidad es una medida del valor o satisfacción que un agente obtiene de un

Aprendizaje Automático No Supervisado 10


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

determinado resultado. Juega un papel crucial en la definición y evaluación de

políticas, especialmente en contextos de decisión secuencial.

Utilidad aditiva

La utilidad aditiva asume que el valor total de una secuencia de decisiones es

simplemente la suma de las utilidades de cada decisión individual.

Esta suposición simplifica mucho los cálculos y es adecuada en situaciones donde

los efectos de las decisiones no se interrelacionan de manera compleja. La fórmula

de la utilidad aditiva está expresada en la siguiente ecuación.

Utilidad ponderada

En la utilidad ponderada, cada utilidad individual se multiplica por un factor de


ponderación antes de ser sumada.

Esta técnica permite dar más importancia a ciertas decisiones o resultados sobre

otros, reflejando prioridades o preferencias específicas. La fórmula de la utilidad

ponderada está expresada en la siguiente ecuación.

Utilidad descontada

La utilidad descontada introduce la idea de que las recompensas futuras valen

menos que las recompensas inmediatas. Esto se representa con un factor de

descuento γ (0 ≤ γ < 1). La fórmula de la utilidad ponderada está expresada en la

siguiente ecuación.

Aprendizaje Automático No Supervisado 11


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

La utilidad total en un proceso de decisión es la suma de las utilidades descontadas

de todas las decisiones futuras. Formalmente, si es la recompensa en el tiempo

, la utilidad total es . Este concepto es fundamental en muchos

algoritmos de aprendizaje por refuerzo, como el Q-learning y el algoritmo de política

de valor, porque ayuda a equilibrar la explotación de recompensas inmediatas con la

exploración de recompensas futuras.

Aprendizaje Automático No Supervisado 12


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.4. Aprendizaje por refuerzo y sus aplicaciones

E l aprendizaje por refuerzo (reinforcement learning, RL) es una rama del

aprendizaje automático que se centra en cómo los agentes deben tomar decisiones

para maximizar alguna noción de recompensa acumulada a lo largo del tiempo. En

este contexto, los agentes aprenden a interactuar con un entorno para descubrir las

mejores estrategias o políticas a seguir. Para entender mejor el aprendizaje por

refuerzo, es esencial familiarizarse con los procesos de decisión de Markov (MDP),

que proporcionan el marco matemático subyacente y que vimos anteriormente.

Las ecuaciones de Bellman juegan un papel fundamental en la solución de MDPs y,

por ende, en el aprendizaje por refuerzo. Estas ecuaciones descomponen el

problema de encontrar la política óptima en subproblemas más pequeños y

manejables.

Ecuaciones de Bellman

Las ecuaciones de Bellman, nombradas en honor al matemático Richard Bellman,

son una formulación matemática que descompone un problema de decisión

secuencial en subproblemas más pequeños y manejables. Estas ecuaciones se

aplican tanto en la optimización estática como dinámica, siendo especialmente útiles

en contextos del aprendizaje por refuerzo.

Antes de abordar las ecuaciones, es útil entender algunos términos clave. Al igual

que los MDP, en las ecuaciones de Bellman existe el concepto de estado, acción,

recompensa y política. Acá se agrega el concepto de valor o utilidad esperada.

▸ Estado (s): la situación actual en la que se encuentra el agente.

▸ Acción (a): una decisión que el agente puede tomar desde un estado.

▸ Recompensa (r): el beneficio inmediato obtenido al tomar una acción en un estado.

Aprendizaje Automático No Supervisado 13


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Valor (V): la utilidad esperada total que se puede obtener a partir de un estado,

siguiendo una política.

▸ Política (π): regla que define qué acción tomar en cada estado.

Donde:

▸ es el valor del estado s siguiendo la política π.

▸ es la recompensa inmediata al tomar la acción a en el estado s.

▸ es el factor de descuento.

▸ es el estado siguiente.

▸ La expectativa E se toma sobre todas las acciones y estados posibles, dado que se

sigue la política π.

Las ecuaciones de Bellman descomponen el problema de optimización a largo plazo

en una serie de decisiones más pequeñas, facilitando su resolución. Son la base

para varios algoritmos de aprendizaje por refuerzo, como el value iteration, policy

iteration y Q-learning. Ayudan a identificar la política óptima que maximiza la

recompensa total esperada en problemas de decisión secuencial.

Imaginemos un agente en un entorno simple con tres estados (A, B, C) y dos

acciones posibles (X, Y). La ecuación de Bellman se utilizaría para actualizar los

valores estimados de cada estado o estado-acción basado en las recompensas

inmediatas y los valores futuros esperados.

Veamos un ejemplo de agente en una cuadrícula.

Ejemplo de agente cuadrícula

Aprendizaje Automático No Supervisado 14


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Supongamos un agente en una cuadrícula de 3x3 que puede moverse en cuatro

direcciones: arriba, abajo, izquierda y derecha. El objetivo del agente es llegar a una

celda de objetivo (recompensa +1) y evitar una celda peligrosa (recompensa -1).

Todas las demás celdas tienen una recompensa de 0. El factor de descuento, γ, es

0.9.

Configuración del problema:

▸ Estados (s): cada celda en la cuadrícula es un estado.

▸ Acciones (a): {Arriba, Abajo, Izquierda, Derecha}.

▸ Recompensas (r): +1 en la celda objetivo y -1 en la celda peligrosa.

▸ 0 en todas las demás celdas.

▸ Factor de descuento (γ): 0.9.

La cuadrícula se ve así:

Tabla 1. Cuadrícula. Fuente: elaboración propia.

Donde S es el estado inicial, G es la celda objetivo y -1 es la celda peligrosa.

Aplicamos las ecuaciones de Bellman.

Primero, inicializamos los valores de estado V(s) a 0 para todas las celdas, excepto

las celdas objetivo y peligrosa, que se inicializan con sus recompensas directas.

Aprendizaje Automático No Supervisado 15


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 2. Cuadrícula. Fuente: elaboración propia.

Iteración de valores.

Utilizamos la ecuación de Bellman para actualizar los valores de estado

iterativamente hasta que converjan. La ecuación de Bellman para el valor del estado

es:

Donde es la probabilidad de transición al estado dado el estado

actual y la acción . Asumiremos que las transiciones son determinísticas para

este ejemplo.

Primera iteración.

Tomemos un estado no terminal, por ejemplo, la celda (0,1). Evaluamos el valor del

estado V(0,1) considerando las posibles acciones:

▸ Arriba: no es posible (borde de la cuadrícula).

▸ Abajo: transición a (1,1) con V(1,1) = -1.

▸ Izquierda: transición a (0,0) con V(0,0) =0.

▸ Derecha: transición a (0,2) con V(0,2) =1.

Usamos la ecuación de Bellman.

Aprendizaje Automático No Supervisado 16


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

V(0,1)=max{0+0,0+0.9⋅(−1),0+0.9⋅0,0+0.9⋅1}

(0,1)=max{0,−0.9,0,0.9}

V(0,1)=0.9

Actualizamos la tabla:

Tabla 3. Cuadrícula. Fuente: elaboración propia.

Repetimos este proceso para todas las celdas hasta que los valores converjan.

Después de suficientes iteraciones, los valores convergerán a los valores óptimos.

Para nuestro ejemplo, los valores convergentes pueden verse así:

Tabla 4. Cuadrícula. Fuente: elaboración propia.

Una vez que los valores han convergido, podemos derivar la política óptima

seleccionando la acción que maximiza el valor esperado en cada estado. Para cada

estado .

En este ejemplo partimos de la celda (0,0), seguimos con la celda (0,1) y finalizamos

Aprendizaje Automático No Supervisado 17


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

con la celda (0,3) que es la celda objetivo y el camino es el que mayor utilidad nos

proporciona.

A continuación, veremos el vídeo Aplicaciones prácticas del aprendizaje por

refuerzo.

Accede al vídeo:

https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=85569be3-3884-
4736-841a-b1c501149703

Aplicaciones del aprendizaje por refuerzo (Mwiti, 2023)

Aplicaciones en conducción autónoma

Varios artículos han propuesto el aprendizaje por refuerzo profundo para la

conducción autónoma. En los vehículos autónomos hay varios aspectos a

considerar, como los límites de velocidad en varios lugares, las zonas de conducción

y evitar colisiones, solo por mencionar algunos.

Algunas de las tareas de conducción autónoma en las que se podría aplicar el

Aprendizaje Automático No Supervisado 18


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

aprendizaje por refuerzo incluyen la optimización de trayectorias, la planificación del

movimiento, la trayectoria dinámica, la optimización del controlador y las políticas de

aprendizaje basadas en escenarios para carreteras.

Por ejemplo, el estacionamiento se puede lograr aprendiendo políticas de

estacionamiento automático. El cambio de carril se puede lograr utilizando Q-

learning, mientras que los adelantamientos se pueden implementar aprendiendo una

política de adelantamiento evitando colisiones y manteniendo una velocidad

constante a partir de entonces.

AWS DeepRacer es un coche de carreras autónomo que ha sido diseñado para

probar RL en una pista física. Utiliza cámaras para visualizar la pista y un modelo de

aprendizaje de refuerzo para controlar el acelerador y la dirección (Mwiti, 2023).

Automatización de la industria con aprendizaje por refuerzo

En el refuerzo industrial, se utilizan robots basados en el aprendizaje por refuerzo

para realizar diversas tareas. Los robots pueden realizar tareas que serían peligrosas

para las personas.

Un gran ejemplo es el uso de agentes de inteligencia artificial por parte de Deepmind

para enfriar los centros de datos de Google. Esto llevó a una reducción del 40 % en

el gasto energético. Los centros ahora están totalmente controlados con el sistema

de IA sin necesidad de intervención humana. Obviamente, todavía hay supervisión

por parte de expertos en centros de datos (Olaoye y Potter, 2024). El sistema

funciona de la siguiente manera:

▸ Tomar instantáneas de los datos de los centros de datos cada cinco minutos y

enviarlas a redes neuronales profundas.

▸ Luego predice cómo las diferentes combinaciones afectarán los consumos de

energía futuros.

Aprendizaje Automático No Supervisado 19


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Identificar acciones que conduzcan a un consumo mínimo de energía manteniendo

al mismo tiempo un estándar establecido de criterios de seguridad.

▸ Enviar e implementar estas acciones en el centro de datos.

▸ Las acciones son verificadas por el sistema de control local.

Aplicaciones de aprendizaje por refuerzo en comercio y finanzas

Los modelos de series de tiempo supervisados se pueden utilizar para predecir

ventas futuras, así como para predecir los precios de las acciones. Sin embargo,

estos modelos no determinan la acción a tomar ante un precio de acción en

particular. Un agente de RL puede decidir sobre dicha tarea; si mantener, comprar o

vender. El modelo RL se evalúa utilizando estándares de referencia del mercado

para garantizar que funcione de manera óptima.

Esta automatización aporta coherencia al proceso, a diferencia de los métodos

anteriores en los que los analistas tenían que tomar todas las decisiones. IBM, por

ejemplo, tiene una sofisticada plataforma basada en el aprendizaje por refuerzo que

tiene la capacidad de realizar transacciones financieras. Calcula la función de

recompensa en función de la pérdida o ganancia de cada transacción financiera

(Olaoye y Potter, 2024).

Aprendizaje por refuerzo en PLN (procesamiento del lenguaje natural)

En PLN, RL se puede utilizar para resumir textos, responder preguntas y traducir

automáticamente, solo por mencionar algunos.

Investigadores de la Universidad de Stanford, la Universidad Estatal de Ohio y

Microsoft Research han desarrollado deep RL para su uso en la generación de

diálogos. El RL profundo se puede utilizar para modelar recompensas futuras en un

diálogo de chatbot. Las conversaciones se simulan mediante dos agentes virtuales.

Los métodos de gradiente de políticas se utilizan para recompensar secuencias que

Aprendizaje Automático No Supervisado 20


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

contienen atributos de conversación importantes, como coherencia, informatividad y

facilidad de respuesta (Mwiti, 2023).

Aprendizaje por refuerzo en atención sanitaria

En el sector sanitario, los pacientes pueden recibir tratamiento a partir de políticas

aprendidas de los sistemas RL. RL es capaz de encontrar políticas óptimas utilizando

experiencias previas sin necesidad de información previa sobre el modelo

matemático de sistemas biológicos. Hace que este enfoque sea más aplicable que

otros sistemas basados en control en la atención sanitaria.

La RL en atención médica se clasifica como regímenes de tratamiento dinámico


(DTR) en enfermedades crónicas o cuidados críticos, diagnóstico médico

automatizado y otros dominios generales.

En las DTR, la entrada es un conjunto de observaciones y evaluaciones clínicas de

un paciente. Los resultados son las opciones de tratamiento para cada etapa. Estos

son similares a los estados de RL. La aplicación de RL en DTR es ventajosa porque

es capaz de determinar decisiones dependientes del tiempo para el mejor

tratamiento para un paciente en un momento específico.

El uso de RL en la atención sanitaria también permite mejorar los resultados a largo

plazo al tener en cuenta los efectos retardados de los tratamientos.

RL también se ha utilizado para el descubrimiento y generación de DTR óptimas para

enfermedades crónicas (Olaoye y Potter, 2024).

Aplicaciones del aprendizaje por refuerzo en ingeniería

Facebook ha desarrollado una plataforma de aprendizaje por refuerzo de código

abierto: Horizon. La plataforma utiliza el aprendizaje por refuerzo para optimizar los

sistemas de producción a gran escala. Facebook ha utilizado Horizon internamente

para personalizar sugerencias, entregar notificaciones más significativas a los

Aprendizaje Automático No Supervisado 21


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

usuarios y optimizar la calidad de la transmisión de vídeo.

Otra aplicación del RL es en la visualización de vídeo. Ofrece al usuario un vídeo con

una velocidad de bits baja o alta según el estado de los buffers de vídeo y las

estimaciones de otros sistemas de aprendizaje automático (Mwiti, 2023).

Aprendizaje por refuerzo en recomendación de noticias

Las preferencias de los usuarios pueden cambiar con frecuencia, por lo que

recomendar noticias a los usuarios basándose en reseñas y me gusta podría quedar

obsoleto rápidamente. Con el aprendizaje por refuerzo, el sistema RL puede rastrear


los comportamientos de retorno del lector.

La construcción de dicho sistema implicaría obtener características de noticias,

características de lector, características de contexto y características de noticias de

lector. Las características de las noticias incluyen, entre otras, el contenido, el titular

y el editor. Las características del lector se refieren a cómo el lector interactúa con el

contenido, por ejemplo, hace clic y comparte. Las características de contexto

incluyen aspectos de las noticias como el momento y la actualidad de las noticias.

Luego se define una recompensa en función de estos comportamientos de los

usuarios (Mwiti, 2023).

Aprendizaje Automático No Supervisado 22


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.5. Cuaderno de ejercicios

Ejercicio 1. Definición de agentes

Define un agente inteligente y describe las características que lo diferencian de un

programa de software tradicional. Luego, proporciona un ejemplo de un agente

inteligente en un entorno real.

Solución

Un agente inteligente es un programa de software que opera de forma autónoma,

percibe su entorno mediante sensores y actúa sobre él mediante actuadores para

alcanzar ciertos objetivos. Las características que lo diferencian de un programa de

software tradicional incluyen autonomía, percepción y acción, objetivo o función de

recompensa, adaptabilidad y persistencia.

Ejemplo: un robot aspirador en un hogar es un agente inteligente. Utiliza sensores

para detectar obstáculos y suciedad (percepción), y actuadores para moverse y

limpiar (acción). Su objetivo es maximizar la limpieza del área (recompensa). Puede

adaptarse a diferentes configuraciones de muebles y aprender las mejores rutas para

limpiar eficientemente (adaptabilidad y persistencia).

Ejercicio 2. Componentes de los MDP

Describe los componentes de un proceso de decisión de Markov (MDP). Proporciona

un ejemplo simple que ilustre cada uno de estos componentes.

Solución

Un agente en una cuadrícula 3x3 con el objetivo de alcanzar la celda superior

derecha (G):

▸ Estados (S): cada celda en la cuadrícula.

Aprendizaje Automático No Supervisado 23


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Acciones (A): {Arriba, Abajo, Izquierda, Derecha}.

▸ Transiciones (T): probabilidad de moverse a una celda adyacente según la acción

tomada.

▸ Recompensas (R): +1 en la celda objetivo (G), -1 en celdas peligrosas y 0 en otras

celdas.

▸ Política (π): plan para moverse hacia la celda objetivo evitando las celdas

peligrosas.

Ejercicio 3. Ecuaciones de Bellman

Explica la ecuación de Bellman para la utilidad esperada de un estado V(s) y cómo

se aplica en el contexto del aprendizaje por refuerzo. Luego, aplica la ecuación de

Bellman a un estado s en una cuadrícula 2x2 con una celda objetivo (G) y una celda

peligrosa (-1).

Solución

La ecuación de Bellman para la utilidad esperada de un estado V(s) se define como:

, donde γ es el factor

de descuento.

Aplicación (considera una cuadrícula 2x2):

▸ Estados: (0,0), (0,1), (1,0), (1,1).

▸ Recompensas: +1 en (0,1), -1 en (1,0) y 0 en otros.

▸ Factor de descuento γ=0.9.

▸ Para el estado (0,0), evaluamos las posibles acciones (suponiendo transiciones

determinísticas):

Aprendizaje Automático No Supervisado 24


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Arriba: no aplicable.

• Abajo: (1,0) con V(1,0)=−1.

• Izquierda: no aplicable.

• Derecha: (0,1) con V(0,1)=1.

▸ Usamos la ecuación de Bellman:

V(0,0)=max{0+0.9⋅(−1),0+0.9⋅1}=max{−0.9,0.9}=0.9.

Ejercicio 4. Seudocódigo

Proporciona el seudocódigo para un agente que debe aprender a moverse en una

cuadrícula de 2x2 con una celda objetivo (+1) y una celda peligrosa (-1).

Solución

▸ Inicialización: establecer los valores para todas las parejas estado-acción.

▸ Episodios: repetir el proceso para varios episodios.

▸ Selección de acción: elegir una acción basada en la mejor política.

▸ Actualización: actualizar el valor usando la fórmula de Bellman.

▸ Transición: moverse al nuevo estado y repetir hasta alcanzar un estado terminal.

Este algoritmo permite al agente aprender la mejor acción a tomar en cada estado

para maximizar la recompensa total esperada.

Aprendizaje Automático No Supervisado 25


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

9.6. Referencias bibliográficas

Kaelbling, L. P., Littman, M. L. y Moore, A. W. (1996). Reinforcement learning: A

survey. Journal of artificial intelligence research, 4, 237-285.

Mwiti, D. (2023, septiembre 1). 10 Real-life applications of reinforcement learning.

Neptune. https://neptune.ai/blog/reinforcement-learning-applications

Olaoye F. y Potter, K. (2024). Reinforcement Learning and its Real-World

Applications. ReserarchGate. https://www.researchgate.net/publication/379025393

Puterman, M. L. (1990). Markov decision processes. Handbooks in operations

research and management science, 2, 331-434.

Szepesvári, C. (2022). Algorithms for reinforcement learning. Springer nature.

Wei, Z., Xu, J., Lan, Y., Guo, J. y Cheng, X. (2017, August). Reinforcement learning

to rank with Markov decision process. Proceedings of the 40th international ACM

SIGIR conference on research and development in information retrieval, 945-948.

Aprendizaje Automático No Supervisado 26


Tema 9. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

¿Qué es el aprendizaje por refuerzo y cómo


trabaja?

Kadari, P. (2024, mayo 26). What is reinforcement learning and how does it work.

Analytics Vidhya. https://www.analyticsvidhya.com/blog/2021/02/introduction-to-


reinforcement-learning-for-beginners/

El aprendizaje por refuerzo (reinforcement learning) es una técnica de machine

learning en la que un agente aprende a tomar decisiones óptimas mediante la

interacción con su entorno, buscando maximizar recompensas acumuladas. Este

proceso implica experimentar acciones, recibir recompensas o penalizaciones, y

ajustar estrategias para mejorar el rendimiento futuro sin intervención humana

directa.

Aprendizaje Automático No Supervisado 27


Tema 9. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Aprendizaje por refuerzo a partir de la


retroalimentación humana (RLHF).

AWS (s. f.). ¿Qué es el RLHF? https://aws.amazon.com/es/what-is/reinforcement-


learning-from-human-feedback/

El aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF) es una

técnica de machine learning que mejora la precisión de los modelos al incorporar

feedback humano en la función de recompensas. Esto permite que los modelos

realicen tareas de manera más alineada con los objetivos humanos, optimizando su

desempeño y generando respuestas más naturales y satisfactorias en aplicaciones

como chatbots, generación de imágenes y música.

Aprendizaje Automático No Supervisado 28


Tema 9. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Qué es un agente en el contexto del aprendizaje por refuerzo?

A. Un algoritmo que siempre sigue instrucciones predefinidas.

B. Un programa que interactúa con el entorno y aprende de sus acciones.

C. Un dispositivo de hardware que ejecuta comandos.

D. Un conjunto de datos utilizado para entrenar modelos de aprendizaje

automáticos.

2. ¿Cuál de las siguientes características no es propia de un agente inteligente?

A. Autonomía.

B. Percepción y acción.

C. Almacenamiento de datos en la nube.

D. Adaptabilidad.

3. ¿Qué representan los estados (S) en un proceso de decisión de Markov (MDP)?

A. Todas las posibles acciones que un agente puede realizar.

B. Todos los posibles resultados de una acción.

C. Todas las posibles situaciones en las que puede encontrarse el agente.

D. Las recompensas acumuladas en el tiempo.

4. ¿Cuál es el propósito principal de la ecuación de Bellman en aprendizaje por

refuerzo?

A. Predecir las acciones futuras de otros agentes.

B. Descomponer problemas de optimización a largo plazo en subproblemas

manejables.

C. Almacenar datos históricos de las recompensas.

D. Aumentar la velocidad de procesamiento de los algoritmos.

Aprendizaje Automático No Supervisado 29


Tema 9. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Qué se entiende por política (π) en el contexto de un MDP?

A. Una medida de la recompensa inmediata de una acción.

B. Una estrategia que el agente sigue para decidir qué acción tomar en cada

estado.

C. La probabilidad de transición entre estados.

D. El valor esperado de todas las recompensas futuras.

6. ¿Qué tipo de agente utiliza un modelo interno del entorno para tomar decisiones

más informadas?

A. Agente reactivo simple.

B. Agente basado en objetivos.

C. Agente basado en modelo.

D. Agente basado en utilidad.

7. ¿Cuál es el factor de descuento (γ) en el contexto de la utilidad descontada?

A. La tasa a la que se actualizan los estados.

B. La probabilidad de transitar a un nuevo estado.

C. La frecuencia con la que se recompensan las acciones.

D. Un valor que refleja la importancia relativa de las recompensas futuras

frente a las inmediatas.

8. En el aprendizaje por refuerzo, ¿qué función cumple una recompensa (R)?

A. Determina la probabilidad de una transición entre estados.

B. Proporciona una medida inmediata de la bondad de una acción tomada.


C. Define la política que un agente debe seguir.

D. Establece el conjunto de posibles estados.

Aprendizaje Automático No Supervisado 30


Tema 9. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Qué significa que una política es estacionaria?

A. Las decisiones del agente dependen del tiempo.

B. La política no se puede modificar una vez establecida.

C. Las decisiones del agente dependen únicamente del estado actual, no del

tiempo.

D. La política cambia en cada iteración.

10. ¿Cuál de las siguientes es una aplicación del aprendizaje por refuerzo en la vida

real?

A. Reconocimiento facial.

B. Optimización de motores de búsqueda.

C. Conducción autónoma.

D. Clasificación de correos electrónicos.

Aprendizaje Automático No Supervisado 31


Tema 9. Test
© Universidad Internacional de La Rioja (UNIR)
Tema 10

Aprendizaje Automático No Supervisado

Tema 10. Q-learning


Índice
Esquema

Ideas clave

10.1. Introducción y objetivos

10.2. Q-learning

10.3. Deep Q Network (DQN)

10.4. Algoritmos REINFORCE

10.5. Proximal Policy Optimization (PPO)

10.6. Implementación de aprendizaje por refuerzo en


Python

10.7. Cuaderno de ejercicios

10.8. Referencias bibliográficas

A fondo

¿Qué es el aprendizaje por refuerzo y cómo trabaja?

Entrenando el juego de Pokemon utilizando aprendizaje


por refuerzo

Conceptos clave en el aprendizaje por refuerzo

Introducción a la optimización de políticas

Test
Esquema

Aprendizaje Automático No Supervisado 3


Tema 10. Esquema
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.1. Introducción y objetivos

Ya vimos como el aprendizaje por refuerzo (RL) es un área del aprendizaje

automático donde un agente inteligente interactúa con el entorno y crea una

estrategia optimizando una recompensa acumulada para alcanzar un objetivo. Difiere

del aprendizaje automático supervisado, ya que este último no interactúa con el

entorno y se enfoca en encontrar patrones en datos existentes etiquetados para

hacer predicciones. Por su parte, el aprendizaje no supervisado busca descubrir

patrones ocultos en los datos sin etiquetas, mientras que el aprendizaje por refuerzo

implica un proceso de prueba y error guiado por una recompensa.

El aprendizaje por refuerzo se puede dividir en los siguientes pasos principales:

▸ Definición del entorno y el agente: el entorno es todo lo que interactúa con el

agente y puede ser dinámico o estático. El agente es el que toma decisiones y

aprende a interactuar con el entorno.

▸ Definición del espacio de estados y acciones: los estados representan las

diferentes situaciones en las que puede encontrarse el agente dentro del entorno.
Las acciones son las decisiones o movimientos que el agente puede tomar en cada
estado.

▸ Definición de la función de recompensa: la función de recompensa proporciona

retroalimentación al agente sobre la calidad de sus acciones.

▸ Política de aprendizaje: es la estrategia que el agente sigue para seleccionar

acciones en función del estado actual. Puede ser una función determinista o

probabilística.

▸ Interacción con el entorno: el agente interactúa con el entorno mediante la

ejecución de acciones, observando los estados resultantes y recibiendo


recompensas. Este proceso se repite en un ciclo de percepción-acción.

Aprendizaje Automático No Supervisado 4


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Actualización de la política: basándose en las experiencias obtenidas (estado,

acción, recompensa y nuevo estado), el agente actualiza su política para mejorar su


toma de decisiones futura.

▸ Exploración vs. explotación: el agente debe equilibrar la exploración de nuevas

acciones para descubrir posibles mejores recompensas (exploración) y la utilización

de acciones conocidas que ya han proporcionado buenas recompensas


(explotación).

▸ Evaluación y ajuste: el rendimiento del agente es evaluado y la política puede ser

ajustada si es necesario para mejorar el aprendizaje. Esto puede incluir ajustes en


los parámetros del modelo, como la tasa de aprendizaje o el descuento de
recompensas futuras.

▸ Entrenamiento continuo o episodios múltiples: el proceso de interacción,

actualización y evaluación se repite en múltiples episodios hasta que el agente

converja a una política óptima o satisfactoria.

▸ Implementación y aplicación: una vez que el agente ha aprendido una política

efectiva, esta puede ser implementada y utilizada en aplicaciones reales para


realizar tareas específicas de manera autónoma.

Estos pasos proporcionan un marco general para el aprendizaje por refuerzo, aunque

los detalles específicos pueden variar según el problema y el algoritmo utilizado.

En este tema se presentará una de las principales técnicas de aprendizaje por

refuerzo, Q-learning. El objetivo del Q-learning es aprender una serie de normas que

le diga a un agente qué acción tomar bajo qué circunstancias. No requiere un modelo

del entorno y puede manejar problemas con transiciones estocásticas y

recompensas sin requerir adaptaciones.

Además, veremos DQN (Deep Q-Network) y PPO (Proximal Policy Optimization).

DQN es un algoritmo que combina Q-learning con redes neuronales profundas para

Aprendizaje Automático No Supervisado 5


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

aproximar la función Q, permitiendo que el agente aprenda a tomar decisiones en

entornos complejos y de alta dimensionalidad; mientras que PPO es un algoritmo de

optimización de políticas que mejora la estabilidad y eficiencia del entrenamiento al

restringir la magnitud de las actualizaciones de políticas, logrando un equilibrio entre

exploración y explotación.

Los objetivos del tema son:

▸ Comprender los fundamentos del Q-learning, DQN y PPO, sus características

principales y cómo interactúan con su entorno para tomar decisiones autónomas.

▸ Implementar los algoritmos Q-learning, DQN y PPO en un entorno de simulación.

▸ Explorar aplicaciones prácticas de los algoritmos Q-learning, DQN y PPO.

Aprendizaje Automático No Supervisado 6


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.2. Q-learning

Q-learning es un algoritmo de aprendizaje por refuerzo que permite a un agente

aprender cómo actúa en un entorno, con el objetivo de maximizar una recompensa

acumulada a largo plazo. En este algoritmo se tiene en cuenta una función que

estima la utilizad de tomar una acción en un estado .

Se actualizan iterativamente los valores de Q haciendo uso de la ecuación de

Bellman. El objetivo es aplicar una política que maximice la recompensa acumulada.

La fórmula de actualización se muestra en la siguiente ecuación:

Donde:

▸ α es la tasa de aprendizaje, que controla la actualización de los valores Q en cada

paso (0 < α ≤ 1).

▸ γ\gamma es el factor de descuento, que determina la importancia de las futuras

recompensas (0 ≤ γ < 1).

▸ R es la recompensa recibida después de tomar la acción en un estado .

▸ es el valor máximo de Q para el siguiente estado , considerando

todas las posibles acciones .

Al ser un algoritmo de aprendizaje por refuerzo, los conceptos de estado, acción,

recompensa son los mismos. Acá encontramos términos nuevos: episodio, valor

óptimo de Q, estimación de Q, tabla de q y diferencias temporales.

▸ Episodio: es el final de una etapa, donde los agentes no pueden emprender nuevas

acciones. Se produce cuando el agente ha alcanzado el objetivo o ha fracasado.

Aprendizaje Automático No Supervisado 7


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ : es el valor óptimo de Q esperado después de realizar la acción en un


estado concreto.

▸ : es la estimación actual de .

▸ Tabla Q: el agente mantiene la tabla Q de conjuntos de estados acciones.

▸ Diferencias temporales (TD): se usa para estimar el valor esperado de .


Hace uso del estado y la acción actual y el estado y acción anterior.

Algoritmo de aprendizaje Q

En la Figura 1 se representa el paso a paso del algoritmo.

Figura 1. Algoritmo Q-learning. Fuente: elaboración propia.

En la Figura 2 se ilustra cómo un estado y una acción son introducidos y validados

contra una tabla Q, la cual contiene diversos valores de estados y acciones con sus

correspondientes valores óptimos de Q. El resultado que obtenemos es el valor

óptimo de Q para ese estado y esa acción.

Aprendizaje Automático No Supervisado 8


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Figura 2. Resultado de aplicar la función Q en Q-learning. Se genera una tabla donde se cruzan los
estados con las acciones realizadas y en su intersección se calcula la recompensa obtenida. Fuente:

elaboración propia.

Aplicaciones prácticas del Q-learning

▸ El Q-learning se utiliza en robótica para que los robots aprendan a navegar y realizar

tareas específicas de manera autónoma, como evitar obstáculos y recoger objetos


(Barla, 2024).

▸ En el desarrollo de videojuegos, el Q-learning puede ayudar a crear inteligencia

artificial para que los personajes puedan aprender y adaptarse al comportamiento de


otro jugador (DeepMind, s. f.).

▸ Se puede aplicar Q-learning en sistemas de gestión de energía para optimizar el

consumo y almacenamiento de energía en redes inteligentes y edificios inteligentes


(Xiang G, 2018).

▸ Q-learning puede mejorar sistemas de recomendación, permitiendo que estos

sistemas aprendan a ofrecer recomendaciones personalizadas en función del


comportamiento del usuario (Jin, et al., 2018).

▸ En el control de tráfico, el Q-learning puede optimizar la sincronización de semáforos

para reducir la congestión y mejorar el flujo de tráfico (Barla, 2024).

Veamos el algoritmo y el paso a paso utilizando el juego de tres en raya

Ejemplo del algoritmo Q-learning con el juego tres en raya

El juego de tres en raya, también conocido como «tic-tac-toe» en inglés o «triqui» en

Aprendizaje Automático No Supervisado 9


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

algunas regiones, es un juego de mesa sencillo que se juega entre dos personas. El

objetivo del juego es alinear tres de tus propias marcas (X o O) en una fila horizontal,

vertical o diagonal en un tablero de 3x3.

Imaginemos un tablero de tres en raya en un estado inicial vacío y algunos otros

estados posibles:

▸ Estado S0: [ , , , , , , , , ].

▸ Estado S1: [X, , , , , , , , ].

▸ Estado S2: [X, O, , , , , , , ].

▸ Estado S3: [X, O, X, , , , , , ].

Acciones

Las acciones son las posiciones en las que un jugador puede colocar su ficha (de 0 a
8).

▸ Inicializar la tabla Q:

Tabla 1. Ejemplo tres en raya. Fuente: elaboración propia.

▸ Selección de acciones:

• Las acciones son las posiciones en las que un jugador puede colocar su ficha (0-8).

• Después de tomar una acción, actualizamos el valor Q usando la fórmula vista

anteriormente.

Aprendizaje Automático No Supervisado 10


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Ejecutar acciones

Supongamos que estamos en el estado S1 ( [X, , , , , , , , ] ), tomamos la acción 4

(colocar O en el centro) y nos movemos al estado S2 ( [X, , , , O, , , , ] ). La recompensa

R es 0 porque aún no hay ganador.

Tabla 2. Ejemplo tres en raya. Fuente: elaboración propia.

Actualizamos el valor Q para la acción 4:

Supongamos que α = 0.1, γ = 0.9 y la recompensa R es 0:

Al actualizar la tabla queda con los mismos valores porque no hay ganador.

Repetir y aprender

Repetimos este proceso para 10000 partidas, donde la recompensa es 1 si un

jugador gana. Después de varias actualizaciones podemos tener una tabla como la

siguiente:

Tabla 3. Ejemplo tres en raya. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 11


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

En este punto, el agente ha aprendido que, en el estado S1, la mejor acción es jugar

en la posición 4, ya que tiene el valor Q más alto (0.6).

Avances en Q-learning

El Q-learning es un algoritmo de aprendizaje por refuerzo que busca encontrar la

política óptima para maximizar las recompensas acumuladas en un entorno dado

mediante la actualización iterativa de los valores Q. Una extensión avanzada de Q-

learning es el Deep Q Network (DQN), que utiliza redes neuronales profundas para

aproximar la función de valor Q, permitiendo manejar espacios de estados continuos

y de alta dimensión de manera más eficiente.

Por otro lado, el Proximal Policy Optimization (PPO) es un método de aprendizaje

por refuerzo basado en políticas que optimiza directamente la política mediante la

actualización de parámetros en una dirección que maximiza la recompensa esperada

mientras mantiene la estabilidad y eficiencia del entrenamiento mediante un control

estricto sobre los cambios de la política. En el desarrollo del presente tema,


detallaremos ambos algoritmos.

A continuación, veremos el vídeo Q-learning.

Aprendizaje Automático No Supervisado 12


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=c324a279-3c8e-

4933-9b17-b1c5016f6db9

Aprendizaje Automático No Supervisado 13


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.3. Deep Q Network (DQN)

En el primer apartado de este tema vimos el algoritmo Q-learning, que funciona muy

bien en entornos simples, y la función , que se puede representar como una

matriz de valores. Cuando nos enfrentamos a miles o millones de estados, cientos de

acciones distintas, no es viable utilizar una tabla de estados. Con el fin de solventar

este problema, inventaron el algoritmo Deep Q-Network o DQN (Mnih et al., 2015).

Los autores combinan el algoritmo Q-learning con redes neuronales profundas. Con

esta combinación, los autores logran aproximar la función Q, evitando utilizar una

tabla de estados. Se utilizan dos redes neuronales para estabilizar el proceso de

aprendizaje:

▸ La primera red neuronal es la principal y está representada por los parámetros .


Esta red se utiliza para estimar los valores-Q del estado y acción del estado

actual: . En esta red es donde ocurre el proceso de aprendizaje.

▸ La segunda red, denominada red neuronal objetivo, parametrizada con , tendrá la


misma arquitectura que la red principal, pero se usa para aproximar los valores-Q del
siguiente estado y la siguiente acción . Los parámetros no cambian durante
varias iteraciones; después de varias iteraciones los parámetros de la red principal
se copian a la red objetivo. De esta forma se transmite el aprendizaje de una a otra,
haciendo que las estimaciones calculadas por la red objetivo sean más precisas.

Figura 3. Resultado de aplicar la función Q en DQN. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 14


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

DQN utiliza la red Q para estimar los valores Q para cada acción en un estado, y se

elige la acción con el valor Q más alto. La red tiene como objetivo minimizar la

pérdida del error cuadrático medio (MSE) entre los valores Q predichos y los valores

Q objetivo, como se muestra en la siguiente ecuación:

Los valores Q objetivo se calculan utilizando la ecuación de Bellman con las

recompensas obtenidas y el valor Q máximo del siguiente estado; básicamente lo

mismo que se explicó para el algoritmo Q-learning. Sin embargo, en DQN difiere en

que el Q objetivo lo estima la red neuronal objetivo, que es una copia de la red Q

principal con sus parámetros congelados. Los parámetros congelados se actualizan

periódicamente desde la red Q principal a la de destino y el intervalo de actualización

es un hiperparámetro, utilizando la siguiente ecuación:

Al igual que en Q-learning, la política optima π se obtiene de comenzar en un estado

dado, seleccionar una acción con el valor más alto posible entre las estimadas por la

red Q y continuar con el proceso a medida que el agente se mueve a través del

entorno para maximizar la recompensa esperada.

Aprendizaje Automático No Supervisado 15


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.4. Algoritmos REINFORCE

E l algoritmo REINFORCE, que es una abreviatura de «REward Increment =

Nonnegative Factor x Offset Reinforcement x Characteristic Eligibility» (Williams,

1992), es una técnica clásica de aprendizaje por refuerzo basada en el método del

gradiente de políticas.

A diferencia del Q-learning, que se enfoca en aprender el valor de las acciones en un

estado particular, REINFORCE se centra en aprender directamente una política; es

decir, una función que mapea todos los estados-acciones. La política suele estar

parametrizada mediante una aproximación de función, que estima la probabilidad de

una acción dado un estado. El algoritmo actualiza iterativamente los parámetros de la

política calculando estimaciones de gradiente y realizando un ascenso de gradiente

para maximizar la recompensa acumulada esperada.

Un agente REINFORCE interactúa con el entorno siguiendo la política actual

(normalmente la primera política es aleatoria porque los parámetros de la función de

política se inicializan aleatoriamente). Como resultado de aplicar acciones de

secuencia, obtiene una secuencia de recompensas y luego calcula el retorno. Esto

generalmente se hace sumando las recompensas r desde el paso de tiempo actual

hasta el final del episodio como se muestra en la siguiente fórmula:

Donde representa la recompensa en el paso de tiempo , es el factor de

descuento para recompensas futuras y es el último episodio.

El siguiente paso es calcular el gradiente de la política, que representa el gradiente

de la recompensa acumulada esperada con respecto a los parámetros de la política;

utilizando la siguiente fórmula:

Aprendizaje Automático No Supervisado 16


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Donde es la tasa de aprendizaje, es el gradiente logarítmico de

la política y es la recompensa acumulada desde el tiempo en adelante.

REINFORCE ofrece una perspectiva complementaria a Q-learning, proporcionando

una forma efectiva de aprender políticas directamente mediante la optimización de

gradientes de políticas.

Mientras que Q-learning se enfoca en calcular el valor de Q, que estima cuán

beneficiosa es tomar una acción en un estado específico y seguir la mejor estrategia

posible, REINFORCE aprende directamente cuál es la mejor estrategia para

maximizar las recompensas acumuladas. REINFORCE ajusta su estrategia en la

dirección que aumenta la probabilidad de tomar acciones que han resultado en

mayores recompensas, usando un método llamado gradiente de políticas.

Algunos conceptos claves para tener en cuenta:

▸ Política (π): una política es una estrategia que el agente sigue para tomar

decisiones. En REINFORCE, la política se parametriza como , donde


son los parámetros de la política, es la acción y es el estado.

▸ Función de recompensa acumulada (R): la recompensa acumulada es la suma de

las recompensas recibidas a lo largo de un episodio. El objetivo del algoritmo es


maximizar esta recompensa acumulada.

▸ Gradiente de la política: REINFORCE utiliza el gradiente de la política para ajustar

los parámetros θ. La actualización de los parámetros se realiza en la dirección del


gradiente de la recompensa esperada.

A continuación, veremos un ejemplo en Python del algoritmo REINFORCE:

import numpy as np

Aprendizaje Automático No Supervisado 17


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Inicialización de parámetros de la política (por ejemplo, una red


neuronal)
theta = np.random.rand(n_parameters)

# Función de política parametrizada


def policy(state, theta):
# Devuelve la acción basada en la política parametrizada por theta
# Ejemplo con softmax:
z = state.dot(theta)
exp = np.exp(z - np.max(z))
return exp / np.sum(exp)

# Entrenamiento con REINFORCE


def reinforce(env, theta, alpha, num_episodes):
for episode in range(num_episodes):
states, actions, rewards = [], [], []
state = env.reset()
done = False

while not done:


action = policy(state, theta)
next_state, reward, done, _ = env.step(action)
states.append(state)
actions.append(action)
rewards.append(reward)
state = next_state

# Cálculo de la recompensa acumulada


G = np.zeros_like(rewards)
for t in range(len(rewards)):
G_sum = sum(rewards[t:])
G[t] = G_sum

# Actualización de los parámetros de la política


for t in range(len(states)):
theta += alpha * G[t] * np.gradient(np.log(policy(states[t],
theta)))
return theta

Aprendizaje Automático No Supervisado 18


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.5. Proximal Policy Optimization (PPO)

OpenAI publicó un artículo denominado Algoritmos de optimización de políticas

próximas (PPO) como una nueva familia de métodos de gradiente de políticas

(Schulman et al., 2017). Es conocido por ser robusto y eficiente. PPO se utiliza para

entrenar agentes en entornos donde las decisiones se toman en base a políticas; es

decir, reglas que determinan las acciones a tomar en cada estado del entorno.

Se destacan tres puntos principales:

▸ PPO alterna entre el muestreo de datos a través de la interacción con el medio

ambiente y la optimización de una función objetivo-sustituta mediante un ascenso del


gradiente estocástico.

▸ A diferencia de los métodos de gradiente de políticas estándar que realizan una

actualización de gradiente por muestra de datos, PPO introduce una función objetivo
novedosa que permite múltiples épocas de actualizaciones de minibatch.

▸ PPO ofrece alguno de los beneficios de la optimización de políticas de región

confiable (TRPO), pero es más simple de implementar, más general y tiene una
mejor complejidad de muestra empíricamente.

Conceptos clave en este algoritmo:

▸ Función de valor ( ): mide lo bueno que es estar en un estado en particular.

▸ Ratio de probabilidad ( ): es el ratio entre la nueva política y la política antigua.


Esto es clave en PPO para medir el cambio den la política.

▸ Clip objetivo: se introduce una función objetivo que limita (clip) los ratios de

probabilidad para mantener actualizaciones de política dentro de un rango

Aprendizaje Automático No Supervisado 19


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

razonable. La función objetivo es:

Aquí es la ventaja estimada y es un hiperparámetro que controla cuánto

puede cambiar el ratio de probabilidad.

El algoritmo PPO se entrena de la siguiente manera:

▸ Recolección de datos, ejecutando la política actual para recolectar datos de

interacción del agente con el entorno.

▸ Estimación de la ventaja para cada acción tomada.

▸ Actualización de la política utilizando el para asegurar que las


actualizaciones no sean demasiado grandes.

▸ Este proceso se repite, ajustando la política gradualmente para mejorar el

desempeño del agente.

Tabla comparativa entre Q-learning, DQN, REINFORCE y PPO

Aprendizaje Automático No Supervisado 20


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Tabla 4. Tabla comparativa entre Q-learning, DQN, REINFORCE y PPO. Fuente: elaboración propia.

Aprendizaje Automático No Supervisado 21


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.6. Implementación de aprendizaje por refuerzo


en Python

Para la implementación utilizaremos la librería gym, con la que podemos crear y

gestionar entornos de aprendizaje por refuerzo. Gym es una herramienta enfocada a

investigadores fácil de usar, que permite probar y desarrollar algoritmos basados en

el aprendizaje por refuerzo.

Veamos cómo crear y usar un entorno de gym:

¡pip install gym


import gym # Importar la librería gym.

# Crear el entorno
# Aquí se crea una instancia del entorno CartPole-v1.
#Este entorno es parte de la colección estándar de Gym.

env = gym.make('CartPole-v1')

# Reiniciar el entorno para obtener la primera observación


# Antes de comenzar a interactuar con el entorno, es necesario reiniciarlo
para #obtener la primera observación.

observation = env.reset()

#Interacción con el entorno

# Renderizar: Muestra una visualización del entorno (opcional y puede


ralentizar la ejecución).

# Acción Aleatoria: Selecciona una acción aleatoria del espacio de acciones


del entorno

# Ejecutar Acción: Ejecuta la acción seleccionada y devuelve la nueva


observación, la recompensa obtenida, si el episodio ha terminado y alguna
información adicional.

# Reiniciar: Si el episodio ha terminado (done es True), reinicia el


entorno.

for _ in range(1000):

Aprendizaje Automático No Supervisado 22


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

# Renderizar el entorno (opcional, puede ralentizar el proceso)


env.render()

# Seleccionar una acción aleatoria


action = env.action_space.sample()

# Ejecutar la acción en el entorno


observation, reward, done, info = env.step(action)

# Verificar si el episodio ha terminado


if done:
observation = env.reset()

#Cerrar el entorno

env.close()

Ahora implementamos el algoritmo Q-learning creando un entorno gym.

Ejemplo del algoritmo REINFORCE en Python:

!pip install gym


import gym
import numpy as np

# Crear el entorno
env = gym.make('FrozenLake-v1', is_slippery=False)

# Inicializar la tabla Q
Q = np.zeros([env.observation_space.n, env.action_space.n])

# Parámetros del Q-Learning


alpha = 0.1 # Tasa de aprendizaje
gamma = 0.90 # Factor de descuento
epsilon = 0.1 # Probabilidad de exploración

num_episodes = 1000

for episode in range(num_episodes):


state, _ = env.reset()
done = False

while not done:


# Asegurarse de que el estado sea un entero
state = int(state)

Aprendizaje Automático No Supervisado 23


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

if np.random.uniform(0, 1) < epsilon:


action = env.action_space.sample()
else:
action = np.argmax(Q[state])

next_state, reward, done, _, _ = env.step(action)

# Asegurarse de que el siguiente estado sea un entero


next_state = int(next_state)

Q[state, action] = Q[state, action] + alpha * (reward + gamma *


np.max(Q[next_state]) - Q[state, action])

state = next_state
# Mostrar la tabla Q final
print("Tabla Q final:")
print(Q)

A continuación, veremos el vídeo Métodos avanzados e implementación de

aprendizaje por refuerzo.

Accede al vídeo:
https://unir.cloud.panopto.eu/Panopto/Pages/Embed.aspx?id=7d93ac29-98d8-

4122-9d19-b1c5017ca7d2

Aprendizaje Automático No Supervisado 24


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.7. Cuaderno de ejercicios

Ejercicio 1. Aplicación del Q-learning en el juego del tres en raya

Implementa el algoritmo Q-learning para jugar al tres en raya (tic-tac-toe). Inicializa la

tabla Q y realiza las primeras tres actualizaciones de la tabla Q usando los siguientes

parámetros: α = 0.1 y γ = 0.9. Usa los estados y acciones dados a continuación:

▸ Estado inicial S0S_0S0: [ , , , , , , , , ]\text{[ , , , , , , , , ]}[ , , , , , , , , ].

▸ Primera acción: coloca una «X» en la posición 0. Nuevo estado S1S_1S1: [X, , , , , , ,

, ]\text{[X, , , , , , , , ]}[X, , , , , , , , ].

▸ Segunda acción: coloca una «O» en la posición 4. Nuevo estado S2S_2S2: [X, , , ,

O, , , , ]\text{[X, , , , O, , , , ]}[X, , , , O, , , , ].

▸ Tercera acción: coloca una «X» en la posición 1. Nuevo estado S3S_3S3: [X, X, , ,

O, , , , ]\text{[X, X, , , O, , , , ]}[X, X, , , O, , , , ].

Solución

▸ Inicialización de la tabla Q:

• Q(S0,acción)=0 para todas las acciones.

▸ Actualización tras la primera acción:

• Q(S0,0)=0+0.1×[0+0.9×max(Q(S1,acción)−0)]=0.

▸ Actualización tras la segunda acción:

• Q(S1,4)=0+0.1×[0+0.9×max(Q(S2,acción)−0)]=0.

▸ Actualización tras la tercera acción:

• Q(S2,1)=0+0.1×[0+0.9×max(Q(S3,acción)−0)]=0.

Aprendizaje Automático No Supervisado 25


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

La tabla Q permanece con valores iniciales debido a las recompensas de 0 en cada

paso.

Ejercicio 2. Implementación de DQN para el CartPole

Implementa un agente DQN para el entorno CartPole-v1 usando la librería gym.

Describe brevemente cómo se inicializan las redes neuronales principal y objetivo, y

cómo se actualizan.

Solución

▸ Inicialización de las redes:

import torch
import torch.nn as nn
import gym

class DQN(nn.Module):
def __init__(self):
super(DQN, self).__init__()
self.fc1 = nn.Linear(4, 24)
self.fc2 = nn.Linear(24, 24)
self.fc3 = nn.Linear(24, 2)

def forward(self, x):


x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
return self.fc3(x)

# Redes principales y objetivo


policy_net = DQN()
target_net = DQN()
target_net.load_state_dict(policy_net.state_dict())
target_net.eval()

▸ Actualización de las redes. Cada cierto número de episodios, copiar los pesos de

policy_net a target_net :

target_net.load_state_dict(policy_net.state_dict())

Ejercicio 3. Gradiente de la política con REINFORCE

Aprendizaje Automático No Supervisado 26


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

Utilizando el algoritmo REINFORCE, calcula el gradiente de la política para un

agente en un entorno simple. Supón que el agente recibió las recompensas [1, 0, -1]

en un episodio. La política parametrizada está dada por θ = [0.5, 0.5]. Calcula la

actualización de θ.

Solución

▸ Cálculo de las recompensas acumuladas Rt:

R0=1+0+(−1)=0

R1=0+(−1)=−1,R2=−1

▸ Gradiente logarítmico de la política (suponiendo una función política simple):

∇θlogπθ(at∣st)=[0.5,0.5]

▸ Actualización de θ:

θ←θ+α∇θlogπθ(at∣st)Rt

▸ Con α = 0.1:

θ0←[0.5,0.5]+0.1[0.5,0.5]×0=[0.5,0.5]θ1←[0.5,0.5]+0.1[0.5,0.5]×(−1)=

[0.45,0.45]θ2←[0.45,0.45]+0.1[0.5,0.5]×(−1)=[0.4,0.4]

Ejercicio 4. PPO en un entorno simple

Describe cómo se implementa la función objetivo con clipping en PPO. Da un

ejemplo numérico donde la probabilidad de la acción bajo la nueva política πθ es 0.6

y bajo la política antigua πθold que es de 0.4, con At=1.2 y ϵ=0.2.

Solución

▸ Cálculo del ratio de probabilidad rt(θ)r_t(\theta)rt(θ):

Aprendizaje Automático No Supervisado 27


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

▸ Clipping del ratio:

clip(rt(θ),1−ϵ,1+ϵ)=clip(1.5,0.8,1.2)=1.2

▸ Función objetivo con clipping:

LCLIP(θ)=min(rt(θ)At,clip(rt(θ)),1−ϵ,1+ϵ)At=min(1.5×1.2,1.2×1.2)=min(1.8,1.44)=1.44

Aprendizaje Automático No Supervisado 28


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
Ideas clave

10.8. Referencias bibliográficas

Barla, N. (2024, abril 22). Self-driving cars with convolutional neural networks (CNN).

N e p t u n e . a i . https://neptune.ai/blog/self-driving-cars-with-convolutional-neural-

networks-cnn

DeepMind. (s. f.). AlphaGo. https://deepmind.google/technologies/alphago/

Jin, J., Song, C., Li, H., Gai, K., Wang, J. y Zhang, W. (2018). Real-time bidding with

multi-agent reinforcement learning in display advertising. arXiv.

https://arxiv.org/pdf/1802.09756.pdf

Mnih, V., Kavukcuoglu, K., Silver, D., Rusu, A. A., Veness, J., Bellemare, M. G.,

Graves, A., Riedmiller, M., Fidjeland, A. K., Ostrovski, G., Petersen, S., Beattie, C.,

Sadik, A., Antonoglou, I., King, H., Kumaran, D., Wierstra, D., Legg, S. y Hassabis, D.

(2015). Human-level control through deep reinforcement learning. Nature, 518(7540),

529.

https://web.stanford.edu/class/psych209/Readings/MnihEtAlHassibis15NatureControl
DeepRL.pdf

Schulman, J., Wolski, F., Dhariwal, P., Radford, A. Y Klimov, O. (2017). Proximal

Policy Optimization Algorithms. OpenAI. https://arxiv.org/pdf/1707.06347

Williams, R. (1992). Simple statistical gradient-following algorithms for connectionist


reinforcement learning. Machine learning, 8(3-4), 229–256.

Xiang, G. (2018). Deep reinforcement learning for time series: playing idealized

trading games. arXiv. https://arxiv.org/ftp/arxiv/papers/1803/1803.03916.pdf

Aprendizaje Automático No Supervisado 29


Tema 10. Ideas clave
© Universidad Internacional de La Rioja (UNIR)
A fondo

¿Qué es el aprendizaje por refuerzo y cómo


trabaja?

Johnny Code. (2023, diciembre 2021). Deep Q-Learning/Deep Q-Network (DQN)

Explained | Python Pytorch Deep Reinforcement Learning [Vídeo]. YouTube.


https://www.youtube.com/watch?v=EUrWGTCGzlA

Explicación del paso a paso, un recorrido por el código y una demostración de cómo

funciona Deep Q-learning (DQL). Usan DQL para resolver el muy simple entorno de

aprendizaje por refuerzo Gymnasium FrozenLake-v1. Habla de las diferencias entre

Q-learning y DQL, la política Epsilon-Greedy, la política Deep Q-Network (DQN), el

Target DQN y Experience replay.

Aprendizaje Automático No Supervisado 30


Tema 10. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Entrenando el juego de Pokemon utilizando


aprendizaje por refuerzo

Peter Whidden. (2023, octubre 2023). Training AI to Play Pokemon with

Reinforcement Learning [Vídeo]. YouTube. https://www.youtube.com/watch?


v=DcYLT37ImBY

Una simulación del juego Pokemon utilizando aprendizaje por refuerzo y viendo su

comportamiento durante el entrenamiento.

Aprendizaje Automático No Supervisado 31


Tema 10. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Conceptos clave en el aprendizaje por refuerzo

OpenAI. (s. f.). Part 1: Key Concepts in RL.


https://spinningup.openai.com/en/latest/spinningup/rl_intro.html

OpenAI muestra una explicación de alto nivel de lo que hacen los algoritmos RL.

Aprendizaje Automático No Supervisado 32


Tema 10. A fondo
© Universidad Internacional de La Rioja (UNIR)
A fondo

Introducción a la optimización de políticas

OpenAI. (s. f.). Part 3: Intro to policy optimization.


https://spinningup.openai.com/en/latest/spinningup/rl_intro3.html

OpenAI analiza los fundamentos matemáticos de los algoritmos de optimización de

políticas y conectaremos el material con un código de muestra.

Aprendizaje Automático No Supervisado 33


Tema 10. A fondo
© Universidad Internacional de La Rioja (UNIR)
Test

1. ¿Cuál es el objetivo principal del aprendizaje por refuerzo?

A. Minimizar la pérdida de datos.

B. Maximizar la precisión de la clasificación.

C. Optimizar la recompensa acumulada a largo plazo.

D. Reducir el tiempo de entrenamiento.

2. En el algoritmo Q-learning, ¿qué representa la variable γ (gamma)?

A. La tasa de aprendizaje.

B. El factor de descuento.

C. La recompensa inmediata.

D. La acción a tomar.

3. ¿Cuál es el propósito de la red objetivo en el algoritmo DQN?

A. Reducir el tamaño de la tabla Q.

B. Estabilizar el proceso de aprendizaje.

C. Aumentar la tasa de aprendizaje.

D. Minimizar la recompensa acumulada.

4. En el contexto de REINFORCE, ¿qué es el gradiente de la política?

A. La diferencia entre las recompensas actuales y futuras.

B. La actualización de los valores Q.

C. El gradiente de la recompensa acumulada esperada con respecto a los

parámetros de la política.

D. La función de pérdida.

Aprendizaje Automático No Supervisado 34


Tema 10. Test
© Universidad Internacional de La Rioja (UNIR)
Test

5. ¿Qué ventaja tiene PPO sobre otros métodos de gradiente de políticas?

A. Es más fácil de implementar y tiene mejor complejidad de muestra.

B. Requiere menos datos de entrenamiento.

C. No utiliza redes neuronales.

D. Minimiza la recompensa acumulada.

6. En Q-learning, ¿cómo se define un episodio?

A. Un conjunto de acciones sin recompensa.

B. El proceso de aprendizaje de un solo paso.

C. El final de una etapa donde el agente ha alcanzado el objetivo o ha

fracasado.

D. La actualización de la red neuronal.

7. ¿Qué es la tabla Q en el contexto de Q-learning?

A. Una lista de recompensas acumuladas.

B. Un registro de todas las acciones realizadas.

C. Una matriz que mantiene los valores Q para todas las combinaciones de

estados y acciones.

D. Una función de política.

8. ¿Cuál es el propósito de la función de pérdida en DQN?

A. Maximizar la recompensa inmediata.

B. Minimizar la diferencia entre los valores Q predichos y los valores Q

objetivo.

C. Actualizar los valores de la tabla Q.

D. Seleccionar la mejor acción posible.

Aprendizaje Automático No Supervisado 35


Tema 10. Test
© Universidad Internacional de La Rioja (UNIR)
Test

9. ¿Qué técnica utiliza REINFORCE para ajustar su estrategia?

A. Diferencias temporales.

B. Gradiente de políticas.

C. Factor de descuento.

D. Red objetivo.

10. En PPO, ¿qué se entiende por «clip objetivo»?

A. Una técnica para asegurar que las actualizaciones de la política no sean

demasiado grandes.

B. Un método para inicializar la tabla Q.

C. Un proceso para reducir el número de episodios.

D. Una función para calcular la recompensa inmediata.

Aprendizaje Automático No Supervisado 36


Tema 10. Test
© Universidad Internacional de La Rioja (UNIR)

También podría gustarte