Klasteryzacja i modele klastrów

Symulacja zdarzeń dyskretnych w Pythonie

Diogo Costa (PhD, MSc)

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

Histogramy wyników modelu

  • Eksploracja wyników modelu
  • Identyfikacja punktów krytycznych i wąskich gardeł
  • Optymalizacja systemu

Histogram

  • Wykres rozkładu częstości
  • Liczba obserwacji w danym przedziale

Pakiet Matplotlib

import matplotlib.pyplot as plt

Użycie: Histogram zbioru data z 50 przedziałami

plt.hist(data, bins=50)

Histogram z 50 przedziałami przedstawiający dwa rozkłady Gaussa sugerujące dwa klastry danych.

Symulacja zdarzeń dyskretnych w Pythonie

Analiza klastrów i zastosowanie w modelach

  • Zastosowania
    • Rozpoznawanie wzorców (np. wyniki modelu)
    • Analiza obrazów

Satelitarne zdjęcie nocnych świateł Ameryki Północnej.

  • Kompresja danych
  • Grafika komputerowa
  • Uczenie maszynowe

    Ilustracja sieci neuronowej w mózgu nawiązująca do uczenia maszynowego i powstawania wzorców danych.

  • W modelach zdarzeń dyskretnych

    • Identyfikacja wzorców wyników modelu
    • Bardziej praktyczne informacje
Symulacja zdarzeń dyskretnych w Pythonie

Klasteryzacja k-means

Skupienie

  • Klasteryzacja k-means (model centroidów)
  • Podział obserwacji na k klastrów
  • Każda obserwacja należy do klastra z najbliższą średnią
  • Średnie klastrów nazywane są "centroidami klastrów"

Obserwacje i centroidy klastrów

Wykres danych z centroidami klastrów wyznaczonymi metodą k-means.

Symulacja zdarzeń dyskretnych w Pythonie

Klasteryzacja k-means z SciPy

Metoda SciPy

scipy.cluster.vq.kmeans()

Implementacja

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs to tablica numpy
  • Zwraca:
    1. Centroidy klastrów
    2. Dystorsja (średnia odległość między obserwacjami a centroidami)
Symulacja zdarzeń dyskretnych w Pythonie

Wybielanie danych: Dekorelacja i skalowanie

Przed k-means: Wybielanie danych

  1. Dekorelacja danych obs
  2. Skalowanie każdego wymiaru obs przez odchylenie standardowe

Wykres przedstawia trzy panele: dane skorelowane, dane dekorelowane oraz dane wybielone.

W SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs to tablica numpy
Symulacja zdarzeń dyskretnych w Pythonie

Przykład wybielania i k-means

  • Produkcja obejmująca wiele procesów
  • Analiza wpływu Process 1

Wykres przedstawia czas trwania procesu 1 w stosunku do całkowitego czasu dla danych surowych i wybielonych z klastrami k-means.

Import pakietu

import scipy.cluster.vq as scvq

Wybielenie wyników modelu

white_data = scvq.whiten(model_results)

Wyznaczenie 2 klastrów (niebieskie punkty)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Symulacja zdarzeń dyskretnych w Pythonie

Optymalna liczba klastrów

Techniki

  • Metoda prosta (maks. liczba klastrów)
  • Metoda łokcia
  • Współczynnik sylwetki
  • Statystyka luki

Metoda prosta

  • Wyznaczenie maksymalnej liczby klastrów
  • Wzór: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = liczba obserwacji
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Wynik w konsoli
    22
    
Symulacja zdarzeń dyskretnych w Pythonie

Optymalna liczba klastrów: Metoda sylwetki

  • Import bibliotek
from sklearn.metrics import silhouette_score

Obliczanie wyników sylwetki dla k klastrów

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)

Wynik w konsoli

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

Interpretacja wyników

  • Wartość optymalna: score = 1
  • Wartość najgorsza: score = -1
  • Nakładające się klastry: score bliskie 0
Symulacja zdarzeń dyskretnych w Pythonie

Czas na ćwiczenia!

Symulacja zdarzeń dyskretnych w Pythonie

Preparing Video For Download...