
Présentation de ShaTS : une méthode basée sur Shapley pour les modèles de séries chronologiques
Introduction
font partie des outils les plus populaires pour expliquer les modèles de Machine Learning (ML) et de Deep Learning (DL). Cependant, pour les données de séries chronologiques, ces méthodes échouent souvent car elles ne tiennent pas compte des dépendances temporelles inhérentes à de tels ensembles de données. Dans un article récent, nous (Ángel Luis Perales Gómez, Lorenzo Fernández Maimó et moi) introduit Chatsune nouvelle méthode d’explicabilité basée sur Shapley spécialement conçue pour les modèles de séries chronologiques. ShaTS répond aux limites des méthodes Shapley traditionnelles en incorporant des stratégies de regroupement qui améliorent à la fois l’efficacité informatique et l’explicabilité.
Valeurs Shapley : la fondation
Valeurs Shapley proviennent de la théorie des jeux coopératifs et répartissent équitablement le gain total entre les joueurs en fonction de leurs contributions individuelles à un effort de collaboration. La valeur Shapley pour un joueur est calculée en considérant toutes les coalitions possibles de joueurs et en déterminant la contribution marginale de ce joueur à chaque coalition.
Formellement, la valeur Shapley φje pour le joueur je est:
\[ \varphi_i(v) = \sum_{S \subseteq N \setminus {i}}
\frac{|S|! (|N| – |S| – 1)!}{|N|!} (v(S \cup {i}) – v(S)) \]
où:
- N est l’ensemble de tous les joueurs.
- S est une coalition d’acteurs ne comprenant pas je.
- contre) est la fonction de valeur qui attribue une valeur à chaque coalition (c’est-à-dire le gain total que la coalition S peut réaliser).
Cette formule fait la moyenne des contributions marginales des joueurs je dans toutes les coalitions possibles, pondérées par la probabilité de formation de chaque coalition.
De la théorie des jeux à xAI : les valeurs de Shapley dans l’apprentissage automatique
Dans le contexte de l’IA explicable (xAI), les valeurs de Shapley attribuent la sortie d’un modèle à ses caractéristiques d’entrée. Ceci est particulièrement utile pour comprendre des modèles complexes, tels que les réseaux de neurones profonds, où la relation entre entrée et sortie n’est pas toujours claire.
Les méthodes basées sur Shapley peuvent être coûteuses en termes de calcul, en particulier lorsque le nombre de caractéristiques augmente, car le nombre de coalitions possibles augmente de façon exponentielle. Cependant, les méthodes d’approximation, en particulier celles mises en œuvre dans les méthodes populaires Bibliothèque SHAPles ont rendus réalisables dans la pratique. Ces méthodes estiment les valeurs de Shapley en échantillonnant un sous-ensemble de coalitions plutôt qu’en évaluant toutes les combinaisons possibles, réduisant ainsi considérablement la charge de calcul.
Considérons un scénario industriel comportant trois composants : un réservoir d’eau, un thermomètre et un moteur. Supposons que nous disposions d’un modèle ML/DL de détection d’anomalies (AD) qui détecte les activités malveillantes en fonction des lectures de ces composants. Grâce à SHAP, nous pouvons déterminer dans quelle mesure chaque composant contribue à la prédiction du modèle quant à savoir si l’activité est malveillante ou bénigne.

Cependant, dans des scénarios plus réalistes, le modèle utilise non seulement les lectures actuelles de chaque capteur, mais également les lectures précédentes (une fenêtre temporelle) pour faire des prédictions. Cette approche permet au modèle de capturer des modèles et des tendances temporelles, améliorant ainsi ses performances. Appliquer SHAP dans ce scénario pour attribuer une responsabilité à chaque composant physique devient plus difficile car il n’y a plus de mappage un à un entre les fonctionnalités et les capteurs. Chaque capteur apporte désormais plusieurs fonctionnalités associées à différents pas de temps. L’approche courante ici consiste à calculer la valeur Shapley de chaque caractéristique à chaque pas de temps, puis à agréger ces valeurs post-hoc.

