Pengelompokan dan model klaster

Simulasi Peristiwa Diskret dengan Python

Diogo Costa (PhD, MSc)

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

Histogram hasil model

  • Jelajahi hasil model
  • Identifikasi tipping point dan bottleneck
  • Optimalkan sistem

Histogram

  • Grafik distribusi frekuensi
  • Menunjukkan jumlah observasi per interval

Paket Matplotlib

import matplotlib.pyplot as plt

Gunakan: Buat histogram untuk dataset data dengan 50 bin

plt.hist(data, bins=50)

Histogram dengan 50 bin yang menampilkan dua distribusi Gaussian, menyiratkan dua klaster data.

Simulasi Peristiwa Diskret dengan Python

Analisis klaster dan penerapannya pada model

  • Aplikasi
    • Pengenalan pola (mis., hasil model)
    • Analisis citra

Citra satelit lampu malam di Amerika Utara.

  • Kompresi data
  • Grafik komputer
  • Machine learning

    Gambar ilustratif jaringan neuron di dalam otak yang menyinggung teknik machine learning dan kemunculan pola serta pengelompokan data.

  • Dalam model kejadian-diskrit

    • Identifikasi pola keluaran model
    • Informasi lebih dapat ditindaklanjuti
Simulasi Peristiwa Diskret dengan Python

k-means clustering

Fokus kita

  • k-means clustering (model centroid)
  • Partisi observasi menjadi k klaster
  • Tiap observasi masuk klaster dengan rata-rata terdekat
  • Rata-rata klaster disebut "centroid klaster"

Observasi dan centroid klaster

Grafik yang menampilkan data dengan centroid klaster dihitung menggunakan k-means.

Simulasi Peristiwa Diskret dengan Python

k-means dengan SciPy

Metode SciPy

scipy.cluster.vq.kmeans()

Implementasi

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs adalah array numpy
  • Mengembalikan:
    1. Centroid klaster
    2. Distorsi (jarak rata-rata antara observasi dan centroid yang dihasilkan)
Simulasi Peristiwa Diskret dengan Python

Whitening data: Dekorelasi dan penskalaan ulang

Sebelum menjalankan k-means: Whitening data

  1. Dekorelasikan data obs
  2. Skala ulang tiap dimensi obs dengan simpangan baku

Plot menampilkan tiga panel: pertama data berkorelasi, kedua data terdekorlasi, ketiga data setelah whitening.

Di SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs adalah array numpy
Simulasi Peristiwa Diskret dengan Python

Contoh whitening dan k-means

  • Aktivitas manufaktur dengan beberapa proses
  • Mari telaah dampak Process 1

Plot yang menampilkan durasi proses 1 terhadap total durasi untuk data mentah dan data setelah whitening, dengan klaster dari k-means.

Impor paket

import scipy.cluster.vq as scvq

Whitening hasil model

white_data = scvq.whiten(model_results)

Cari 2 klaster (titik biru)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Simulasi Peristiwa Diskret dengan Python

Jumlah klaster optimal

Teknik

  • Metode sederhana (jumlah klaster maksimum)
  • Metode siku (Elbow)
  • Koefisien silhouette score
  • Statistik gap

Metode sederhana

  • Tentukan jumlah klaster maksimum
  • Cara pakai: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = jumlah observasi
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Keluaran konsol
    22
    
Simulasi Peristiwa Diskret dengan Python

Jumlah klaster optimal: metode silhouette score

  • Impor pustaka
from sklearn.metrics import silhouette_score

Hitung silhouette score untuk jumlah klaster 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)

Keluaran konsol

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

Interpretasi hasil

  • Nilai terbaik: score = 1
  • Nilai terburuk: score = -1
  • Klaster tumpang tindih: score mendekati 0
Simulasi Peristiwa Diskret dengan Python

Ayo berlatih!

Simulasi Peristiwa Diskret dengan Python

Preparing Video For Download...