Redução de Dimensionalidade
Conjuntos de dados reais costumam ter dezenas, centenas ou — para texto e imagens — milhares de atributos. A redução de dimensionalidade os comprime em poucas dimensões informativas, por três motivos:
- Visualização — humanos enxergam em 2D/3D; projetar os dados revela agrupamentos, gradientes e outliers;
- Remoção de ruído e redundância — atributos correlacionados (lembre-se das medidas de pétala da iris) carregam informação duplicada;
- A maldição da dimensionalidade — em altas dimensões, os dados ficam esparsos e as distâncias perdem sentido, degradando métodos baseados em distância como k-NN e agrupamento.
PCA — Análise de Componentes Principais
O PCA (Pearson, 1901; Hotelling, 1933) é o método clássico e linear: encontrar as direções ortogonais de variância máxima e projetar sobre as primeiras.
A matemática
Dados centrados \(X \in \mathbb{R}^{n \times d}\) (cada coluna com média zero), a matriz de covariância amostral é
O primeiro componente principal é o vetor unitário \(w\) que maximiza a variância da projeção:
A solução é o autovetor de \(C\) com o maior autovalor \(\lambda_1\); o segundo componente é o próximo autovetor, ortogonal ao primeiro, e assim por diante. O autovalor \(\lambda_k\) é a variância capturada pelo componente \(k\), o que dá a razão de variância explicada:
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
X_scaled = StandardScaler().fit_transform(X) # escalone primeiro — o PCA persegue variância!
pca = PCA(n_components=0.95) # manter 95% da variância
Z = pca.fit_transform(X_scaled)
pca.explained_variance_ratio_ # variância capturada por componente
Escalone antes do PCA
O PCA encontra direções de variância máxima. Se um atributo é medido em milhares e outro em dezenas, o primeiro componente simplesmente aponta para o atributo de grande escala. Padronize primeiro (Pré-processamento).
Notas práticas:
- Os componentes são combinações lineares dos atributos originais — inspecione
pca.components_para interpretá-los; - O scree plot (variância explicada por componente) orienta quantos componentes manter — procure o "cotovelo";
- O PCA também é uma ferramenta de compressão/remoção de ruído: reconstrua com poucos componentes para filtrar ruído.
Encontre o PC1 na mão — gire o eixo até a variância projetada atingir o pico e depois confira com o botão de encaixe:
Métodos não lineares: t-SNE e UMAP
Projeções lineares não conseguem desenrolar estruturas curvas (o clássico "Swiss roll"). Dois métodos não lineares modernos dominam a prática de visualização:
t-SNE (van der Maaten & Hinton, 2008)
O t-SNE converte distâncias par a par em probabilidades de vizinhança em alta dimensão e depois encontra um layout 2D cujas probabilidades de vizinhança coincidam (minimizando a divergência KL). Ele se destaca em revelar a estrutura local de agrupamentos.
Ressalvas que você precisa conhecer:
- A perplexidade (≈ número efetivo de vizinhos, típico 5–50) muda a figura substancialmente;
- Os tamanhos dos agrupamentos e as distâncias entre agrupamentos em um gráfico t-SNE não têm significado — o algoritmo preserva vizinhanças, não a geometria global;
- É estocástico: sementes diferentes geram layouts diferentes;
- Não há
transformpara novos pontos (na formulação padrão) — é uma ferramenta de visualização, não um extrator de atributos geral.
UMAP (McInnes, Healy & Melville, 2018)
O UMAP constrói um grafo de k-vizinhos mais próximos dos dados, modela sua estrutura topológica difusa e otimiza um layout de baixa dimensão que a preserva. Comparado ao t-SNE, ele:
- costuma ser mais rápido e escala melhor;
- preserva mais estrutura global (as posições relativas dos agrupamentos significam um pouco mais);
- suporta
transformpara novos pontos, podendo alimentar modelos subsequentes — é exatamente esse seu papel dentro do BERTopic, onde reduz embeddings de texto antes do agrupamento.
# pip install umap-learn
import umap
Z = umap.UMAP(n_neighbors=15, min_dist=0.1, n_components=2).fit_transform(X_scaled)
PCA vs t-SNE, lado a lado
Dígitos manuscritos (64 dimensões → 2), os mesmos dados, duas projeções:
O PCA — a melhor visão linear — sobrepõe várias classes de dígitos: duas direções de variância máxima não bastam. O t-SNE separa as dez classes quase perfeitamente ao preservar vizinhanças locais. O preço: eixos, tamanhos de agrupamentos e distâncias entre agrupamentos no painel t-SNE não têm significado interpretável.
Escolhendo um método
| Objetivo | Método |
|---|---|
| Pré-processar atributos para um modelo subsequente | PCA (rápido, determinístico, tem transform) |
| Entender/interpretar direções de variação | PCA (os componentes são combinações lineares) |
| Visualizar estrutura de agrupamentos | t-SNE ou UMAP |
| Reduzir antes de agrupamento por densidade (ex.: HDBSCAN, BERTopic) | UMAP |
| Comprimir/remover ruído de imagens ou sinais | PCA |
Material de aula
Notebook da aula (em português)
Notebook prático usado em sala — Aula 06 — PCA, t-SNE e UMAP: abrir no Colab
Vídeo
Latent Space Visualisation: PCA, t-SNE, UMAP
