Método do Cotovelo
Visão geral
O método do cotovelo (elbow method) é uma heurística (heuristic) amplamente usada para escolher um hiperparâmetro de complexidade do modelo (model complexity hyperparameter) ao procurar um ponto de retornos decrescentes (diminishing returns) em uma curva de “ajuste do modelo (model fit)” vs. complexidade.
Mais comumente, ele é usado para escolher o número de clusters (k) no agrupamento k-means (k-means clustering), traçando um objetivo como a soma dos quadrados intra-cluster (within-cluster sum of squares, WCSS; também chamada de inércia (inertia) ou soma dos erros quadráticos (SSE)) em função de (k). À medida que (k) aumenta, o objetivo quase sempre melhora (a WCSS diminui), mas depois de certo ponto as melhorias ficam pequenas. O “cotovelo” (uma dobra visível na curva) é tomado como um bom compromisso entre simplicidade e ajuste.
Isso se encaixa em seleção de modelos (model selection): você está selecionando um valor que controla a capacidade do modelo. Na prática, o método do cotovelo costuma ser combinado com verificações mais quantitativas e restrições do domínio, e é melhor entendido como um gráfico de diagnóstico (diagnostic plot), e não como uma regra definitiva. Veja também Ajuste de Hiperparâmetros (Hyperparameter Tuning) para procedimentos sistemáticos de busca.
Intuição: por que um “cotovelo” aparece
Muitas funções objetivo de aprendizado de máquina (machine learning) melhoram de forma monótona à medida que você aumenta a complexidade do modelo:
- Mais clusters em k-means (\Rightarrow) menor variância intra-cluster
- Mais componentes em PCA (\Rightarrow) maior variância explicada
- Mais componentes de mistura em um modelo de mistura (mixture model) (\Rightarrow) maior verossimilhança (likelihood)
Mas o ganho marginal (marginal gain) tipicamente diminui. Aumentos iniciais na complexidade capturam a estrutura principal; aumentos posteriores capturam estrutura mais fina, ruído ou idiossincrasias.
O método do cotovelo tenta identificar o ponto em que:
- A curva transita de melhoria acentuada para melhoria lenta
- Complexidade adicional traz pouco benefício prático
Isso é intimamente relacionado ao compromisso viés/variância (bias/variance trade-off) (mesmo que k-means seja não supervisionado (unsupervised) e não tenha “erro de generalização (generalization error)” da mesma forma que modelos supervisionados (supervised)).
O caso clássico: escolhendo \(k\) para k-means
Objetivo do k-means (WCSS / inércia)
Dado um conjunto de pontos ({x_i}{i=1}^n) e (k) clusters com centróides ({\mu_j}{j=1}^k), o k-means minimiza:
[ \text{WCSS}(k) = \sum_{i=1}^{n} \min_{1 \le j \le k} \lVert x_i - \mu_j \rVert^2 ]
Propriedades que importam para o método do cotovelo:
- Monotonicidade (monotonicity): (\text{WCSS}(k+1) \le \text{WCSS}(k)). Mais clusters não podem piorar o objetivo.
- Extremos triviais (trivial extremes):
- (k=1): WCSS é grande (um centróide para tudo)
- (k=n): WCSS se torna (0) (cada ponto é seu próprio cluster)
- Portanto, selecionar (k) é sobre um compromisso razoável, e não “maximizar o ajuste”.
Como calcular a curva do cotovelo
- Escolha um intervalo de valores candidatos (k \in {k_{\min}, \dots, k_{\max}})
- Para cada (k):
- Ajuste o k-means (geralmente com múltiplas inicializações aleatórias)
- Registre a WCSS (no scikit-learn isso é
inertia_)
- Plote WCSS vs (k)
- Procure a “dobra”
Exemplo prático (Python / scikit-learn)
Este exemplo padroniza os atributos (importante para agrupamento baseado em distância), ajusta o k-means ao longo de uma faixa de (k) e plota a inércia.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
X = ... # shape (n_samples, n_features)
ks = range(1, 16)
inertias = []
for k in ks:
model = make_pipeline(
StandardScaler(),
KMeans(
n_clusters=k,
init="k-means++",
n_init=20, # more restarts reduces bad local minima
random_state=42
)
)
model.fit(X)
kmeans = model.named_steps["kmeans"]
inertias.append(kmeans.inertia_)
plt.plot(list(ks), inertias, marker="o")
plt.xlabel("k (number of clusters)")
plt.ylabel("WCSS / inertia")
plt.title("Elbow method for k-means")
plt.xticks(list(ks))
plt.show()
Interpretando o gráfico
- Se a curva cai rapidamente de (k=1) para (k=3) e depois achata, o cotovelo pode estar em torno de 3
- Se ela cai de forma constante sem uma dobra, pode não haver um único (k) natural sob as suposições do k-means
Uma prática comum é anotar o gráfico com candidatos a cotovelo e então validá-los usando:
- visualizações de clusters (se a dimensionalidade permitir),
- inspeção qualitativa do conteúdo dos clusters,
- uma segunda métrica como a pontuação de silhueta (ver alternativas abaixo).
Formas mais rigorosas de “ver” o cotovelo (ainda heurísticas)
Como “o cotovelo” pode ser subjetivo, às vezes as pessoas usam quantidades derivadas:
1) Primeiras diferenças (melhoria marginal)
Calcule (\Delta(k) = \text{WCSS}(k-1) - \text{WCSS}(k)). (\Delta) grande no começo e (\Delta) pequena depois sugere retornos decrescentes.
2) Segundas diferenças (curvatura)
Calcule (\Delta^2(k) = \Delta(k) - \Delta(k+1)). Uma segunda diferença grande indica uma dobra mais acentuada.
Isso ajuda, mas não são garantias estatisticamente fundamentadas; também podem ser ruidosas devido à aleatoriedade no agrupamento e à variabilidade amostral.
3) Algoritmos automatizados de detecção de “joelho” (knee detection)
Bibliotecas como kneed tentam detectar o “joelho” programaticamente. Isso pode ajudar a padronizar decisões, mas ainda é uma escolha baseada em um critério geométrico.
from kneed import KneeLocator
knee = KneeLocator(list(ks), inertias, curve="convex", direction="decreasing")
print("Elbow k:", knee.elbow)
Use a detecção automatizada como sugestão — não como um oráculo — especialmente quando a curva é suave e ambígua.
Armadilhas comuns e modos de falha
1) Nenhum cotovelo claro (o problema mais comum)
Muitos conjuntos de dados reais produzem uma curva que decai suavemente sem uma dobra óbvia. Motivos incluem:
- Os clusters não são bem separados
- Os dados têm mudanças graduais de densidade em vez de grupos discretos
- Dados de alta dimensionalidade tornam as distâncias menos informativas (“concentração de distâncias (distance concentration)”)
- A estrutura não corresponde ao viés indutivo (inductive bias) do k-means (aproximadamente clusters esféricos de tamanho similar)
Nesses casos, escolher (k) apenas pelo gráfico do cotovelo é pouco confiável.
2) O cotovelo pode refletir suposições do k-means, não a estrutura “verdadeira”
O k-means é otimizado para distância Euclidiana e tende a encontrar:
- clusters aproximadamente esféricos
- tamanhos de cluster semelhantes (dependendo da distribuição dos dados)
Se a estrutura real é:
- clusters alongados,
- densidades variáveis,
- formas não convexas,
então a WCSS pode continuar melhorando de um jeito que oculta o “número correto” de grupos semânticos. Alternativas como Modelos de Mistura Gaussiana (Gaussian Mixture Models) (com estrutura de covariância), DBSCAN/HDBSCAN, ou agrupamento espectral (spectral clustering) podem ser mais apropriadas.
3) O escalonamento de atributos pode mudar completamente a curva
Como a WCSS usa distâncias Euclidianas ao quadrado, atributos com maior escala numérica dominam. Sem escalonamento, o gráfico do cotovelo pode refletir “unidades” e não estrutura.
Correções típicas:
StandardScaler(média 0, variância 1)RobustScalerpara dados com caudas pesadas/valores atípicos (outliers)- normalização específica do domínio (por exemplo, TF-IDF para texto)
4) Sensibilidade à inicialização aleatória e a mínimos locais
O k-means pode convergir para mínimos locais (local minima). Se você o executa uma vez por (k), seus valores de inércia podem ficar ruidosos e o cotovelo pode “mudar”.
Mitigações:
- use
init="k-means++" - aumente
n_init - fixe
random_statepara reprodutibilidade (reproducibility) (mas ainda verifique a robustez)
Uma boa prática é executar múltiplas sementes e plotar média ± desvio padrão da inércia.
5) Escolher \(k\) pequeno demais ou grande demais por causa de escolhas de plotagem
- Se (k_{\max}) for pequeno demais, você pode não ver o cotovelo.
- Se (k_{\max}) for enorme, o “cotovelo” pode parecer artificialmente cedo porque a cauda fica longa e plana.
- Escala linear vs escala logarítmica (log scaling) pode mudar visualmente a dobra percebida.
Tente:
- focar em uma faixa plausível de (k) a partir de conhecimento do domínio
- plotar a inércia normalizada pela inércia em (k=1), ou plotar a melhoria percentual
6) Superinterpretar o cotovelo como “o número correto de clusters”
Aprendizado não supervisionado frequentemente tem múltiplas granularidades válidas (granularities):
- segmentação mais grossa para decisões de estratégia,
- segmentação mais fina para personalização.
O “melhor” (k) depende do caso de uso a jusante (interpretabilidade, acionabilidade, restrições de capacidade etc.), e não apenas do ajuste.
Além do k-means: outros usos de gráficos de “cotovelo”
Embora k-means seja o exemplo clássico, a ideia do cotovelo aparece em outros contextos:
PCA: escolhendo o número de componentes
Você pode plotar:
- variância explicada cumulativa vs número de componentes,
- ou a razão de variância explicada por componente.
Então, procure retornos decrescentes na variância explicada.
Isso costuma ser discutido junto com Análise de Componentes Principais (Principal Component Analysis).
Curvas de complexidade de modelo em geral
Qualquer situação em que um objetivo melhora monotonamente com a complexidade pode convidar a uma escolha no estilo cotovelo, por exemplo:
- escolher o grau polinomial para regressão (embora validação cruzada geralmente seja preferível; veja Validação Cruzada (Cross-Validation))
- selecionar o número de tópicos em LDA (frequentemente com métricas de coerência em vez disso)
- escolher o número de unidades/camadas ocultas (geralmente via desempenho em validação, não por um cotovelo)
A principal limitação permanece: uma dobra geométrica não substitui um critério de avaliação específico da tarefa.
O que fazer quando não aparece um cotovelo claro (alternativas recomendadas)
Quando o cotovelo é ambíguo, em geral você quer uma métrica mais fundamentada ou uma suposição de modelagem diferente.
1) Pontuação de silhueta (comum em agrupamento)
O coeficiente de silhueta (silhouette coefficient) mede quão similar um ponto é ao seu próprio cluster em comparação com outros clusters. Ele varia em ([-1, 1]); quanto maior, melhor.
Prós:
- fornece um único escalar para otimizar em função de (k)
- mais interpretável do que inércia isoladamente
Contras:
- ainda é baseado em distância; pode preferir clusters “redondos”
- pode ser enganoso em alta dimensionalidade ou com densidades desiguais
2) Estatística de gap (gap statistic)
A estatística de gap (gap statistic) compara a queda observada na WCSS ao que seria esperado sob uma distribuição nula de referência (por exemplo, dados uniformes em uma caixa delimitadora).
Prós:
- tenta levar em conta o fato de que a WCSS sempre diminui com (k)
Contras:
- mais cara (requer simulações)
- depende da escolha da distribuição de referência
3) Critérios de informação (AIC/BIC) para agrupamento probabilístico
Para Modelos de Mistura Gaussiana (Gaussian Mixture Models), você pode escolher o número de componentes via AIC ou BIC, que fazem o compromisso entre ajuste de verossimilhança e contagem de parâmetros.
Prós:
- mais fundamentado do que o cotovelo para modelos probabilísticos
Contras:
- depende das suposições do modelo (gaussianidade, forma da covariância)
- ainda pode ser ambíguo com poucos dados
4) Estabilidade de clusters / seleção baseada em reamostragem
Ideia: se o agrupamento é “real”, ele deve ser estável sob pequenas perturbações:
- reamostragem bootstrap (bootstrap resampling),
- subamostragem (subsampling),
- adicionar pequeno ruído,
- reexecutar com diferentes sementes.
Então compare os agrupamentos usando o índice Rand ajustado (adjusted Rand index, ARI) ou informação mútua (mutual information).
Prós:
- foca em robustez
Contras:
- computacionalmente mais pesada
- “estável” ainda pode significar “consistentemente errado” sob uma família de modelos incompatível
5) Validação externa / a jusante (escolha orientada pela tarefa)
Se o agrupamento alimenta um sistema a jusante (recomendações, triagem de anomalias, sumarização), escolha (k) com base no que melhora esse sistema:
- KPIs de negócio,
- restrições de interpretabilidade,
- avaliação humana,
- tarefas supervisionadas proxy.
Esse costuma ser o critério mais honesto.
6) Considere um algoritmo de agrupamento diferente
Se a geometria do k-means está errada para seus dados, mudar (k) não vai consertar. Considere:
- métodos baseados em densidade (density-based methods) (DBSCAN/HDBSCAN) para densidades variáveis e clusters não esféricos
- agrupamento hierárquico (hierarchical clustering) com cortes no dendrograma
- agrupamento espectral para estruturas não convexas
Checklist de fluxo de trabalho prático
Ao usar o método do cotovelo para k-means, um fluxo de trabalho robusto se parece com isto:
Pré-processar
- tratar valores ausentes
- escalar/normalizar atributos
- considerar redução de dimensionalidade se for muito alta dimensionalidade
Calcular a curva do cotovelo
- escolher uma faixa razoável de (k) (por exemplo, 1–15 ou 2–30)
- usar múltiplas inicializações (
n_init) e configurações estáveis
Inspecionar
- procurar uma dobra clara
- checar sensibilidade: o cotovelo muda entre sementes ou subconjuntos?
Validar com alternativas
- silhueta, estatística de gap ou estabilidade
- checagem de sanidade com visualizações / interpretabilidade dos clusters
Decidir com base no caso de uso
- restrições operacionais e interpretabilidade importam
- documentar a justificativa, não apenas o (k) escolhido
Principais conclusões
- O método do cotovelo é uma ferramenta heurística de seleção de modelos: plote o objetivo vs. complexidade e escolha o ponto de retornos decrescentes.
- Para k-means, o objetivo tipicamente é WCSS/inércia, que sempre diminui com (k); o cotovelo é onde as melhorias se tornam marginais.
- Ele é subjetivo e pode falhar quando a estrutura é fraca, os dados são de alta dimensionalidade ou as suposições do k-means não correspondem à realidade.
- Quando não há cotovelo claro, prefira alternativas como pontuação de silhueta, estatística de gap, AIC/BIC para modelos de mistura, análise de estabilidade, ou validação a jusante/orientada pela tarefa.
- Trate o gráfico do cotovelo como um diagnóstico e combine-o com outras evidências para uma escolha defensável.