NMF는 해석 가능한 부분을 학습합니다

Python으로 배우는 Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

예시: NMF는 해석 가능한 부분을 학습합니다

  • 단어 빈도 배열 기사(tf-idf)
  • 20,000개 과학 기사(행)
  • 800개 단어(열)

기사 단어 빈도 배열

Python으로 배우는 Unsupervised Learning

기사에 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으로 배우는 Unsupervised Learning

NMF 구성요소는 토픽입니다

 

nmf.components_

Python으로 배우는 Unsupervised Learning

NMF 구성요소는 토픽입니다

 

nmf.components_의 한 행을 선택하고 각 단어에 대해 막대 그래프(높이는 tfidf)

Python으로 배우는 Unsupervised Learning

NMF 구성요소는 토픽입니다

 

상자에 상위 단어와 값: species 2.95, plant 1.05, plants 0.78 등

Python으로 배우는 Unsupervised Learning

NMF 구성요소는 토픽입니다

 

nmf.components_의 서로 다른 행에서 상위 단어가 들어 있는 새 상자: university 3.57, prof 1.19, college 0.88 등

Python으로 배우는 Unsupervised Learning

NMF 구성요소

  • 문서의 경우:
    • NMF 구성요소는 토픽을 나타냅니다
    • NMF 특성은 토픽을 결합해 문서를 만듭니다
  • 이미지의 경우, NMF 구성요소는 이미지의 부분입니다

 

세 줄 무늬 상자 ≈ 0.98×한 줄 무늬 상자 + 0.91×다른 줄 무늬 상자 + 0.95×또 다른 줄 무늬 상자

Python으로 배우는 Unsupervised Learning

그레이스케일 이미지

  • "그레이스케일" 이미지 = 색상 없음, 회색 음영만
  • 픽셀 밝기를 측정
  • 0~1 값으로 표현(0은 검정)
  • 2D 배열로 변환

흰색/검정/회색 정도가 다른 2×3 픽셀 사각형

Python으로 배우는 Unsupervised Learning

그레이스케일 이미지 예시

  • 달의 8×8 그레이스케일 이미지(배열로 표기)

 

달의 픽셀화된 그림과, 0~1 사이 숫자를 담은 같은 크기의 배열을 가리키는 화살표

Python으로 배우는 Unsupervised Learning

그레이스케일 이미지를 평평한 배열로

  • 항목을 나열
  • 행 단위로
  • 좌→우, 상→하 순서

2×3 픽셀 상자가 숫자 배열을 가리킴

Python으로 배우는 Unsupervised Learning

그레이스케일 이미지를 평평한 배열로

  • 항목을 나열
  • 행 단위로
  • 좌→우, 상→하 순서

2×3 픽셀 상자 → 2×3 숫자 배열 → 1×6 숫자 배열

Python으로 배우는 Unsupervised Learning

이미지 모음 인코딩

  • 같은 크기의 이미지 모음
  • 2D 배열로 인코딩
  • 각 행은 이미지
  • 각 열은 픽셀
  • ... NMF 적용 가능!

2×3 픽셀 이미지를 나타내는 nmf.components_의 한 행

Python으로 배우는 Unsupervised Learning

샘플 시각화

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으로 배우는 Unsupervised Learning

Ayo berlatih!

Python으로 배우는 Unsupervised Learning

Preparing Video For Download...