TP N°2 : Machine Learning

Clustering Industriel avec K-Means

Réalisé par : Dahane Ahmed Lamine & Tabbi Meriem

Enseignante : Mme. Fergani

Module : Intelligence Artificielle / Analyse de Données

1. Problématique & Notions Théoriques

Dans ce deuxième TP, nous abordons une problématique issue de l'Industrie 4.0 en analysant le dataset AI4I 2020 Predictive Maintenance. Contrairement au TP précédent où nous connaissions les étiquettes à prédire, ici nous voulons découvrir des profils de machines "à l'aveugle", uniquement à partir de leurs paramètres physiques (vitesse de rotation, couple, température, usure). L'objectif est de regrouper les machines ayant des comportements similaires pour optimiser les plannings de maintenance prédictive.

L'algorithme K-Means en détail

Le K-Means est l'algorithme d'apprentissage non-supervisé le plus populaire pour le clustering (partitionnement de données). Son but est de diviser un ensemble de données en K groupes (clusters) distincts et homogènes. Son fonctionnement est un processus itératif fascinant qui obéit à des lois mathématiques strictes :

Avantages et Inconvénients du K-Means

Avantages

  • Rapidité et Simplicité : Très facile à implémenter et incroyablement rapide, même sur des milliers de lignes de données industrielles.
  • Scalabilité : Contrairement à d'autres algorithmes de clustering (comme le clustering hiérarchique), K-Means gère parfaitement les Big Data.
  • Interprétabilité : Les centres des clusters fournissent un "profil type" clair (ex: le profil de la machine fonctionnant à haute température).

Inconvénients

  • Nécessité de choisir K : L'algorithme ne devine pas le nombre de groupes. L'humain doit définir K à l'avance (d'où l'utilisation de la méthode du Coude).
  • Sensibilité aux Outliers : Les valeurs aberrantes (une machine ayant un capteur défectueux) peuvent fausser la moyenne et "tirer" un centroïde loin de sa zone optimale.
  • Sensibilité à l'échelle : Il est strictement obligatoire de normaliser les données avant de lancer le calcul.

2. Pourquoi pas de Matrice de Confusion ? Les Métriques du Non-Supervisé

Correction conceptuelle fondamentale : Dans ce TP, il est impossible de calculer une Précision ou de dessiner une Matrice de Confusion. Pourquoi ? Car ces métriques nécessitent de comparer la prédiction de l'IA avec la "véritable réponse" (la Cible). Or, en apprentissage non-supervisé, nous avons volontairement supprimé les étiquettes de pannes ! L'IA crée des groupes abstraits (Cluster 0, Cluster 1) qui n'ont pas de "bonne" ou "mauvaise" réponse définie par avance.

Pour évaluer la qualité de notre K-Means, nous devons donc utiliser des métriques mathématiques mesurant la cohérence spatiale des groupes :

Résultats de notre Évaluation

[INFO] Évaluation du modèle K-Means (K=3) ----------------------------------------- => Inertie Finale (WCSS) : 14520.35 => Score de Silhouette : 0.42 Interprétation : Le score de silhouette de 0.42 est positif et correct. Il indique que nous avons réussi à isoler des comportements machines distincts, bien que certaines zones de fonctionnement industriel se chevauchent naturellement.

3. Implémentation Python (Solution Complète)

Voici le code complet du traitement du dataset AI4I 2020. Notez l'importance cruciale de la suppression des colonnes inutiles et de la normalisation (StandardScaler) :


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score

# 1. Chargement des données AI4I 2020
df = pd.read_csv('ai4i2020.csv')

# 2. Nettoyage strict pour le Non-Supervisé
# On supprime les Identifiants (UDI, Product ID) car ce n'est pas de la physique
# On supprime toutes les colonnes de Cibles (Target, TWF, HDF, PWF, OSF, RNF)
# On supprime le Type (L, M, H) pour ne laisser que les variables continues
colonnes_a_supprimer = ['UDI', 'Product ID', 'Type', 'Machine failure', 
                        'TWF', 'HDF', 'PWF', 'OSF', 'RNF']
X = df.drop(colonnes_a_supprimer, axis=1)

# 3. La Loi de Normalisation (Crucial)
# La Vitesse est en milliers (RPM), le Couple en dizaines (Nm).
# Sans StandardScaler, la Vitesse écraserait toutes les autres variables dans la distance.
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 4. Méthode du Coude pour trouver le K optimal
wcss = []
K_range = range(1, 11)
for k in K_range:
    kmeans = KMeans(n_clusters=k, init='k-means++', random_state=42)
    kmeans.fit(X_scaled)
    wcss.append(kmeans.inertia_)

# 5. Entraînement final avec le K choisi (ex: K=3 d'après le coude)
kmeans_final = KMeans(n_clusters=3, init='k-means++', random_state=42)
clusters = kmeans_final.fit_predict(X_scaled)
df['Cluster'] = clusters

# 6. Évaluation du modèle
sil_score = silhouette_score(X_scaled, clusters)
print(f"Inertie Finale : {kmeans_final.inertia_:.2f}")
print(f"Score de Silhouette : {sil_score:.2f}")

# Affichage du profil moyen de chaque cluster pour analyse métier
print("\nProfil moyen des machines par Cluster :")
print(df.groupby('Cluster')[X.columns].mean())
        

4. Visualisations Interactives

Interagissez avec les graphiques ci-dessous pour comprendre la démarche de l'algorithme.

A. Méthode du Coude (Elbow Method)

Ce graphique trace l'Inertie en fonction du nombre de clusters (K). On cherche le point d'inflexion (le "coude") où l'ajout d'un nouveau cluster n'améliore plus significativement l'inertie. Ici, le coude se situe autour de K=3 ou K=4.

B. Visualisation des Clusters (Vitesse vs Couple)

Ce nuage de points montre comment l'algorithme a physiquement séparé les machines selon deux axes critiques : la vitesse de rotation et le couple (Torque). Remarquez la séparation nette des profils de fonctionnement.

5. Bilan : Ce que nous avons compris dans ce TP

Ce second travail pratique nous a fait basculer dans un tout autre paradigme de l'Intelligence Artificielle : la découverte de structures cachées.

1. La rigueur du prétraitement : Nous avons compris que l'apprentissage non-supervisé est impitoyable avec les données brutes. Laisser un identifiant (ID) aurait ruiné le clustering en forçant l'IA à chercher des distances mathématiques entre des numéros de série. Plus important encore, nous avons assimilé l'obligation absolue de la Normalisation. Les équations de distance Euclidienne exigent que toutes les dimensions parlent "la même langue" numérique (moyenne 0, écart-type 1) pour qu'aucune variable physique ne domine les autres artificiellement.

2. Le changement d'évaluation : Nous avons déconstruit le réflexe d'attendre une "précision en pourcentage" ou une "matrice de confusion". En l'absence de "vérité terrain", nous avons appris à faire confiance à des métriques géométriques comme l'Inertie (pour la compacité) et la Silhouette (pour la séparation des groupes), tout en utilisant la méthode visuelle du Coude pour guider les choix mathématiques.

3. L'impact industriel : Enfin, d'un point de vue "Métier", l'application du K-Means sur le dataset AI4I 2020 n'est pas qu'un exercice mathématique. L'algorithme a réussi à extraire automatiquement des régimes de fonctionnement distincts (par exemple des machines soumises à de fortes charges thermiques vs des machines à rotation rapide). En maintenance prédictive, cela permet à un ingénieur d'attribuer une politique de maintenance spécifique à chaque "Cluster" sans avoir à auditer manuellement les 10 000 machines de l'usine.