Dimensão intrínseca

Unsupervised Learning em Python

Benjamin Wilson

Director of Research at lateral.io

Dimensão intrínseca de uma rota de voo

  • 2 variáveis: longitude e latitude ao longo de uma rota de voo
  • Parece ser 2D
  • Mas dá para aproximar com 1 variável: deslocamento ao longo da rota
  • Intrinsecamente 1D
latitude  longitude
  50.529     41.513
  50.360     41.672
  50.196     41.835
...

Dispersão: longitude vs latitude

Unsupervised Learning em Python

Dimensão intrínseca

  • Dimensão intrínseca = nº de variáveis para aproximar o dataset
  • Ideia central da redução de dimensionalidade
  • Qual a representação mais compacta das amostras?
  • Pode ser detectada com PCA
Unsupervised Learning em Python

Dataset versicolor

  • "versicolor", uma espécie de íris
  • Só 3 variáveis: comprimento da sépala, largura da sépala e largura da pétala
  • Amostras são pontos em 3D
Unsupervised Learning em Python

Dataset versicolor tem dimensão intrínseca 2

  • Amostras perto de um plano 2D
  • Então dá para aproximar com 2 variáveis

Pontos de versicolor em 3D: comprimento da sépala vs largura da sépala vs largura da pétala

Unsupervised Learning em Python

PCA identifica a dimensão intrínseca

  • Gráficos de dispersão funcionam só com 2 ou 3 variáveis
  • PCA identifica a dimensão intrínseca com qualquer número de variáveis
  • Dimensão intrínseca = número de componentes do PCA com variância relevante
Unsupervised Learning em Python

PCA das amostras de versicolor

Pontos de versicolor rotacionados em 3D: PC1 vs PC2 vs PC3

Unsupervised Learning em Python

Componentes do PCA ordenados por variância (decrescente)

Gráfico de barras: número do componente do PCA vs variância

Unsupervised Learning em Python

Variância e dimensão intrínseca

  • Dimensão intrínseca = nº de componentes do PCA com variância relevante
  • No exemplo: os dois primeiros componentes
  • Logo, dimensão intrínseca = 2

Gráfico de barras: número do componente do PCA vs variância com linha vermelha entre 1 e 2

Unsupervised Learning em Python

Plotando as variâncias dos componentes do PCA

  • samples = array de amostras de versicolor
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

pca = PCA()
pca.fit(samples)
PCA()
features = range(pca.n_components_)
Unsupervised Learning em Python

Plotando as variâncias dos componentes do PCA

plt.bar(features, pca.explained_variance_)
plt.xticks(features)
plt.ylabel('variance')
plt.xlabel('PCA feature')
plt.show()

Gráfico de barras: número do componente do PCA vs variância

Unsupervised Learning em Python

Dimensão intrínseca pode ser ambígua

  • Dimensão intrínseca é uma idealização
  • ... nem sempre há uma única resposta correta!
  • Vinhos do Piemonte: dá para argumentar por 2, 3 ou mais

Gráfico de barras: número do componente do PCA vs variância no dataset de vinhos

Unsupervised Learning em Python

Vamos praticar!

Unsupervised Learning em Python

Preparing Video For Download...