Cette approche présente deux inconvénients principaux :
- Complexité informatique: Le coût de calcul augmente de façon exponentielle avec le nombre d’entités, ce qui le rend peu pratique pour les grands ensembles de données de séries chronologiques.
- Ignorer les dépendances temporelles: Les explicateurs SHAP sont conçus pour les données tabulaires sans dépendances temporelles. L’agrégation post-hoc peut conduire à des explications inexactes car elle ne parvient pas à capturer les relations temporelles entre les entités.
L’approche ShaTS : le regroupement avant l’importance du calcul
Dans le cadre de Shapley, la valeur d’un joueur est déterminée uniquement en comparant les performances d’une coalition avec et sans ce joueur. Bien que la méthode soit définie au niveau individuel, rien n’empêche de l’appliquer à des groupes d’acteurs plutôt qu’à des individus isolés. Ainsi, si l’on considère un ensemble d’acteurs N divisé en p groupes G = {G1… , Gp}nous pouvons calculer la valeur de Shapley pour chaque groupe Gje en évaluant la contribution marginale de l’ensemble du groupe à toutes les coalitions possibles des groupes restants. Formellement, la valeur Shapley pour le groupe Gje peut être exprimé comme suit :
\[ \varphi(G_i) = \sum_{T \subseteq G \setminus G_i} \frac{|T|! (|G| – |T| – 1)!}{|G|!} \left( v(T \cup G_i) – v(T) \right) \]
où:
- G est l’ensemble de tous les groupes.
- T est une coalition de groupes ne comprenant pas Gje.
- Vermont) est la fonction de valeur qui attribue une valeur à chaque coalition de groupes.
S’appuyant sur cette idée, ShaTS fonctionne sur des fenêtres temporelles et propose trois niveaux de regroupement distincts, en fonction de l’objectif explicatif :
Temporel
Chaque groupe contient toutes les mesures enregistrées à un instant précis dans la fenêtre temporelle. Cette stratégie est utile pour identifier les instants critiques qui influencent significativement la prédiction du modèle.

Fonctionnalité
Chaque groupe représente les mesures d’une caractéristique individuelle sur la fenêtre temporelle. Cette stratégie isole l’impact de fonctionnalités spécifiques sur les décisions du modèle.

Multifonction
Chaque groupe comprend les mesures combinées sur la fenêtre temporelle de caractéristiques qui partagent une relation logique ou représentent une unité fonctionnelle cohérente. Cette approche analyse l’impact collectif des caractéristiques interdépendantes, garantissant que leur influence combinée est capturée.

Une fois les groupes définis, les valeurs de Shapley sont calculées exactement comme dans le cas individuel, mais en utilisant des contributions marginales au niveau du groupe au lieu de contributions par fonctionnalité.

Visualisation personnalisée ShaTS
ShaTS comprend une visualisation conçue spécifiquement pour les données séquentielles et pour les trois stratégies de regroupement ci-dessus. L’axe horizontal montre les fenêtres consécutives. L’axe vertical de gauche répertorie les groupes et l’axe vertical de droite recouvre le score d’anomalie du modèle pour chaque fenêtre. Chaque cellule de la carte thermique à (je, Gj) représente l’importance du groupe Gj pour fenêtre je. Les rouges plus chauds indiquent une contribution positive plus forte à l’anomalie, les bleus plus froids indiquent une contribution négative plus forte et un blanc proche signifie une influence négligeable. Une ligne pointillée violette trace le score d’anomalie à travers les fenêtres, et une ligne pointillée horizontale à 0,5 marque le seuil de décision entre les fenêtres anormales et normales.
Pour illustrer, imaginez un modèle qui traite des fenêtres de longueur 10 construites à partir de trois fonctionnalités, X, Ouiet Z. Lorsqu’un opérateur reçoit une alerte et souhaite savoir quel signal l’a déclenchée, il inspecte les résultats du regroupement de fonctionnalités. Dans la figure suivante, autour des fenêtres 10 et 11, le score d’anomalie dépasse le seuil, tandis que l’attribution pour X s’intensifie. Cette tendance indique que la décision est motivée principalement par X.

Si la question suivante est de savoir quand, dans chaque fenêtre, l’anomalie se produit, l’opérateur passe à la vue de regroupement temporel. La figure suivante montre que l’instant final de chaque fenêtre (t9) porte systématiquement l’attribution positive la plus forte, révélant que le modèle a appris à s’appuyer sur le dernier pas de temps pour classer la fenêtre comme anormale.

