t-SNE para mapas 2D

Unsupervised Learning em Python

Benjamin Wilson

Director of Research at lateral.io

t-SNE para mapas 2D

  • t-SNE = "t-distributed stochastic neighbor embedding"
  • Projeta amostras em 2D (ou 3D)
  • Mantém, aproximadamente, a vizinhança das amostras
  • Ótimo pra inspecionar datasets
Unsupervised Learning em Python

t-SNE no dataset Iris

  • Iris tem 4 medidas, então as amostras são 4D
  • t-SNE projeta as amostras em 2D
  • t-SNE não sabia que havia espécies diferentes
  • ... e ainda assim separou bem as espécies

gráfico de dispersão do t-SNE aplicado ao Iris

Unsupervised Learning em Python

Interpretando dispersões do t-SNE

  • "versicolor" e "virginica" são mais difíceis de distinguir
  • Consistente com o gráfico de inércia do k-means: dá pra defender 2 ou 3 clusters

gráfico de dispersão do t-SNE aplicado ao Iris

Unsupervised Learning em Python

t-SNE no sklearn

  • Array NumPy 2D samples
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 [ 4.9  2.4  3.3  1. ]
 [ 6.3  2.8  5.1  1.5]
 ...
 [ 4.9  3.1  1.5  0.1]]
  • Lista species com rótulos das espécies como números (0, 1 ou 2)
print(species)
[0, 0, 1, 2, ..., 0]
Unsupervised Learning em Python

t-SNE no sklearn

import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
model = TSNE(learning_rate=100)

transformed = model.fit_transform(samples) xs = transformed[:,0] ys = transformed[:,1] plt.scatter(xs, ys, c=species) plt.show()

gráfico de dispersão do t-SNE aplicado ao Iris

Unsupervised Learning em Python

t-SNE só tem fit_transform()

  • Tem o método fit_transform()
  • Ajusta o modelo e transforma os dados ao mesmo tempo
  • Não tem fit() nem transform() separados
  • Não dá pra estender o mapa com novas amostras
  • Precisa recomeçar sempre!
Unsupervised Learning em Python

Taxa de aprendizado no t-SNE

  • Escolhe a taxa de aprendizado pro dataset
  • Se errar: pontos se agrupam demais
  • Testa valores entre 50 e 200
Unsupervised Learning em Python

Diferente toda vez

  • Os recursos do t-SNE mudam a cada execução
  • Vinhos do Piemonte: 3 execuções, 3 dispersões diferentes!
  • ... porém: as variedades (=cores) mantêm posições relativas semelhantes

 

3 gráficos de dispersão do t-SNE aplicado 3 vezes ao dataset de vinhos

Unsupervised Learning em Python

Vamos praticar!

Unsupervised Learning em Python

Preparing Video For Download...