HDBSCAN

2.5.6

HDBSCAN

Atualizado 2025-11-05 Leitura 3 min
Resumo
  • O HDBSCAN generaliza o DBSCAN explorando uma hierarquia de limiares de densidade, permitindo clusters com densidades diferentes e rotulando automaticamente amostras de baixa densidade como ruído.
  • Dois controles regulam o comportamento: min_cluster_size (menor cluster significativo) e min_samples (quão rigorosa é a definição de ponto central). Amostras com rótulo -1 são tratadas como ruído.
  • O algoritmo constrói uma árvore geradora mínima usando distâncias de alcançabilidade mútua, condensa-a e classifica os clusters por persistência para decidir quais sobrevivem.
  • O HDBSCAN integra-se perfeitamente com UMAP ou outros métodos de aprendizado de variedades: execute UMAP para redução de dimensionalidade e depois agrupe as representações com HDBSCAN para detectar grupos orgânicos.

Intuição #

Este método deve ser interpretado por meio de suas suposições, condições dos dados e como as escolhas de parâmetros afetam a generalização.

Explicação Detalhada #

1. Visão geral #

O DBSCAN clássico depende de um único raio eps; escolher um valor adequado para cada região é difícil quando as densidades variam. O HDBSCAN remove o eps e, em vez disso, varre todos os valores de raio, construindo uma hierarquia de clusters. Dessa hierarquia, ele extrai os clusters mais persistentes — aqueles que permanecem intactos em uma ampla faixa de níveis de densidade.

Parâmetros principais:

  • min_cluster_size: número mínimo de pontos que torna um cluster válido.
  • min_samples: quantos vizinhos são necessários para que um ponto seja central (padrão é min_cluster_size). Valores maiores tornam o algoritmo mais conservador.
  • cluster_selection_method: "eom" (excess of mass) prefere clusters estáveis, enquanto "leaf" mantém as folhas mais detalhadas.

2. Distância central e alcançabilidade mútua #

Para cada ponto (x) calculamos a distância central

$$ d_{\mathrm{core}}(x) = \text{distance to the } \texttt{min\_samples}\text{-th nearest neighbour}. $$

A distância de alcançabilidade mútua entre (x) e (y) é

$$ d_{\mathrm{mreach}}(x, y) = \max\left\{ d_{\mathrm{core}}(x),\; d_{\mathrm{core}}(y),\; \lVert x - y \rVert \right\}. $$

O HDBSCAN constrói uma árvore geradora mínima sobre essas distâncias, condensa a hierarquia e atribui a cada cluster uma pontuação de persistência (estabilidade integrada). Clusters com alta persistência são reportados; amostras que nunca pertencem a um componente persistente são rotuladas como ruído ((-1)).

3. Exemplo em Python #

Use a biblioteca hdbscan (instale via pip install hdbscan) para agrupar um conjunto de dados de duas meias-luas:

import numpy as np
import matplotlib.pyplot as plt
import hdbscan
from sklearn.datasets import make_moons

X, _ = make_moons(n_samples=400, noise=0.08, random_state=42)

clusterer = hdbscan.HDBSCAN(
    min_cluster_size=20,
    min_samples=10,
    cluster_selection_method="eom",
)
labels = clusterer.fit_predict(X)

plt.figure(figsize=(6, 5))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap="tab10", s=20)
plt.title("HDBSCAN clustering result")
plt.xlabel("feature 1")
plt.ylabel("feature 2")
plt.grid(alpha=0.2)
plt.show()

print("Cluster persistence:", clusterer.cluster_persistence_)
print("Noise points:", np.sum(labels == -1))

A cluster_persistence_ indica quais clusters são os mais estáveis; se a persistência for baixa, considere aumentar min_cluster_size ou reduzir o ruído nos dados.

4. Dicas práticas #

  • Normalize os atributos antes do agrupamento — métodos baseados em distância são sensíveis à escala.
  • Se você quiser mais clusters, diminua min_cluster_size ou mude para cluster_selection_method="leaf".
  • Para remover pequenos fragmentos ruidosos, mantenha min_cluster_size alto e min_samples moderado (por exemplo, 5–10).
  • Combine com UMAP: ajuste o UMAP para projetar dados de alta dimensionalidade em 2–10 dimensões e depois execute HDBSCAN na representação para pipelines não supervisionadas robustas.

5. Referências #

  • Campello, R. J. G. B., Moulavi, D., Zimek, A., & Sander, J. (2013). Density-Based Clustering Based on Hierarchical Density Estimates. PAKDD.
  • McInnes, L., Healy, J., & Astels, S. (2017). hdbscan: Hierarchical Density Based Clustering. Journal of Open Source Software.
  • scikit-learn developers. (2024). Clustering. https://scikit-learn.org/stable/modules/clustering.html