Machine Learning · Insper

Redução de Dimensionalidade

Abordagem avançada

Quanto se pode confiar num mapa de PCA (análise de componentes principais), t-SNE (t-distributed stochastic neighbor embedding) ou UMAP (uniform manifold approximation and projection), medido

Onde a parte fundamental parou

  • PCA: os autovetores da covariância; o autovalor é a variância guardada; ele tem transform.
  • t-SNE e UMAP: mapas que guardam os vizinhos de cada ponto; tamanhos, distâncias entre grupos e eixos não significam nada.
  • Sete afirmações proibidas, dadas como regras.
Um gráfico é uma hipótese. Esta parte transforma as regras em números: uma nota para o mapa, uma comparação nula, um teste de sementes, pontos separados.

O caminho desta parte

  1. Armadilhas do PCAunidades, vazamento, alvo, fatores, one-hot
  2. Dar nota a um mapatrustworthiness; o Isomap e a família de variedades
  3. Pôr o t-SNE à provagrupos no ruído; eixos e sementes
  4. Pontos novos, todas as escalaso transform do UMAP; trustworthiness em todo k
Cada etapa responde a uma pergunta: como um PCA pode dizer algo falso? → como dar nota a um mapa? → o t-SNE encontra o que não existe? → o mapa aceita pontos novos e em que escala ele é bom?
Etapa 1 · como um PCA pode dizer algo falso?

Cinco armadilhas do PCA

  1. Não padronizar colunas em unidades diferentes: você mede a unidade (vinhos: PC1 = prolina, 99,8%).
  2. Ajustar antes da divisão: as linhas de teste moldam a projeção.
  3. Supor que os componentes de alta variância são os úteis para prever: o PCA nunca olha o alvo.
  4. Ler componentes como fatores do mundo real: os sinais são arbitrários; autovalores próximos admitem qualquer rotação.
  5. PCA em colunas one-hot sem pensar: uma coluna 0/1 com fração \(p\) de uns tem variância \(p(1-p)\), então categorias raras somem.
Nenhuma das cinco gera mensagem de erro. O código roda, os formatos batem e a conclusão é falsa.
Etapa 2 · como dar nota a um mapa?

Uma nota para um mapa: a trustworthiness

Dos \(k\) vizinhos mais próximos de cada ponto no mapa, quantos eram vizinhos de verdade no espaço original? Os intrusos custam mais quanto mais longe estavam de fato. 1 = nenhum intruso.

Preveja. Um mapa que põe os pontos ao acaso: que nota ele tira, 0 ou outra coisa?

mapa aleatório

≈ 0,5
o piso, não 0

PCA no rocambole

0,810
as camadas caem umas sobre as outras

Isomap

0,976
caminha num grafo de 10 vizinhos: desenrola a folha

Uma aposta, muitos métodos

A aposta: a distância euclidiana só é confiável localmente. MDS = escalonamento multidimensional; LLE = imersão localmente linear (locally linear embedding).

métodoideiasituação hoje
Kernel PCAPCA no espaço de um núcleoescolher o núcleo; memória \(O(n^2)\)
MDSmanter todas as distânciasbase histórica; aglomeração
IsomapMDS em distâncias no grafo (geodésicas)atalhos entre camadas
LLE / laplaciano do graforeconstruções locais / laplacianoancestrais do UMAP
t-SNEcasar vizinhançaspadrão de visualização desde 2008
UMAPgrafo difuso + layout otimizadopadrão atual em grande escala
Autoencoderuma rede aprende o mapa e o inversoreversível; ponte para o deep learning
Etapa 3 · o t-SNE encontra o que não existe?

O t-SNE encontra grupos no ruído

200 pontos de ruído uniforme em 10 colunas. Um agrupamento k-means avaliado pela silhueta (perto de 1 para grupos separados, perto de 0 quando não há grupos) diz quão "agrupado" parece um conjunto de pontos.

