Học không giám sát

Unsupervised Learning bằng Python

Benjamin Wilson

Director of Research at lateral.io

Học không giám sát

  • Học không giám sát tìm mẫu trong dữ liệu
  • Ví dụ: phân cụm khách hàng theo hành vi mua
  • Nén dữ liệu theo mẫu mua (giảm chiều)
Unsupervised Learning bằng Python

Giám sát vs. không giám sát

  • Học giám sát tìm mẫu để dự đoán
  • Ví dụ: phân loại khối u là lành tính hay ác tính (nhãn)
  • Học không giám sát tìm mẫu trong dữ liệu
  • ... nhưng không có nhiệm vụ dự đoán cụ thể
Unsupervised Learning bằng Python

Tập dữ liệu Iris

  • Đo đạc trên nhiều cây iris
  • Ba loài iris:
    • setosa
    • versicolor
    • virginica
  • Chiều dài cánh hoa, rộng cánh hoa, dài đài hoa, rộng đài hoa (các đặc trưng)

Iris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Unsupervised Learning bằng Python

Mảng, đặc trưng & mẫu

  • Mảng NumPy 2D
  • Cột là các phép đo (các đặc trưng)
  • Hàng là các cây iris (các mẫu)
Unsupervised Learning bằng Python

Dữ liệu Iris có 4 chiều

  • Mẫu Iris là các điểm trong không gian 4 chiều
  • Chiều = số lượng đặc trưng
  • Quá nhiều chiều để trực quan hóa!
  • ... nhưng học không giám sát vẫn cho thấy hiểu biết
Unsupervised Learning bằng Python

Phân cụm k-means

  • Tìm các cụm của mẫu
  • Phải chỉ định số cụm
  • Có trong sklearn ("scikit-learn")
Unsupervised Learning bằng Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Unsupervised Learning bằng Python

Nhãn cụm cho mẫu mới

  • Mẫu mới có thể gán vào cụm hiện có
  • k-means lưu trung bình của mỗi cụm ("tâm cụm")
  • Tìm tâm gần nhất cho từng mẫu mới
Unsupervised Learning bằng Python

Nhãn cụm cho mẫu mới

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Unsupervised Learning bằng Python

Biểu đồ phân tán

  • Biểu đồ phân tán: chiều dài đài hoa vs. chiều dài cánh hoa
  • Mỗi điểm là một mẫu iris
  • Tô màu theo nhãn cụm
  • PyPlot (matplotlib.pyplot)

Biểu đồ phân tán

Unsupervised Learning bằng Python

Biểu đồ phân tán

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Unsupervised Learning bằng Python

Ayo berlatih!

Unsupervised Learning bằng Python

Preparing Video For Download...