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}\]
