Giảm chiều với PCA

Unsupervised Learning bằng Python

Benjamin Wilson

Director of Research at lateral.io

Giảm chiều

  • Biểu diễn cùng dữ liệu với ít đặc trưng hơn
  • Quan trọng trong pipeline học máy
  • Có thể thực hiện bằng PCA
Unsupervised Learning bằng Python

Giảm chiều với PCA

  • Thành phần PCA sắp theo thứ tự giảm dần phương sai
  • Giả định thành phần phương sai thấp là "nhiễu"
  • ... và thành phần phương sai cao là hữu ích

Biểu đồ cột: số thành phần PCA vs phương sai; vạch giữa 1 và 2, mũi tên trái nhãn informative, phải nhãn noisy

Unsupervised Learning bằng Python

Giảm chiều với PCA

  • Chỉ định số đặc trưng cần giữ
  • Ví dụ: PCA(n_components=2)
  • Giữ 2 thành phần PCA đầu tiên
  • Dùng số chiều nội tại là hợp lý
Unsupervised Learning bằng Python

Giảm chiều tập iris

  • samples = mảng đo đạc iris (4 đặc trưng)
  • species = danh sách mã loài iris
from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(samples)
PCA(n_components=2)
transformed = pca.transform(samples)
print(transformed.shape)
(150, 2)
Unsupervised Learning bằng Python

Tập Iris ở 2 chiều

  • PCA giảm xuống 2 chiều
  • Giữ 2 thành phần PCA có phương sai lớn nhất
  • Thông tin chính được giữ: loài vẫn tách biệt
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

Biểu đồ phân tán PCA trên tập Iris

Unsupervised Learning bằng Python

Giảm chiều với PCA

  • Loại bỏ các thành phần PCA có phương sai thấp
  • Giả định thành phần phương sai cao là hữu ích
  • Thường đúng trong thực tế (vd: iris)
Unsupervised Learning bằng Python

Mảng tần suất từ

  • Hàng là tài liệu, cột là từ
  • Ô đo mức xuất hiện của mỗi từ trong mỗi tài liệu
  • ... đo bằng "tf-idf" (sẽ nói sau)

Mảng tần suất từ

Unsupervised Learning bằng Python

Mảng thưa và csr_matrix

  • "Thưa": đa số ô là 0
  • Có thể dùng scipy.sparse.csr_matrix thay cho mảng NumPy
  • csr_matrix chỉ lưu các ô khác 0 (tiết kiệm bộ nhớ)

Mảng tần suất từ

Unsupervised Learning bằng Python

TruncatedSVD và csr_matrix

  • PCA của scikit-learn không hỗ trợ csr_matrix
  • Dùng TruncatedSVD của scikit-learn thay thế
  • Thực hiện phép biến đổi tương tự
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Unsupervised Learning bằng Python

Ayo berlatih!

Unsupervised Learning bằng Python

Preparing Video For Download...