NMF выделяет интерпретируемые части

Обучение без учителя на Python

Benjamin Wilson

Director of Research at lateral.io

Пример: NMF выделяет интерпретируемые части

  • Массив частот слов в статьях (tf-idf)
  • 20 000 научных статей (строки)
  • 800 слов (столбцы)

Массив частот слов в статьях

Обучение без учителя на Python

Применение NMF к статьям

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)
Обучение без учителя на Python

Компоненты NMF — это темы

 

nmf.components_

Обучение без учителя на Python

Компоненты NMF — это темы

 

строка nmf.components_ и столбчатая диаграмма для каждого слова, где высота отражает tf-idf

Обучение без учителя на Python

Компоненты NMF — это темы

 

блок с ведущими словами и значениями: species 2.95, plant 1.05, plants 0.78 и др.

Обучение без учителя на Python

Компоненты NMF — это темы

 

новый блок с ведущими словами из другой строки nmf.components_: university 3.57, prof 1.19, college 0.88 и др.

Обучение без учителя на Python

Компоненты NMF

  • Для документов:
    • Компоненты NMF представляют темы
    • Признаки NMF объединяют темы в документы
  • Для изображений компоненты NMF — это части изображений

 

блок с 3 полосами ≈ 0.98 × блок с одной полосой + 0.91 × блок с другой полосой + 0.95 × блок с другой полосой

Обучение без учителя на Python

Изображения в оттенках серого

  • «Оттенки серого» — без цвета, только градации серого
  • Измеряем яркость пикселей
  • Представляем значением от 0 до 1 (0 — чёрный)
  • Преобразуем в двумерный массив

прямоугольник 2×3 из пикселей с разными оттенками белого/чёрного/серого

Обучение без учителя на Python

Пример изображения в оттенках серого

  • Изображение Луны 8×8 пикселей в оттенках серого, представленное в виде массива

 

пикселизированное изображение Луны со стрелкой, указывающей на массив чисел тех же размеров со значениями от 0 до 1

Обучение без учителя на Python

Изображения в оттенках серого как плоские массивы

  • Перечисляем элементы
  • Построчно
  • Слева направо, сверху вниз

прямоугольник 2×3 пикселя со стрелкой, указывающей на массив чисел

Обучение без учителя на Python

Изображения в оттенках серого как плоские массивы

  • Перечисляем элементы
  • Построчно
  • Слева направо, сверху вниз

прямоугольник 2×3 пикселя со стрелкой, указывающей на массив 2×3, который указывает на одномерный массив из 6 чисел

Обучение без учителя на Python

Кодирование набора изображений

  • Набор изображений одинакового размера
  • Кодируем как двумерный массив
  • Каждая строка соответствует изображению
  • Каждый столбец соответствует пикселю
  • ... можно применить NMF!

Одна строка nmf.components_, представляющая изображение 2×3 пикселя

Обучение без учителя на Python

Визуализация образцов

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()
Обучение без учителя на Python

Давайте потренируемся!

Обучение без учителя на Python

Preparing Video For Download...