Factorización de matrices no negativas (NMF)

Aprendizaje no supervisado en Python

Benjamin Wilson

Director of Research at lateral.io

Factorización de matrices no negativas

  • NMF = «non-negative matrix factorization»
  • Técnica de reducción de dimensión
  • Los modelos NMF son interpretables (a diferencia de PCA)
  • Fácil de interpretar = fácil de explicar
  • Pero todas las características deben ser no negativas (>= 0)
Aprendizaje no supervisado en Python

Partes interpretables

  • NMF expresa documentos como combinaciones de temas

 

Caja de texto: DataCamp es el líder en educación en ciencia de datos con formación basada en habilidades, innovación técnica pionera... signo aproximadamente igual 0.6 por caja con palabras program, r, python, function y method, más 0.5 por caja con palabras data, analysis, cluster, statistics, mean más 0.7 por caja con palabras teaching, learn, lesson, lessons y course

Aprendizaje no supervisado en Python

Partes interpretables

  • NMF expresa imágenes como combinaciones de patrones

 

caja con 3 franjas aproximadamente igual a 0.98 por caja con una franja más 0.91 por caja con otra franja más 0.95 por caja con otra franja

Aprendizaje no supervisado en Python

Usar NMF de scikit-learn

  • Sigue el patrón fit() / transform()
  • Debes indicar el nº de componentes, p. ej. NMF(n_components=2)
  • Funciona con arrays de NumPy y con csr_matrix
Aprendizaje no supervisado en Python

Ejemplo de matriz de frecuencias

  • Matriz de frecuencias de palabras, 4 palabras, muchos documentos
  • Medir presencia de palabras con «tf-idf»
    • «tf» = frecuencia de la palabra en el documento
    • «idf» reduce la influencia de palabras frecuentes

Matriz de frecuencias de palabras

Aprendizaje no supervisado en Python

Ejemplo de uso de NMF

  • samples es la matriz de frecuencias de palabras
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Aprendizaje no supervisado en Python

Componentes de NMF

  • NMF tiene componentes
  • ... igual que PCA tiene componentes principales
  • Dimensión de los componentes = dimensión de las muestras
  • Entradas no negativas
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Aprendizaje no supervisado en Python

Características de NMF

  • Las características NMF son no negativas
  • Sirven para reconstruir las muestras
  • ... combinando valores de características con los componentes
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Aprendizaje no supervisado en Python

Reconstrucción de una muestra

print(samples[i,:])
[ 0.12  0.18  0.32  0.14]
print(nmf_features[i,:])
[ 0.15  0.12]

Componentes de NMF multiplicados por el valor de la característica y sumados

Aprendizaje no supervisado en Python

Reconstrucción de muestras

  • Multiplica componentes por valores de características y suma
  • También puede verse como un producto de matrices
  • Esto es la «Factorización de Matrices» en «NMF»
Aprendizaje no supervisado en Python

NMF solo para datos no negativos

  • Frecuencias de palabras por documento
  • Imágenes codificadas como matrices
  • Espectrogramas de audio
  • Historiales de compra en e-commerce
  • ... y más
Aprendizaje no supervisado en Python

¡Vamos a practicar!

Aprendizaje no supervisado en Python

Preparing Video For Download...