NMF aprende partes interpretáveis

Unsupervised Learning em Python

Benjamin Wilson

Director of Research at lateral.io

Exemplo: NMF aprende partes interpretáveis

  • Array de frequência de palavras dos artigos (tf-idf)
  • 20.000 artigos científicos (linhas)
  • 800 palavras (colunas)

Array de frequência de palavras dos artigos

Unsupervised Learning em Python

Aplicando NMF aos artigos

print(articles.shape)
(20000, 800)
from sklearn.decomposition import NMF
nmf = NMF(n_components=10)
nmf.fit(articles)
NMF(n_components=10)
print(nmf.components_.shape)
(10, 800)
Unsupervised Learning em Python

Componentes NMF são tópicos

 

nmf.components_

Unsupervised Learning em Python

Componentes NMF são tópicos

 

uma linha de nmf.components_ selecionada e um gráfico de barras para cada palavra onde a altura representa o tfidf

Unsupervised Learning em Python

Componentes NMF são tópicos

 

caixa com palavras principais e valores: species 2.95, plant 1.05, plants 0.78, etc.

Unsupervised Learning em Python

Componentes NMF são tópicos

 

novo quadro com principais palavras de uma linha de nmf.components_: university 3.57, prof 1.19, college 0.88, etc

Unsupervised Learning em Python

Componentes NMF

  • Para documentos:
    • Componentes NMF representam tópicos
    • Features NMF combinam tópicos em documentos
  • Para imagens, componentes NMF são partes da imagem

 

caixa com 3 listras aproximadamente igual a 0,98 vezes caixa com uma listra mais 0,91 vezes caixa com outra listra mais 0,95 vezes caixa com outra listra

Unsupervised Learning em Python

Imagens em tons de cinza

  • Imagem “em tons de cinza” = sem cores, só tons de cinza
  • Medir o brilho dos pixels
  • Representar com valor entre 0 e 1 (0 é preto)
  • Converter em array 2D

retângulo 2 por 3 de pixels com diferentes tons de branco/preto/cinza

Unsupervised Learning em Python

Exemplo de imagem em tons de cinza

  • Uma imagem 8x8 da lua em tons de cinza, escrita como array

 

ilustração pixelada da lua com seta apontando para um array de números com a mesma dimensão contendo valores entre 0 e 1

Unsupervised Learning em Python

Imagens em cinza como arrays “flat”

  • Enumerar as entradas
  • Linha a linha
  • Da esquerda para a direita, de cima para baixo

caixa de 2 por 3 pixels apontando para array com números

Unsupervised Learning em Python

Imagens em cinza como arrays “flat”

  • Enumerar as entradas
  • Linha a linha
  • Da esquerda para a direita, de cima para baixo

caixa de 2 por 3 pixels apontando para um array 2 por 3 com números apontando para um array 1 por 6 de números

Unsupervised Learning em Python

Codificando uma coleção de imagens

  • Coleção de imagens do mesmo tamanho
  • Codificar como array 2D
  • Cada linha corresponde a uma imagem
  • Cada coluna corresponde a um pixel
  • ... dá pra aplicar NMF!

Uma linha de nmf.components_ que representa a imagem 2x3 pixels

Unsupervised Learning em Python

Visualizando amostras

print(sample)
[ 0.   1.   0.5  1.   0.   1. ]
bitmap = sample.reshape((2, 3))
print(bitmap)
[[ 0.   1.   0.5]
 [ 1.   0.   1. ]]
from matplotlib import pyplot as plt
plt.imshow(bitmap, cmap='gray', interpolation='nearest')
plt.show()
Unsupervised Learning em Python

Vamos praticar!

Unsupervised Learning em Python

Preparing Video For Download...