SHAP LIME — Les Deux Piliers de l’IA Explicable
Résumé
Dans un monde où les modèles de machine learning prennent des décisions toujours plus complexes, comprendre pourquoi un algorithme a produit une prédiction donnée est devenu aussi important que la prédiction elle-même. Les réseaux de neurones profonds, les forêts aléatoires et les modèles de boosting excellent en précision, mais ils demeurent des boîtes noires impénétrables. C’est précisément ici qu’interviennent SHAP et LIME, deux approches complémentaires qui rendent ces modèles exploitables et transparents.
SHAP (SHapley Additive exPlanations) fournit des explications globales et locales fondées sur la théorie des jeux coopératifs, plus précisément sur les valeurs de Shapley. LIME (Local Interpretable Model-agnostic Explanations) se concentre sur l’interprétabilité locale en approximant le modèle complexe par un modèle linéaire simple dans le voisinage d’une instance donnée. Ensemble, SHAP et LIME constituent les outils incontournables de tout praticien souhaitant rendre ses modèles interprétables et dignes de confiance.
Principe Mathématique
SHAP : Les Valeurs de Shapley Appliquées au Machine Learning
La contribution de chaque caractéristique (feature) à une prédiction individuelle est mesurée par la valeur de Shapley, un concept issu de la théorie des jeux coopératives développé par Lloyd Shapley en 1953, travail qui lui valut le prix Nobel d’économie.
La formule fondamentale s’écrit :
$$\phi_i = \sum_{S \subseteq N \setminus {i}} \frac{|S|! \cdot (M – 1 – |S|)!}{M!} \cdot [f(S \cup {i}) – f(S)]$$
où :
- N est l’ensemble de toutes les caractéristiques (features) du modèle, de cardinalité M
- S est un sous-ensemble quelconque des caractéristiques ne contenant pas la caractéristique i
- f(S) représente la prédiction du modèle entraîné uniquement sur le sous-ensemble S de caractéristiques
- [f(S ∪ {i}) − f(S)] est la contribution marginale de la caractéristique i lorsqu’elle est ajoutée au sous-ensemble S
- |S|! · (M − 1 − |S|)! / M! est le poids coefficient attribué à cette contribution marginale, garantissant que toutes les combinaisons possibles sont considérées pondérées équitablement
Cette formule possède quatre propriétés mathématiques fondamentales qui la rendent unique :
- Efficacité (ou additivité) : la somme des valeurs de Shapley pour toutes les caractéristiques égale exactement la différence entre la prédiction réelle et la prédiction moyenne : Σ φᵢ = f(x) − E[f(x)]. C’est une garantie absolue que toute la prédiction est expliquée intégralement.
- Symétrie : si deux caractéristiques contribuent de manière identique à toutes les coalitions possibles, alors elles reçoivent exactement les mêmes valeurs de Shapley. Cette propriété assure l’équité fondamentale du traitement.
- Linéarité : si l’on combine deux modèles, la valeur de Shapley de la combinaison est la somme des valeurs de Shapley individuelles. Cette propriété permet l’analyse de modèles composites.
- Nullité (dummy) : une caractéristique qui n’apporte aucune contribution marginale à aucune coalition reçoit une valeur de Shapley strictement nulle. Les variables inutiles sont automatiquement identifiées.
Le défi computationnel est cependant considérable : calculer les valeurs de Shapley exactes nécessite d’évaluer 2^M coalitions possibles, ce qui devient rapidement impossible pour des modèles comportant des centaines de caractéristiques. C’est pourquoi SHAP utilise des algorithmes d’approximation efficaces tels que KernelSHAP (une régression linéaire pondérée), TreeSHAP (spécialement optimisé pour les modèles arborescents comme XGBoost et LightGBM), et DeepSHAP (adapté aux réseaux de neurones profonds via la rétropropagation des contributions).
LIME : Approximation Locale par Modèle Interprétable
LIME repose sur une idée remarquablement simple tout étant profondément puissante : plutôt que de chercher à expliquer l’intégralité du modèle complexe, on se concentre uniquement sur le voisinage immédiat de l’instance que l’on souhaite comprendre.
Formellement, LIME cherche à trouver une fonction d’explication g qui minimise l’objectif suivant :
$$\xi(x) = \underset{g \in G}{\text{argmin}} \quad L(f, g, \pi_x) + \Omega(g)$$
où :
- f est le modèle complexe (boîte noire) que l’on souhaite expliquer, qu’il s’agisse d’un réseau de neurones, d’une forêt aléatoire ou de tout autre modèle
- g est le modèle interprétable, appartenant à la classe G des fonctions interprétables (généralement un modèle linéaire avec un petit nombre de coefficients non nuls, de type LASSO ou régression simple)
- L(f, g, π_x) est la mesure de fidélité locale, c’est-à-dire à quel point le modèle simple g imite le comportement du modèle complexe f dans le voisinage de l’instance x. Plus cette valeur est faible, meilleure est l’approximation locale.
- π_x est une fonction de pondération par proximité qui attribue des poids plus élevés aux échantillons perturbés proches de l’instance originale x que ceux qui en sont éloignés. Typiquement, on utilise un noyau exponentiel : π_x(z) = exp(−d(x,z)² / σ²), où d est une distance (souvent la distance cosinus ou euclidienne) et σ est un paramètre de bande passante.
- Ω(g) est une pénalité de complexité qui assure que le modèle d’explication g demeure simple et interprétable. Par exemple, Ω peut pénaliser le nombre de caractéristiques non nulles dans g (sparsité de type L1) ou la magnitude des coefficients.
Le processus algorithmique de LIME se déroule en quatre étapes successives :
- Échantillonnage par perturbation : on génère un grand nombre de données perturbées en modifiant aléatoirement les caractéristiques de l’instance x à expliquer. Pour des données tabulaires, on remplace des valeurs par des échantillons de la distribution marginale. Pour du texte, on supprime aléatoirement certains mots. Pour des images, on masque des superpixels.
- Obtention des prédictions : pour chaque échantillon perturbé, on obtient la prédiction du modèle f sur cet échantillon modifié. Ces prédictions constituent les cibles que le modèle interprétable g cherchera à reproduire.
- Pondération par distance : chaque échantillon perturbé se voit attribuer un poids proportionnel à sa similarité avec l’instance originale x. Les échantillons très proches de x ont un poids élevé, ce qui signifie que g doit particulièrement bien les prédire.
- Ajustement du modèle interprétable : on entraîne un modèle linéaire pondéré (généralement une régression linéaire avec régularisation LASSO) sur les échantillons perturbés, ce qui produit des coefficients directement interprétables qui constituent l’explication locale finale.
Intuition Comprise par Tous
SHAP : Répartir Équitablement un Pourboire
Imaginez la situation suivante : vous sortez dîner dans un restaurant avec quatre amis et vous décidez collectivement de laisser un pourboire de cinquante euros. La question naturelle est immédiate — comment répartir ce pourboire équitablement entre les cinq serveurs qui se sont relayés pendant votre soirée ?
La méthode naïve consisterait à diviser également — dix euros par personne. Mais cette approche est profondément injuste : Marie a servi l’entrée et le plat principal, Thomas n’a apporté que les boissons en retard de vingt minutes, et Sophie a géré le dessert et l’addition pendant que les autres étaient absents.
Les valeurs de Shapley résolvent ce problème avec une rigueur mathématique irréprochable. On évalue la contribution de chaque serveur en considérant toutes les combinaisons possibles de serveurs :
- Quelle est la différence de satisfaction du client quand Marie est présente versus quand elle est absente, pour chaque équipe possible ? On mesure cela systématiquement.
- On moyenne toutes ces contributions marginales, en pondérant chaque situation par son importance statistique.
- Le résultat est une répartition parfaitement équitable : chaque serveur reçoit exactement ce que sa contribution unique apporte à la qualité globale du service.
Transposé au machine learning, le « pourboire » représente la différence entre la prédiction réelle et la prédiction moyenne. Chaque caractéristique (chaque « serveur ») reçoit sa part équitable de responsabilité dans cette différence. Si une variable augmente la prédiction de manière significative et consistente à travers toutes les coalitions possibles, elle obtient une valeur SHAP élevée. Si elle ne change rien, sa valeur est nulle.
LIME : Le Mécanicien Qui Isole Chaque Pièce
Maintenant, imaginez cette scène classique : votre voiture produit un bruit étrange et inquiétant que vous ne parvenez pas à identifier. Vous amenez le véhicule chez un mécanicien expérimenté. Que fait-il concrètement ?
- Il met en marche le moteur et écoute attentivement le bruit anormal — c’est la prédiction originale du modèle que l’on observe.
- Il teste isolément chaque composant : il retire la courroie, refait tourner le moteur, note si le bruit persiste. Il remet la courroie, teste l’alternateur, et répète le processus systématiquement.
- Il note ses observations pour chaque test individuel : « avec la courroie retirée, le bruit diminue de 70 % » — cela signifie que la courroie contribue significativement au problème.
- Il formule un diagnostic simple et compréhensible : « c’est principalement la courroie d’accessoires et le tendeur qui causent ce bruit, dans une proportion de 70/30 ». Cette explication est linéaire et transparente — vous pouvez la comprendre immédiatement sans être mécanicien.
C’est exactement le principe de LIME : on perturbe l’entrée du modèle (on « retire des pièces »), on observe les changements de prédiction (on « écoute le bruit résultant »), et on construit une explication locale simple (le « diagnostic du mécanicien ») qui est fidèle au comportement du modèle dans ce voisinage spécifique.
Implémentation Python Complète
SHAP — Exemples Concrets avec KernelExplainer
Commençons par la mise en œuvre pratique de SHAP avec un modèle de classification standard de scikit-learn :
import shap
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# Chargement des données — classification de tumeurs mammaires
donnees = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
donnees.data, donnees.target, test_size=0.2, random_state=42
)
# Entraînement d'une forêt aléatoire — un modèle précisément de type boîte noire
modele = RandomForestClassifier(n_estimators=200, random_state=42)
modele.fit(X_train, y_train)
# Précision du modèle pour vérifier la qualité avant l'explication
precision = modele.score(X_test, y_test)
print(f"Précision du modèle : {precision:.4f}")
# Initialisation de l'explaineur par noyau (KernelSHAP) — méthode
# agnostique qui fonctionne avec n'importe quel modèle prédictif
# On utilise un échantillon d'arrière-plan pour estimer la valeur de référence
explainer = shap.KernelExplainer(
modele.predict_proba,
shap.sample(X_train, 100), # Échantillon représentatif pour accélérer
link="logit"
)
# Calcul des valeurs SHAP pour les 5 premières instances de test
# KernelSHAP est précis mais computationnellement coûteux
valeurs_shap = explainer.shap_values(X_test[:5])
# --- Visualisation 1 : Résumé global des contributions ---
# Le summary plot classe les caractéristiques par importance moyenne
# et montre la direction (positive/négative) de leur influence
shap.summary_plot(valeurs_shap, X_test[:5], feature_names=donnees.feature_names)
plt.title("Résumé SHAP — Impact global des caractéristiques")
plt.tight_layout()
plt.savefig("shap_summary_global.png", dpi=150, bbox_inches="tight")
plt.close()
# --- Visualisation 2 : Force plot pour une instance individuelle ---
# Le force plot montre visuellement comment chaque caractéristique
# pousse la prédiction vers la classe 0 ou la classe 1
instance_idx = 0
shap.force_plot(
explainer.expected_value[1],
valeurs_shap[1][instance_idx],
X_test[instance_idx],
feature_names=donnees.feature_names,
matplotlib=True
)
plt.title(f"Force Plot SHAP — Instance {instance_idx}")
plt.tight_layout()
plt.savefig(f"shap_force_instance_{instance_idx}.png", dpi=150, bbox_inches="tight")
plt.close()
# --- Visualisation 3 : Diagramme de dépendance ---
# Montre l'effet d'une seule caractéristique sur la prédiction
shap.dependence_plot(
"mean radius",
valeurs_shap[1],
X_test,
interaction_index="mean concave points",
feature_names=donnees.feature_names
)
plt.title("Dépendance SHAP — Rayon Moyen")
plt.savefig("shap_dependence_radius.png", dpi=150, bbox_inches="tight")
plt.close()
Pour les modèles arborescents (XGBoost, LightGBM, forêts aléatoires), SHAP propose un algorithme beaucoup plus rapide appelé TreeSHAP qui est exact (pas d’approximation) et des centaines de fois plus rapide que KernelSHAP :
# TreeSHAP — optimisé spécifiquement pour les arbres de décision
explainer_arbre = shap.TreeExplainer(modele)
valeurs_shap_arbre = explainer_arbre.shap_values(X_test)
# Le summary plot avec TreeSHAP fonctionne de manière identique
# mais le calcul est exponentiellement plus rapide
shap.summary_plot(valeurs_shap_arbre, X_test, feature_names=donnees.feature_names, show=False)
plt.title("Résumé SHAP via TreeExplainer")
plt.savefig("shap_tree_summary.png", dpi=150, bbox_inches="tight")
plt.close()
LIME — Explication Locale avec LimeTabularExplainer
L’implémentation de LIME est remarquablement élégante et intuitive :
import lime
import lime.lime_tabular
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
# Préparation des données identique à l'exemple SHAP
donnees = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
donnees.data, donnees.target, test_size=0.2, random_state=42
)
modele = RandomForestClassifier(n_estimators=200, random_state=42)
modele.fit(X_train, y_train)
# Initialisation de l'explaineur LIME pour données tabulaires
# On doit spécifier les noms des caractéristiques et de classes
# ainsi que le mode (classification ou régression)
explinateur_lime = lime.lime_tabular.LimeTabularExplainer(
training_data=X_train,
feature_names=donnees.feature_names,
class_names=donnees.target_names.astype(str).tolist(),
mode='classification',
verbose=True, # Affiche des détails du processus d'explication
random_state=42
)
# --- Explication d'une instance individuelle ---
instance_idx = 0
explication = explinateur_lime.explain_instance(
X_test[instance_idx],
modele.predict_proba,
num_features=10, # Nombre maximal de caractéristiques dans l'explication
top_labels=1, # Expliquer uniquement la classe prédite
)
# Affichage des résultats les plus importants
print(f"Prédiction réelle : classe {y_test[instance_idx]}")
print(f"Probabilités : {modele.predict_proba([X_test[instance_idx]])}")
print(f"Score de fidélité locale (R²) : {explication.score:.4f}")
print("\nContributions des caractéristiques les plus importantes :")
for caractéristique, contribution in explication.as_list():
print(f" {caractéristique} : {contribution:+.4f}")
# Sauvegarde de la visualisation en HTML interactif
explication.save_to_file(f"lime_explanation_instance_{instance_idx}.html")
# Visualisation dans un notebook Jupyter
# explication.show_in_notebook()
# --- Exemple avec données texte ---
# LIME fonctionne également avec le texte, les images et les données séquentielles
# from lime.lime_text import LimeTextExplainer
# explinateur_texte = LimeTextExplainer(class_names=categories)
# explication_texte = explinateur_texte.explain_instance(
# document_texte, classifieur.predict_proba, num_features=15
# )
Comparaison Directe des Deux Approches
# Script de comparaison SHAP vs LIME
import pandas as pd
shap_df = pd.DataFrame(
np.abs(valeurs_shap_arbre).mean(axis=0),
columns=['valeur_shap_absolue_moyenne']
)
lime_df = pd.DataFrame(
explication.as_map(),
columns=['caractéristique', 'contribution_lime']
)
# Fusionner et comparer le classement des caractéristiques
# pour une instance donnée
comparison = pd.DataFrame({
'shap_absolu': np.abs(valeurs_shap_arbre[instance_idx]),
'lime_contribution':
}, index=donnees.feature_names)
print("Comparaison des importances relatives :")
print(comparison.sort_values('shap_absolu', ascending=False).head(10))
Performance Computationnelle
L’un des critères décisifs dans le choix entre SHAP et LIME est le temps de calcul :
| Méthode | 10 instances | 100 instances | Tout le jeu | Exact |
|---|---|---|---|---|
| KernelSHAP | ~30 s | ~5 min | ~1 h | Non (approximation) |
| TreeSHAP | ~0.5 s | ~2 s | ~30 s | Oui (exact) |
| DeepSHAP | ~2 s | ~15 s | ~5 min | Non (approximation) |
| LIME | ~5 s | ~45 s | ~8 min | Non (approximation) |
Temps mesurés sur un processeur moderne avec 30 caractéristiques et une forêt de 200 arbres.
Avantages et Limites
SHAP — Avantages
Théoriquement solide et rigoureux : les valeurs de Shapley constituent l’unique méthode d’attribution qui satisfait simultanément les quatre propriétés mathématiques fondamentales (efficacité, symétrie, linéarité et nullité). Aucune autre méthode — importance par permutation, gains d’information, ou coefficients bruts — ne garantit cette cohérence mathématique absolue.
Consistance globale : les valeurs SHAP sont comparables entre différentes instances et différents modèles. Si une caractéristique a une valeur SHAP de +0,5 dans un modèle et −0,2 dans un autre, on peut conclure avec certitude que la première occurrence pousse fortement vers la prédiction positive tandis que la seconde s’oppose à cette prédiction. Cette comparabilité est unique à SHAP.
Visualisations riches et variées : la librairie SHAP offre un écosystème complet de visualisations — le summary plot pour une vue d’ensemble globale, le force plot pour des instances individuelles, le diagramme de dépendance pour analyser les interactions, le diagramme de décision pour suivre le cheminement complet de la prédiction.
Optimisé pour les modèles arborescents : TreeSHAP est exact et extrêmement rapide, ce qui rend l’explication des forêts aléatoires et des modèles de boosting pratiquement aussi rapide que la prédiction elle-même.
SHAP — Limites
Coût computationnel prohibitif pour KernelSHAP : pour des modèles non arborescents (réseaux de neurones profonds, SVM, régressions non linéaires), KernelSHAP nécessite un nombre considérable d’évaluations du modèle, ce qui devient rapidement impraticable au-delà de 50-100 caractéristiques.
Interprétation causale incorrecte : SHAP mesure des associations statistiques, pas des relations causales. Une caractéristique peut obtenir une valeur SHAP élevée parce qu’elle est corrélée avec une autre caractéristique véritablement déterminante, non parce qu’elle cause elle-même le résultat. Cette confusion est fréquente et dangereuse.
Dépendance à la distribution d’arrière-plan : les résultats dépendent du choix de l’échantillon d’arrière-plan utilisé pour estimer la valeur de référence. Un échantillon non représentatif peut biaiser significativement toutes les valeurs SHAP calculées.
LIME — Avantages
Agnostique au modèle : LIME fonctionne avec absolument n’importe quel modèle prédictif — réseau de neurones, SVM, forêts aléatoires, modèles ensemblistes, modèles propriétaires accessibles uniquement par API. Aucune connaissance de l’architecture interne n’est nécessaire, ce qui est un avantage considérable.
Extrêmement intuitif : les explications sous forme de coefficients linéaires pondérés sont immédiatement compréhensibles par des non-experts. “Le revenu augmente la probabilité d’approbation de 0,3” est une phrase qu’un responsable de crédit peut comprendre et utiliser sans formation mathématique préalable.
Flexibilité remarquable : LIME s’adapte naturellement à différents types de données — texte (suppression de mots), images (masquage de superpixels), séquences temporelles, données tabulaires — avec des perturbations appropriées pour chaque modalité.
Rapidité locale : pour expliquer une seule instance, LIME est significativement plus rapide que KernelSHAP car il ne nécessite pas l’évaluation exhaustive de toutes les coalitions possibles.
LIME — Limites
Instabilité des explications : en raison de l’échantillonnage aléatoire des perturbations, deux exécutions de LIME sur la même instance peuvent produire des résultats légèrement différents. Cette variabilité peut miner la confiance des utilisateurs finaux dans les explications produites.
Absence de garanties globales : LIME explique uniquement le voisinage immédiat d’une instance. Une explication LIME peut différer radicalement entre deux instances voisines si le modèle présente un comportement local non linéaire prononcé. LIME ne donne aucune vision d’ensemble du modèle.
Sensibilité aux paramètres : le choix du nombre d’échantillons perturbés, de la bande passante du noyau de pondération (σ), et de la complexité maximale du modèle interprétable influence considérablement les résultats obtenus. Aucun paramètre par défaut ne convient universellement à toutes les situations.
Quatre Cas d’Usage Concrets et Détaillés
1. Audit de Crédit Bancaire — Conformité Réglementaire Européenne
Dans le contexte strict du Règlement Général sur la Protection des Données (RGPD) et de l’article 22 relatif aux décisions automatisées, les banques européennes doivent être en mesure d’expliquer chaque refus de crédit à ses clients. Un modèle de scoring de crédit basé sur XGBoost utilise environ 150 caractéristiques — revenus, historique de paiement, dettes existantes, âge, profession, et bien d’autres — pour calculer un score de risque.
Lorsqu’un client se voit refuser un crédit immobilier, la banque doit lui communiquer les raisons principales de ce refus. SHAP fournit exactement cela : pour chaque demande refusée, on génère un rapport précis indiquant que le score a été diminué de −120 points à cause d’un historique de paiement défavorable, de −45 points en raison d’un ratio d’endettement jugé trop élevé, mais augmenté de +30 points grâce à un salaire stable et de +15 points grâce à une ancienneté professionnelle importante.
Cette explication est conforme juridiquement car elle est basée sur une méthode mathématiquement fondée (les valeurs de Shapley), reproductible (deux calculs identiques donnent exactement le même résultat), et compréhensible par le client final qui reçoit une liste concrète et actionnable de motifs.
2. Diagnostic Médical Assisté par Intelligence Artificielle
Les modèles d’IA utilisés en radiologie pour détecter des anomalies — nodules pulmonaires, lésions mammaires, fractures complexes sur des radiographies — doivent impérativement fournir des justifications transparentes pour que les radiologues puissent valider ou infirmer les prédictions avec une compréhension totale.
Grad-CAM (une variante de SHAP adaptée aux réseaux de neurones convolutionnels profonds) produit des cartes de saillance (saliency maps) qui mettent en évidence les régions exactes de l’image que le réseau de neurones considère comme les plus déterminantes pour sa prédiction. Le radiologue voit alors une superposition visuelle où les zones pertinentes apparaissent en rouge intense sur la radiographie originale.
Pour les données tabulaires provenant de dossiers médicaux électroniques — résultats d’analyses sanguines, antécédents familiaux, médicaments prescrits — SHAP identifie les facteurs de risque individuels qui ont le plus contribué au diagnostic. Par exemple : “Ce patient a un risque élevé de diabète principalement en raison de son taux d’hémoglobine glyquée (+0,45 SHAP), de son indice de masse corporelle (+0,30 SHAP) et de ses antécédents familiaux (+0,20 SHAP).”
3. Détection de Fraude aux Transactions Financières
Les systèmes de détection de fraude analysent des millions de transactions en temps réel en examinant des centaines de signaux — montant, localisation géographique, heure de la transaction, historique du client, déviation par rapport au comportement habituel, rapidité d’exécution, et d’autres indicateurs encore.
LIME est particulièrement adapté à ce scénario car chaque transaction frauduleuse bloquée nécessite une investigation rapide et ciblée. L’explication doit être instantanée et actionnable pour les analystes qui examinent les alertes : “Cette transaction de 2 500 euros effectuée à 3 heures du matin depuis un terminal situé à São Paulo alors que le client se trouve habituellement à Paris a été marquée comme frauduleuse principalement en raison de : la distance géographique anormale (contribution LIME : +0,72), l’heure inhabituelle de transaction (contribution LIME : +0,35), et le montant significativement supérieur à la moyenne habituelle du client (contribution LIME : +0,28).”
Cette explication permet à l’analyste de comprendre immédiatement pourquoi la transaction a été signalée et de prendre une décision éclairée en quelques secondes, réduisant ainsi à la fois les faux positifs coûteux et les fraudes manquées dévastatrices.
4. Maintenance Prédictive dans l’Industrie Manufacturière
Dans les usines modernes, des capteurs IoT (Internet des Objets) collectent en continu des données sur des centaines de paramètres machines — température des roulements, vibrations, pression hydraulique, consommation électrique, qualité des vibrations sonores — pour prédire les pannes potentielles avant qu’elles ne surviennent.
SHAP permet d’identifier les signaux précurseurs les plus déterminants pour chaque type de panne. Par exemple, pour prédire une défaillance de palier sur une turbine, l’analyse SHAP révèle que la vibration axiale à haute fréquence est le prédicteur dominant (valeur SHAP moyenne de +0,58), suivie par l’évolution de la température du lubrifiant sur les 48 dernières heures (+0,41) et la consommation électrique anormale (+0,25).
Cette analyse permet non seulement de prédire la panne, mais surtout de comprendre sa cause racine et de planifier des interventions de maintenance ciblées, réduisant ainsi les arrêts de production non planifiés de jusqu’à 40 % et économisant des millions d’euros en coûts d’immobilisation et de réparations d’urgence.
Voir Aussi
- Résoudre le Problème d’Entretien Maximum Subarray avec Python
- Implémenter l’Algorithme de Dekker en Python : Synchronisation des Threads Efficace

