Phân cụm và mô hình cụm

Mô phỏng Sự kiện Rời rạc bằng Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Histogram của kết quả mô hình

  • Khám phá kết quả mô hình
  • Xác định điểm bùng phát và nút thắt
  • Tối ưu hệ thống

Histogram

  • Biểu đồ tần suất
  • Cho số quan sát trong mỗi khoảng

Gói Matplotlib

import matplotlib.pyplot as plt

Dùng: Tạo histogram cho tập data với 50 bins

plt.hist(data, bins=50)

Histogram với 50 bins hiển thị hai phân phối Gaussian, gợi ý hai cụm dữ liệu.

Mô phỏng Sự kiện Rời rạc bằng Python

Phân tích cụm và ứng dụng cho mô hình

  • Ứng dụng
    • Nhận dạng mẫu (ví dụ: kết quả mô hình)
    • Phân tích ảnh

Ảnh vệ tinh ánh sáng ban đêm ở Bắc Mỹ.

  • Nén dữ liệu
  • Đồ họa máy tính
  • Máy học

    Hình minh họa mạng nơ-ron trong não, gợi ý kỹ thuật máy học và sự xuất hiện của mẫu và cụm dữ liệu.

  • Trong mô hình sự kiện rời rạc

    • Xác định mẫu đầu ra mô hình
    • Thông tin hữu ích hơn
Mô phỏng Sự kiện Rời rạc bằng Python

Phân cụm k-means

Trọng tâm

  • Phân cụm k-means (mô hình tâm cụm)
  • Chia quan sát vào k cụm
  • Mỗi quan sát thuộc cụm có trung bình gần nhất
  • Trung bình cụm gọi là "tâm cụm"

Quan sát và tâm cụm

Biểu đồ dữ liệu với tâm cụm tính bằng k-means.

Mô phỏng Sự kiện Rời rạc bằng Python

Phân cụm k-means với SciPy

Phương thức SciPy

scipy.cluster.vq.kmeans()

Triển khai

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs là mảng numpy
  • Trả về:
    1. Tâm cụm
    2. Độ méo (khoảng cách trung bình giữa quan sát và tâm cụm sinh ra)
Mô phỏng Sự kiện Rời rạc bằng Python

Làm trắng dữ liệu: Khử tương quan và chuẩn tỉ lệ

Trước khi chạy k-means: Làm trắng dữ liệu

  1. Khử tương quan dữ liệu obs
  2. Chuẩn tỉ lệ từng chiều của obs theo độ lệch chuẩn

Biểu đồ gồm ba khung: dữ liệu tương quan, dữ liệu đã khử tương quan, và dữ liệu đã làm trắng.

Trong SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs là mảng numpy
Mô phỏng Sự kiện Rời rạc bằng Python

Ví dụ: làm trắng và k-means

  • Hoạt động sản xuất gồm nhiều quy trình
  • Xem xét ảnh hưởng của Process 1

Biểu đồ thời lượng quy trình 1 so với tổng thời lượng cho dữ liệu thô và dữ liệu đã làm trắng, với cụm k-means.

Nhập gói

import scipy.cluster.vq as scvq

Làm trắng kết quả mô hình

white_data = scvq.whiten(model_results)

Tìm 2 cụm (chấm xanh)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Mô phỏng Sự kiện Rời rạc bằng Python

Số cụm tối ưu

Kỹ thuật

  • Cách đơn giản (số cụm tối đa)
  • Phương pháp khuỷu tay
  • Hệ số điểm silhouette
  • Thống kê gap

Cách đơn giản

  • Xác định số cụm tối đa
  • Cách dùng: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = số quan sát
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Kết quả console
    22
    
Mô phỏng Sự kiện Rời rạc bằng Python

Số cụm tối ưu: Phương pháp silhouette-score

  • Nhập thư viện
from sklearn.metrics import silhouette_score

Tính điểm silhouette cho số cụm k

for k in range(2, 6):
  model = KMeans(n_clusters=k)
  model.fit(model_results)
  pred = model.predict(model_results)
  score = silhouette_score(model_results, pred)

Kết quả console

Silhouette Score for k = 2: 0.591
Silhouette Score for k = 3: 0.472
Silhouette Score for k = 4: 0.381
Silhouette Score for k = 5: 0.364
Silhouette Score for k = 6: 0.373

Diễn giải

  • Giá trị tốt nhất: score = 1
  • Tệ nhất: score = -1
  • Cụm chồng lấp: score gần 0
Mô phỏng Sự kiện Rời rạc bằng Python

Ayo berlatih!

Mô phỏng Sự kiện Rời rạc bằng Python

Preparing Video For Download...