Regroupement et modèles de clusters

Simulation d’événements discrets en Python

Diogo Costa (PhD, MSc)

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

Histogrammes des résultats du modèle

  • Explorer les résultats du modèle
  • Identifier points de bascule et goulots d’étranglement
  • Optimiser le système

Histogramme

  • Graphique des distributions de fréquence
  • Donne le nombre d’observations par intervalle

Package Matplotlib

import matplotlib.pyplot as plt

Usage : Créer un histogramme du jeu data avec 50 bacs

plt.hist(data, bins=50)

Un histogramme à 50 classes montrant deux distributions gaussiennes suggérant deux clusters.

Simulation d’événements discrets en Python

Analyse de clusters et application aux modèles

  • Applications
    • Reconnaissance de formes (p. ex., résultats de modèle)
    • Analyse d’images

Une image satellite des lumières nocturnes en Amérique du Nord.

  • Compression de données
  • Infographie
  • Apprentissage automatique

    Une image schématique d’un réseau de neurones dans un cerveau évoque cette technique et l’émergence de motifs et de clusters.

  • Dans les modèles à événements discrets

    • Identifier les motifs de sortie du modèle
    • Informations plus exploitables
Simulation d’événements discrets en Python

Regroupement k-means

Notre focus

  • k-means (modèle par centroïdes)
  • Partitionner les observations en k clusters
  • Chaque observation va au cluster au moyen le plus proche
  • Moyennes des clusters = « centroïdes »

Observations et centroïdes

Graphique montrant des données avec des centroïdes calculés par k-means.

Simulation d’événements discrets en Python

k-means avec SciPy

Méthode SciPy

scipy.cluster.vq.kmeans()

Implémentation

import scipy
scipy.cluster.vq.kmeans(
obs, k_or_guess, iter=20, thresh=1e-05,
check_finite=True, *, seed=None)
  • obs est un tableau numpy
  • Renvoie :
    1. Centroïdes de clusters
    2. Distorsion (distance moyenne entre observations et centroïdes générés)
Simulation d’événements discrets en Python

Blanchiment : décorrélation et rééchelonnage

Avant k-means : blanchiment des données

  1. Décorréler les données obs
  2. Rééchelonner chaque dimension de obs par son écart-type

Le graphique montre trois panneaux : données corrélées, données décorrélées, puis données blanchies.

Dans SciPy

scipy.cluster.vq.whiten(
obs, check_finite=True)
  • obs est un tableau numpy
Simulation d’événements discrets en Python

Exemple : blanchiment et k-means

  • Activité manufacturière avec plusieurs processus
  • Examinons l’impact de Process 1

Graphique montrant la durée du process 1 versus la durée totale pour données brutes et blanchies, avec clusters k-means.

Importer le package

import scipy.cluster.vq as scvq

Blanchir les résultats

white_data = scvq.whiten(model_results)

Trouver 2 clusters (points bleus)

cluster_centroids, distortion = 
scvq.kmeans(white_data, 2)
Simulation d’événements discrets en Python

Nombre optimal de clusters

Techniques

  • Méthode simple (nb max de clusters)
  • Méthode du coude
  • Coefficient de silhouette
  • Statistique de l’écart (gap)

Méthode simple

  • Déterminer le nombre max de clusters
  • Utilisation : $\Big(\dfrac{nobs}{2}\Big)^{0.5}$
    • nobs = nombre d’observations
num_clusters = 
  int((model_results.shape[0]/2)**0.5)
  • Sortie console
    22
    
Simulation d’événements discrets en Python

Nombre optimal de clusters : méthode du score de silhouette

  • Importer les bibliothèques
from sklearn.metrics import silhouette_score

Calculer les scores de silhouette pour k clusters

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)

Sortie console

Score de silhouette pour k = 2 : 0.591
Score de silhouette pour k = 3 : 0.472
Score de silhouette pour k = 4 : 0.381
Score de silhouette pour k = 5 : 0.364
Score de silhouette pour k = 6 : 0.373

Interprétation

  • Meilleure valeur : score = 1
  • Pire valeur : score = -1
  • Chevauchement des clusters : score proche de 0
Simulation d’événements discrets en Python

Passons à la pratique !

Simulation d’événements discrets en Python

Preparing Video For Download...