Preveja. O próprio ruído tira 0,09. O mapa t-SNE dele: mais, menos ou o mesmo?
melhor silhuetatrustworthiness
o próprio ruído de 10 colunas0,09
o mapa t-SNE dele, perplexidade 300,380,86
ruído de 4 colunas, mapa t-SNE0,430,97
Uma boa trustworthiness não certifica a estrutura: o ruído também tem vizinhanças locais. O remédio é uma comparação nula: embaralhe cada coluna de forma independente, rode de novo e compare.

Eixos e execuções

A perda depende só das distâncias no mapa: girá-lo ou espelhá-lo não muda nada. Dígitos, inicialização aleatória, semente 0 contra as sementes 1, 2 e 3:

|correlação| dos eixos horizontais

1,0; 0,0; 0,1

a semente 2 saiu girada de um quarto de volta

vizinhos em comum

90%, 94%, 85%

no ruído: só 47%

As vizinhanças são reais; a orientação não. O init="pca" (o padrão) torna o mapa reprodutível, o que não é o mesmo que estável.
Etapa 4 · o mapa aceita pontos novos e em que escala ele é bom?

O UMAP posiciona pontos novos, medido

Os dígitos: o UMAP ajustado em 80% das imagens e depois reducer.transform nos outros 20%.

Preveja. Com que frequência uma imagem nova vai cair ao lado de uma imagem de treino do próprio dígito?

hasattr(PCA(), "transform")    # True
hasattr(TSNE(), "transform")   # False
reducer = umap.UMAP(n_neighbors=15, min_dist=0.1, random_state=0).fit(X_tr)
E_te = reducer.transform(X_te)                 # 360 imagens novas, o mesmo mapa
  

imagem nova ao lado do próprio dígito

96,4%

t-SNE

sem transform: acrescentar pontos exige recalcular o mapa inteiro, o que mexe também nos pontos antigos

PCA vs t-SNE, lado a lado

Dígitos: o PCA sobrepõe as classes (0,830), o t-SNE as separa (0,992) mas parte os 1; rocambole suíço: o PCA mistura (0,810), o t-SNE corta a folha em pedaços (0,976)

Trustworthiness nos dígitos, para vizinhanças de tamanho \(k\):

k=5k=30k=100
PCA0,8300,8300,835
t-SNE0,9950,9850,963
UMAP0,9890,9830,961

O t-SNE parte os 1 em ilhas e corta o rocambole em pedaços. Não há vencedor até você dizer qual escala lhe interessa.

Resumo: uma redução precisa de um número

para afirmar que...meça
\(k\) componentes guardam quase tudoa variância explicada acumulada; o erro de reconstrução
o mapa mantém os vizinhos de cada pontoa trustworthiness, em mais de um \(k\) (aleatório ≈ 0,5)
os grupos do mapa existemum agrupamento no espaço original; uma comparação nula
a figura é estávela sobreposição de vizinhos entre sementes, perplexidades, amostras
o mapa funciona em dados novostransform (PCA, UMAP), avaliado em linhas separadas
Um gráfico é uma hipótese, não um resultado.
Lab avançado · cerca de 30 min, em duplas

Números nos mapas, passos 5 a 8

  • O mesmo notebook e a mesma sessão do lab fundamental: X, y, X_new, maps, reducer dos passos 1 a 4.
  • Passos: 5. dar nota aos mapas com a trustworthiness · 6. perplexidade · 7. UMAP: n_neighbors, min_dist, imagens novas · 8. testar uma afirmação proibida.
  • Em cada passo, responda ao Preveja antes de rodar.
  • Simulações: um mapa que não sabe nada (passo 5) e o t-SNE não tem transform, então recomece (passo 7).

Ritmo: passo 5 e a primeira simulação em 8 min; passo 6 em 5 min; passo 7 e a segunda simulação em 12 min; passo 8 em 5 min.