Phân rã ma trận không âm (NMF)

Unsupervised Learning bằng Python

Benjamin Wilson

Director of Research at lateral.io

Phân rã ma trận không âm

  • NMF = "non-negative matrix factorization" (phân rã ma trận không âm)
  • Kỹ thuật giảm chiều
  • Mô hình NMF dễ diễn giải (khác PCA)
  • Dễ diễn giải nghĩa là dễ giải thích!
  • Tuy nhiên, mọi đặc trưng mẫu phải không âm (>= 0)
Unsupervised Learning bằng Python

Các phần dễ diễn giải

  • NMF biểu diễn tài liệu như tổ hợp các chủ đề (hoặc "themes")

 

Hộp văn bản: DataCamp là đơn vị dẫn đầu về Giáo dục Khoa học Dữ liệu với đào tạo theo kỹ năng, đổi mới kỹ thuật... xấp xỉ bằng 0.6 lần hộp có các từ program, r, python, function, method, cộng 0.5 lần hộp có các từ data, analysis, cluster, statistics, mean cộng 0.7 lần hộp có các từ teaching, learn, lesson, lessons, course

Unsupervised Learning bằng Python

Các phần dễ diễn giải

  • NMF biểu diễn ảnh như tổ hợp các mẫu

 

hộp có 3 sọc xấp xỉ 0.98 lần hộp có một sọc cộng 0.91 lần hộp có một sọc khác cộng 0.95 lần hộp có một sọc khác

Unsupervised Learning bằng Python

Dùng NMF trong scikit-learn

  • Theo mẫu fit() / transform()
  • Phải chỉ định số thành phần, ví dụ NMF(n_components=2)
  • Hoạt động với mảng NumPy và csr_matrix
Unsupervised Learning bằng Python

Ví dụ mảng tần suất từ

  • Mảng tần suất từ, 4 từ, nhiều tài liệu
  • Đo mức độ xuất hiện từ trong mỗi tài liệu bằng "tf-idf"
    • "tf" = tần suất từ trong tài liệu
    • "idf" giảm ảnh hưởng của từ xuất hiện thường xuyên

Mảng tần suất từ

Unsupervised Learning bằng Python

Ví dụ dùng NMF

  • samples là mảng tần suất từ
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Unsupervised Learning bằng Python

Các thành phần NMF

  • NMF có các thành phần
  • ... giống như PCA có các thành phần chính
  • Kích thước thành phần = kích thước mẫu
  • Các giá trị không âm
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Unsupervised Learning bằng Python

Đặc trưng NMF

  • Giá trị đặc trưng NMF không âm
  • Dùng để tái tạo mẫu
  • ... kết hợp giá trị đặc trưng với các thành phần
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Unsupervised Learning bằng Python

Tái tạo một mẫu

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

Các thành phần NMF nhân với giá trị đặc trưng rồi cộng lại

Unsupervised Learning bằng Python

Tái tạo mẫu

  • Nhân các thành phần với giá trị đặc trưng, rồi cộng lại
  • Cũng có thể biểu diễn như tích ma trận
  • Đây là "Phân rã Ma trận" trong "NMF"
Unsupervised Learning bằng Python

NMF chỉ áp dụng cho dữ liệu không âm

  • Tần suất từ trong mỗi tài liệu
  • Ảnh mã hóa thành mảng
  • Phổ âm thanh (spectrogram)
  • Lịch sử mua hàng trên trang thương mại điện tử
  • ... và nhiều nữa!
Unsupervised Learning bằng Python

Ayo berlatih!

Unsupervised Learning bằng Python

Preparing Video For Download...