Clase 4: Clustering Jerárquico
Es un tipo de aprendizaje que no requiere de etiquetas (las respuestas correctas) para poder aprender. Se basa en la construcción de Jerarquías para ir construyendo clusters.
Corresponde a un diagrama en el que se muestran las distancias de atributos entre clases que son parte de un mismo cluster.
Los algoritmos basados en jerarquía pueden seguir 2 estrategias:
Aglomerativos: Comienzan con cada objeto como un grupo (bottom-up). Estos grupos se van combinando sucesivamente a través de una métrica de similaridad. Para n objetos se realizan n-1 uniones
.
Divisionales: Comienzan con un solo gran cluster (bottom-down). Posteriormente este mega-cluster es dividido sucesivamente de acuerdo a una métrica de similaridad.
Algoritmo
proximidad/distancia
entre cada cluster.(hasta que exista un solo cluster)
:
proximidad/distancia
.Lo más importante de este proceso es el cálculo de la matriz de proximidad/distancia entre clusters
Distintos enfoques de distancia entre clusters, segmentan los datos en forma distinta.
Supongamos que tenemos cinco tipos de genes cuya expresión ha sido determinada por 3 caracteríticas. Las siguientes expresiones pueden ser vistas como la expresión dados los genes en tres experimentos.
Apliquemos un Clustering Jerárquico Aglomerativo utilizando como medida de similaridad la
Distancia Euclideana
.
Otros tipos de distancia también son aplicables siguiendo un procedimiento análogo.
El algoritmo considerará que todos los puntos inicialmente son un cluster. Por lo tanto, tratará de encontrar los 2 puntos más cercanos e intentará unirnos en un sólo cluster.
\[D(C_i, C_j) = min\{d(x,y) | x \in C_i, y \in C_j\}\]
Ventajas
Limitaciones
\[D(C_i, C_j) = max\{d(x,y) | x \in C_i, y \in C_j\}\]
Ventajas
Limitaciones
\[D(C_i, C_j) = avg\{d(x,y) | x \in C_i, y \in C_j\}\]
Ventajas
Limitaciones
Within cluster distance
.\[D(C_i, C_j) = wc(Cij) - wc(C_i) - wc(C_j) = \frac{n_i\cdot n_j}{n_i + n_j}||\bar{C_i} - \bar{C_j}||^2\]
Ventajas
Limitaciones
Los Hiperparámetros de este modelo serán:
Note
linkage
: La forma de calcular la distancia entre clusters.distancia
: La distancia utilizada como similaridad entre los clusters.A diferencia de K-Means, este método no requiere definir el número de Clusters a priori.
Supongamos que por simplicidad utilizaremos
Average Linkage
. (El proceso para utilizar otro linkage es análogo).
No es necesario realizar la última iteración ya que se entiende que ambos clusters se unen.
Fortalezas
Debilidades
from sklearn.cluster import AgglomerativeClustering
ac = AgglomerativeClustering(n_clusters=2, metric="euclidean",linkage="ward")
## Se entrena y se genera la predicción
ac.fit_predict(X)
n_clusters: Define el número de clusters a crear, por defecto 2.
metric: Permite distancias L1, L2 y coseno. Por defecto “euclidean”.
linkage: Permite single, complete, average y ward. Por defecto “ward”.
.fit_predict()
: Entrenará el modelo en los datos suministrados e inmediatamente genera el cluster asociado a cada elemento.
¿Por qué no existen los métodos .fit()
y .predict()
por separado?
from scipy.cluster.hierarchy import dendrogram, linkage
# Genera los cálculos necesarios para construir el Histograma.
Z = linkage(X, method='single', metric="euclidean")
# Graficar el Dendograma
plt.figure(figsize=(10, 5)) # Define el tamaño del Gráfico
plt.title('Dendograma Clustering Jerárquico') # Define un título para el dendograma
plt.xlabel('Iris Samples')
plt.ylabel('Distance')
dendrogram(Z, leaf_rotation=90., leaf_font_size=8.)
plt.show()
Principalmente este código permite graficar el Dendograma completo.
L4: Genera una instancia del Dendograma. (Sería equivalente al .fit()
de Scikit-Learn
).
L5-L12: Corresponde al código necesario para graficar el Dendograma.
Pre-procesamientos
Es importante recordar que el clustering aglomerativo también es un Algoritmo basado en distancias
, por lo tanto se ve afectado por Outliers y por Escala.
Se recomienda preprocesar los datos con:
Winsorizer()
para eliminar Outliers.StandardScaler()
o MinMaxScaler()
para llevar a una escala común.Otras técnicas como merge y split, no aplican a este tipo de clustering debido a las limitaciones del algoritmo.
En casos en los que no es posible calcular distancias debido a la presencia de datos categóricos, es posible utilizar el Gower Dissimilarity como medida de similitud.
\[Gower(p1,p2) = \frac{3}{9}\]