Clustering și modele de clustere

Simulare de evenimente discrete în Python

Diogo Costa (PhD, MSc)

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

Histograme ale rezultatelor modelului

  • Explorarea rezultatelor modelului
  • Identificarea punctelor critice și a blocajelor
  • Optimizarea sistemului

Histogramă

  • Grafic al distribuțiilor de frecvență
  • Indică numărul de observații dintr-un interval

Pachetul Matplotlib

import matplotlib.pyplot as plt

Utilizare: Crearea unei histograme a setului data cu 50 de intervale

plt.hist(data, bins=50)

Histogramă cu 50 de intervale afișând două distribuții gaussiene, sugerând două clustere de date.

Simulare de evenimente discrete în Python

Analiza clusterelor și aplicații la modele

  • Aplicații
    • Recunoașterea tiparelor (ex.: rezultatele modelului)
    • Analiza imaginilor

Imagine satelitară cu luminile nocturne din America de Nord.

  • Compresia datelor
  • Grafică pe calculator
  • Învățare automată

    O imagine ilustrativă a unei rețele neuronale în creier, sugerând tehnici de învățare automată și apariția tiparelor în date.

  • În modele cu evenimente discrete

    • Identificarea tiparelor din ieșirile modelului
    • Informații mai acționabile
Simulare de evenimente discrete în Python

Clustering k-means

Focusul nostru

  • Clustering k-means (model centroid)
  • Partiționarea observațiilor în k clustere
  • Fiecare observație aparține clusterului cu media cea mai apropiată
  • Media clusterelor se numește „Centroizi de cluster"

Observații și centroizi de cluster

Grafic cu date și centroizi de cluster calculați prin k-means.

Simulare de evenimente discrete în Python

Clustering k-means cu SciPy

Metoda SciPy

scipy.cluster.vq.kmeans()

Implementare

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs este un array numpy
  • Returnează:
    1. Centroizii clusterelor
    2. Distorsiunea (distanța medie dintre observații și centroizii generați)
Simulare de evenimente discrete în Python

Albirea datelor: Decorelare și rescalare

Înaintea k-means: Albirea datelor

  1. Decorelarea datelor obs
  2. Rescalarea fiecărei dimensiuni din obs prin deviația standard

Graficul prezintă trei panouri: primul arată datele corelate, al doilea datele decorelate, iar al treilea datele albite.

În SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs este un array numpy
Simulare de evenimente discrete în Python

Exemplu de albire și k-means

  • Activitate de producție cu mai multe procese
  • Examinăm impactul Process 1

Grafic cu durata procesului 1 față de durata totală, pentru datele brute și datele albite, cu clustere calculate prin k-means.

Importarea pachetului

import scipy.cluster.vq as scvq

Albirea rezultatelor modelului

white_data = scvq.whiten(model_results)

Găsirea a 2 clustere (puncte albastre)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Simulare de evenimente discrete în Python

Numărul optim de clustere

Tehnici

  • Metoda simplă (număr maxim de clustere)
  • Metoda cotului
  • Coeficientul scorului Silhouette
  • Statistica Gap

Metoda simplă

  • Determinarea numărului maxim de clustere
  • Formula: $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = numărul de observații
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Ieșire consolă
    22
    
Simulare de evenimente discrete în Python

Numărul optim de clustere: Metoda scorului Silhouette

  • Importarea bibliotecilor
from sklearn.metrics import silhouette_score

Calcularea scorurilor Silhouette pentru k clustere

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)

Ieșire consolă

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

Interpretarea rezultatelor

  • Valoarea optimă: score = 1
  • Valoarea minimă: score = -1
  • Clustere suprapuse: score aproape de 0
Simulare de evenimente discrete în Python

Să exersăm!

Simulare de evenimente discrete în Python

Preparing Video For Download...