Résultats expérimentaux : tester ShaTS sur l’ensemble de données SWaT
Dans notre récente publicationnous avons validé ShaTS sur le Traitement Sécurisé de l’Eau (Écraser) banc d’essai, une installation d’eau industrielle avec 51 capteurs/actionneurs organisés en six étages d’usine (P1–P6). Un Bi-LSTM empilé formé sur des signaux fenêtrés a servi de détecteur, et nous avons comparé ShaTS avec KernelSHAP post hoc en utilisant trois points de vue : temporel (quel instant dans la fenêtre compte), capteur/actionneur (quel appareil) et processus (quelle des six étapes).
Lors des attaques, ShaTS a généré des bandes étroites et interprétables qui ont identifié la véritable source (jusqu’au capteur/actionneur ou au stade de l’usine), tandis que le SHAP post-hoc avait tendance à diffuser l’importance entre de nombreux groupes, compliquant ainsi l’analyse des causes profondes. ShaTS était également plus rapide et plus évolutif : le regroupement réduit le nombre de joueurs, de sorte que l’espace de la coalition diminue considérablement ; le temps d’exécution reste presque constant à mesure que la longueur de la fenêtre augmente car le nombre de groupes ne change pas ; et l’exécution GPU accélère encore la méthode, rendant pratique une utilisation en temps quasi réel.
Exemple pratique : intégration de ShaTS dans votre flux de travail
Cette procédure pas à pas montre comment intégrer ShaTS à un flux de travail Python typique : importez la bibliothèque, choisissez une stratégie de regroupement, initialisez l’explicateur avec votre modèle entraîné et vos données d’arrière-plan, calculez les valeurs Shapley par groupe sur un ensemble de test et visualisez les résultats. L’exemple suppose un modèle de série temporelle PyTorch et que vos données sont fenêtrées (par exemple, forme [window_len, n_features] par échantillon).
1. Importez ShaTS et configurez l’explication
Dans votre script ou notebook Python, commencez par importer les composants nécessaires depuis la bibliothèque ShaTS. Pendant que le référentiel expose la classe abstraite ShaTS, vous instancierez généralement l’une de ses implémentations concrètes (par exemple, FastShaTS).
import shats
from shats.grouping import TimeGroupingStrategy
from shats.grouping import FeaturesGroupingStrategy
from shats.grouping import MultifeaturesGroupingStrategy
2. Initialiser le modèle et les données
Supposons que vous disposiez d’un modèle PyTorch de série chronologique pré-entraîné et d’un ensemble de données d’arrière-plan, qui devrait être une liste de tenseurs représentant des échantillons de données typiques que le modèle a vus pendant l’entraînement. Si vous souhaitez mieux comprendre la vérification de l’ensemble de données en arrière-plan ce blog de Christoph Molnar.
model = MyTrainedModel()
random_samples = random.sample(range(len(trainDataset)), 100)
background = [trainDataset[idx] for idx in random_samples]
shapley_class = shats.FastShaTS(model,
support_dataset=background,
grouping_strategy= FeaturesGroupingStrategy(names=variable_names)
3. Calculer les valeurs de Shapley
Une fois l’explicatif initialisé, calculez les valeurs ShaTS pour votre ensemble de données de test. L’ensemble de données de test doit être formaté de la même manière que l’ensemble de données d’arrière-plan.
shats_values = shaTS.compute(testDataset)
4. Visualisez les résultats
Enfin, utilisez la fonction de visualisation intégrée pour tracer les valeurs ShaTS. Vous pouvez spécifier quelle classe (par exemple, anormale ou normale) vous souhaitez expliquer.
shaTS.plot(shats_values, test_dataset=testDataset, class_to_explain=1)
Points clés à retenir
- Attribution ciblée: ShaTS fournit des attributions plus ciblées que SHAP post-hoc, ce qui facilite l’identification de la cause première dans les modèles de séries chronologiques.
- Efficacité: En réduisant le nombre de joueurs dans les groupes, ShaTS diminue considérablement les coalitions à évaluer, conduisant à des temps de calcul plus rapides.
- Évolutivité: ShaTS maintient des performances constantes même lorsque la taille de la fenêtre augmente, grâce à sa structure de groupe fixe.
- Accélération GPU: ShaTS peut exploiter les ressources GPU, améliorant encore sa vitesse et son efficacité.
Essayez-le vous-même
Démo interactive
Comparez ShaTS avec SHAP post hoc sur des séries chronologiques synthétiques ici. Vous pouvez trouver un tutoriel sur la vidéo suivante.
Source ouverte
Le module ShaTS est entièrement documenté et prêt à être connecté à votre pipeline ML/DL. Retrouvez le code sur GitHub.
J’espère que ça vous a plu ! Vous êtes les bienvenus contactez-moi si vous avez des questions, souhaitez partager des commentaires ou simplement envie de présenter vos propres projets.



