Shlukování a shlukové modely

Diskrétní simulace událostí v Pythonu

Diogo Costa (PhD, MSc)

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

Histogramy výsledků modelu

  • Prozkoumání výsledků modelu
  • Identifikace zlomových bodů a úzkých míst
  • Optimalizace systému

Histogram

  • Graf zobrazující frekvenční rozdělení
  • Udává počet pozorování v daném intervalu

Balíček Matplotlib

import matplotlib.pyplot as plt

Použití: Vytvoření histogramu datové sady data s 50 intervaly

plt.hist(data, bins=50)

Histogram s 50 intervaly zobrazující dvě Gaussova rozdělení, která naznačují dva shluky dat.

Diskrétní simulace událostí v Pythonu

Shluková analýza a její využití v modelech

  • Aplikace
    • Rozpoznávání vzorů (např. výsledky modelu)
    • Analýza obrazu

Satelitní snímek nočního osvětlení Severní Ameriky.

  • Komprese dat
  • Počítačová grafika
  • Strojové učení

    Ilustrace neuronové sítě v mozku naznačuje využití v strojovém učení a vznik datových vzorů a shlukování.

  • V modelech diskrétních událostí

    • Identifikace vzorů ve výstupech modelu
    • Lépe využitelné informace
Diskrétní simulace událostí v Pythonu

Shlukování k-means

Náš záměr

  • Shlukování k-means (centroidový model)
  • Rozdělení pozorování do k shluků
  • Každé pozorování patří do shluku s nejbližším průměrem
  • Průměr shluků se nazývá „centroidy shluků"

Pozorování a centroidy shluků

Graf zobrazující data s centroidy shluků vypočtenými metodou k-means.

Diskrétní simulace událostí v Pythonu

Shlukování k-means pomocí SciPy

Metoda SciPy

scipy.cluster.vq.kmeans()

Implementace

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs je numpy pole
  • Vrací:
    1. Centroidy shluků
    2. Distorze (průměrná vzdálenost mezi pozorováními a centroidy)
Diskrétní simulace událostí v Pythonu

Bělení dat: Dekorelace a přeškálování

Před spuštěním k-means: Bělení dat

  1. Dekorelace dat obs
  2. Přeškálování každé dimenze obs směrodatnou odchylkou

Graf zobrazuje tři panely: korelovaná data, dekorelovaná data a bělená data.

V SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs je numpy pole
Diskrétní simulace událostí v Pythonu

Příklad bělení a k-means

  • Výrobní proces zahrnující více operací
  • Zkoumáme vliv Process 1

Graf zobrazuje dobu trvání procesu 1 vůči celkové době pro surová a bělená data s shluky vypočtenými metodou k-means.

Import balíčku

import scipy.cluster.vq as scvq

Bělení výsledků modelu

white_data = scvq.whiten(model_results)

Nalezení 2 shluků (modré body)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Diskrétní simulace událostí v Pythonu

Optimální počet shluků

Techniky

  • Jednoduchá metoda (max. počet shluků)
  • Metoda lokte
  • Koeficient silhouette skóre
  • Statistika mezery

Jednoduchá metoda

  • Určení maximálního počtu shluků
  • Použití: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = počet pozorování
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Výstup konzole
    22
    
Diskrétní simulace událostí v Pythonu

Optimální počet shluků: Metoda silhouette skóre

  • Import knihoven
from sklearn.metrics import silhouette_score

Výpočet silhouette skóre pro k počet shluků

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)

Výstup konzole

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

Interpretace výsledků

  • Nejlepší hodnota: score = 1
  • Nejhorší hodnota: score = -1
  • Překrývající se shluky: score blízko 0
Diskrétní simulace událostí v Pythonu

Pojďme cvičit!

Diskrétní simulace událostí v Pythonu

Preparing Video For Download...