NMF เรียนรู้ส่วนประกอบที่ตีความได้

Unsupervised Learning ใน Python

Benjamin Wilson

Director of Research at lateral.io

ตัวอย่าง: NMF เรียนรู้ส่วนประกอบที่ตีความได้

  • อาร์เรย์ความถี่คำของบทความ (tf-idf)
  • บทความวิทยาศาสตร์ 20,000 บทความ (แถว)
  • 800 คำ (คอลัมน์)

อาร์เรย์ความถี่คำของบทความ

Unsupervised Learning ใน 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)
Unsupervised Learning ใน Python

NMF components คือหัวข้อ

 

nmf.components_

Unsupervised Learning ใน Python

NMF components คือหัวข้อ

 

แถวหนึ่งของ nmf.components_ ที่ถูกเลือก และกราฟแท่งของแต่ละคำที่ความสูงแทนค่า tfidf

Unsupervised Learning ใน Python

NMF components คือหัวข้อ

 

กล่องแสดงคำที่มีค่าสูงสุด: species 2.95, plant 1.05, plants 0.78 เป็นต้น

Unsupervised Learning ใน Python

NMF components คือหัวข้อ

 

กล่องใหม่แสดงคำจากแถวอื่นของ nmf.components_: university 3.57, prof 1.19, college 0.88 เป็นต้น

Unsupervised Learning ใน Python

NMF components

  • สำหรับเอกสาร:
    • NMF components แทนหัวข้อ
    • NMF features รวมหัวข้อเข้าเป็นเอกสาร
  • สำหรับรูปภาพ NMF components คือส่วนประกอบของภาพ

 

กล่องที่มี 3 แถบ ≈ 0.98 คูณกล่องที่มี 1 แถบ บวก 0.91 คูณกล่องที่มีแถบต่างกัน บวก 0.95 คูณกล่องที่มีแถบต่างกัน

Unsupervised Learning ใน Python

ภาพ Grayscale

  • ภาพ "Grayscale" = ไม่มีสี มีแค่เฉดสีเทา
  • วัดความสว่างของพิกเซล
  • แทนด้วยค่าระหว่าง 0 ถึง 1 (0 คือสีดำ)
  • แปลงเป็นอาร์เรย์ 2 มิติ

สี่เหลี่ยม 2x3 พิกเซลที่มีความเข้มของขาว/ดำ/เทาต่างกัน

Unsupervised Learning ใน Python

ตัวอย่างภาพ Grayscale

  • ภาพ Grayscale ขนาด 8x8 ของดวงจันทร์ แสดงในรูปอาร์เรย์

 

ภาพดวงจันทร์แบบพิกเซลพร้อมลูกศรชี้ไปยังอาร์เรย์ตัวเลขขนาดเดียวกันที่มีค่าระหว่าง 0 ถึง 1

Unsupervised Learning ใน Python

ภาพ Grayscale ในรูปอาร์เรย์แบนราบ

  • ระบุลำดับค่าแต่ละช่อง
  • ทีละแถว
  • จากซ้ายไปขวา บนลงล่าง

กล่องพิกเซล 2x3 ชี้ไปยังอาร์เรย์ตัวเลข

Unsupervised Learning ใน Python

ภาพ Grayscale ในรูปอาร์เรย์แบนราบ

  • ระบุลำดับค่าแต่ละช่อง
  • ทีละแถว
  • จากซ้ายไปขวา บนลงล่าง

กล่องพิกเซล 2x3 ชี้ไปยังอาร์เรย์ 2x3 ชี้ไปยังอาร์เรย์ 1x6

Unsupervised Learning ใน Python

การเข้ารหัสชุดรูปภาพ

  • ชุดรูปภาพขนาดเท่ากัน
  • เข้ารหัสเป็นอาร์เรย์ 2 มิติ
  • แต่ละแถวแทนรูปภาพหนึ่งภาพ
  • แต่ละคอลัมน์แทนพิกเซลหนึ่งช่อง
  • ... นำ NMF มาใช้ได้เลย!

แถวหนึ่งของ nmf.components_ ที่แทนภาพพิกเซล 2x3

Unsupervised Learning ใน 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()
Unsupervised Learning ใน Python

มาฝึกกันเถอะ!

Unsupervised Learning ใน Python

Preparing Video For Download...