NMF aprende partes interpretables

Aprendizaje no supervisado en Python

Benjamin Wilson

Director of Research at lateral.io

Ejemplo: NMF aprende partes interpretables

  • Array de frecuencias de palabras en artículos (tf-idf)
  • 20.000 artículos científicos (filas)
  • 800 palabras (columnas)

Array de frecuencia de palabras en artículos

Aprendizaje no supervisado en Python

Aplicar NMF a los artículos

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)
Aprendizaje no supervisado en Python

Los componentes de NMF son temas

 

nmf.components_

Aprendizaje no supervisado en Python

Los componentes de NMF son temas

 

una fila de nmf.components_ seleccionada y un gráfico de barras por palabra donde la altura representa el tf‑idf

Aprendizaje no supervisado en Python

Los componentes de NMF son temas

 

recuadro con palabras principales y valores: species 2.95, plant 1.05, plants 0.78, etc.

Aprendizaje no supervisado en Python

Los componentes de NMF son temas

 

nuevo recuadro con palabras principales de una fila de nmf.components_: university 3.57, prof 1.19, college 0.88, etc.

Aprendizaje no supervisado en Python

Componentes de NMF

  • Para documentos:
    • Los componentes de NMF representan temas
    • Las features de NMF combinan temas en documentos
  • En imágenes, los componentes son partes de la imagen

 

caja con 3 franjas ≈ 0.98 × caja con una franja + 0.91 × caja con otra franja + 0.95 × caja con otra franja

Aprendizaje no supervisado en Python

Imágenes en escala de grises

  • Imagen en «escala de grises» = sin colores, solo grises
  • Medimos el brillo de cada píxel
  • Valor entre 0 y 1 (0 es negro)
  • Convertimos a un array 2D

rectángulo 2×3 de píxeles con distintos tonos de blanco/negro/gris

Aprendizaje no supervisado en Python

Ejemplo de imagen en escala de grises

  • Una imagen 8×8 de la luna en escala de grises, escrita como array

 

ilustración pixelada de la luna con flecha hacia un array de números del mismo tamaño con valores entre 0 y 1

Aprendizaje no supervisado en Python

Imágenes en escala de grises como arrays planos

  • Enumerar las entradas
  • Fila por fila
  • De izquierda a derecha y de arriba abajo

caja de 2×3 píxeles apuntando a un array con números

Aprendizaje no supervisado en Python

Imágenes en escala de grises como arrays planos

  • Enumerar las entradas
  • Fila por fila
  • De izquierda a derecha y de arriba abajo

caja de 2×3 píxeles apuntando a un array 2×3 con números y luego a un array 1×6

Aprendizaje no supervisado en Python

Codificar una colección de imágenes

  • Colección de imágenes del mismo tamaño
  • Codifica como array 2D
  • Cada fila es una imagen
  • Cada columna es un píxel
  • ... ¡se puede aplicar NMF!

Una fila de nmf.components_ que representa la imagen de 2×3 píxeles

Aprendizaje no supervisado en Python

Visualizar muestras

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()
Aprendizaje no supervisado en Python

¡Vamos a practicar!

Aprendizaje no supervisado en Python

Preparing Video For Download...