Bonjour. Je m'appelle Byron Wingerd et je suis ingénieur système chez JMP. Je travaille généralement avec des entreprises pharmaceutiques de la côte Est. Aujourd'hui, je vais vous parler de la détection des petits décalages. Il s'agit d'analyser les données de processus ou d'analyses pour comprendre quand ces petits décalages se produisent et comment les détecter. Il s'agit d'analyser les données, même rétrospectivement, pour comprendre quand des décalages ont pu se produire par le passé. Il s'agit de trouver des signaux dans le bruit des données collectées en continu.
J'ai quelques avertissements à vous donner. Votre processus ne vous aime pas. Votre système, quel que soit votre processus, qu'il s'agisse d'un système de mesure, d'un système de fabrication, de purifications, quel que soit le processus, est plus sensible aux variations des entrées que vos méthodes de contrôle qualité entrantes. Qu'est-ce que je veux dire par là ? Ce que vous recherchez, comme la pureté, c'est excellent si vous pouvez le détecter, mais vous ne pourrez pas détecter ce que vous n'attendez pas.
De plus, les certificats d'autorisation des fournisseurs, notamment de produits chimiques, sont parfois copiés d'un lot à l'autre. Il n'y a pas beaucoup d'avertissements concernant les petits changements dans vos matières premières entrantes, à moins de disposer de méthodes extrêmement sensibles pour les détecter. Pour la grande majorité des gens, ces méthodes n'existent tout simplement pas.
J'ai un autre avertissement pour vous. Vos programmes de suivi et de tendances ne vous apprécient pas. C'est en partie de notre faute. Nous sommes devenus complaisants. Tout le monde parle du fait que trop d'alarmes finissent par être ignorées. Mais l'autre côté de la médaille, c'est qu'il n'y a pas d'alarmes. Tout semble parfait. Tout est sous contrôle. Nous n'avons plus à nous soucier de rien. Nous cessons également d'examiner attentivement les données. Entre ce problème de non-détection des éléments susceptibles d'affecter notre processus et le fait que tout semble parfait, si je ne regarde pas aussi attentivement, nous risquons d'avoir des problèmes.
Pourquoi utilisons-nous des cartes de contrôle ? Pourquoi utilisons-nous des SPC, CPV, peu importe comment on les appelle ? L'objectif principal est de distinguer les variations de cause commune des variations de cause spéciale. C'est un mécanisme permettant de réagir aux changements détectés dans le processus. Grâce aux statistiques, nous pouvons être très précis sur nos observations. Nous pouvons également automatiser les alertes pour détecter des anomalies lorsque, je ne sais pas, nous n'y prêtons pas attention.
Mais tout ce suivi et ces tendances ne sont pas vraiment facultatifs. Dans l'industrie pharmaceutique, c'est obligatoire. Pour tout autre type de production, la norme ISO9000 l'exige également. Ce n'est pas facultatif. Nous devrions tous le faire et surveiller nos processus.
Autre avertissement : votre processus pourrait vous avertir discrètement de choses qui pourraient vous arriver plus tard. Voici ce que je veux dire : il y a ces expériences de fabrication accidentelles. Il y a des situations critiques. Par exemple, on a failli perdre le contrôle de ce lot. Il y a des choses étranges qui ne sont pas hors de contrôle, mais on peut détecter de légères variations dans les données. Le problème, c'est qu'on ne voit pas ce qu'on ne cherche pas.
D'un autre côté, il ne faut pas se laisser tromper par le hasard, mais simplement traquer des signaux aléatoires. C'est tout l'intérêt des cartes de contrôle. Nous souhaitons uniquement réagir aux variations de causes spéciales, et non aux causes communes. Nous nous situons dans cette marge, comme si nous examinions ces données intermédiaires.
Je souhaite aborder l'application de certains outils dont nous disposons pour détecter les légers changements. Nous disposons des graphiques CUSUM. Ils sont excellents. Idéalement, ils seraient utilisés de manière prospective, pour identifier les changements survenus. Il s'agit d'analyser la somme cumulative des fluctuations d'un processus. Nous disposons de différentes méthodes pour les interpréter. Les graphiques EWMA (moyennes mobiles pondérées exponentiellement) sont également très efficaces. Ils sont excellents.
Nous pouvons ensuite aborder la détection des points de changement. C'est là que nous allons aborder certains aspects du multivarié, comme le lasso fusionné, et peut-être même l'utilisation de méthodes arborescentes comme le partitionnement, le criblage de prédicteurs et la forêt bootstrap, pour détecter les petits changements, les décalages et les dérives. JMP dispose d'excellents outils pour les analyser, et j'aimerais aborder quelques-uns des principaux.
CUSUM est un excellent outil pour détecter les petits décalages dans un processus, notamment les dérives qui se produisent lentement puis s'accélèrent. On peut les identifier en observant les schémas qui ressortent clairement sur les graphiques. Auparavant, il y avait tout ce système de masque en V : on observait le masque en V et la direction des données, et c'était un peu comme une simple manipulation. Ça fonctionne. C'est vraiment fiable. Mais dans JMP, nous avons repensé cette plateforme il y a quelques années pour qu'elle ressemble davantage à un graphique de contrôle classique. C'est très pratique à utiliser.
Cette carte de contrôle, le CUSUM, utilise certains paramètres. Il y a le Sigma, qui détermine l'ampleur de la différence à détecter. Il y a l'avance, comme la réponse initiale rapide. Il y a une valeur H et une valeur K qui déterminent l'ampleur du changement détectable et ce qui définit le Sigma utilisé, l'intervalle K-Sigma. Certains paramètres doivent être ajustés pour une optimisation optimale.
Nous avons également mentionné l'EWMA. Il s'agit d'une carte de contrôle à mémoire limitée, où CUSUM analyse la somme cumulée. L'EWMA dispose d'une mémoire, et la question est de savoir jusqu'où les observations précédentes peuvent l'influencer. Cette mémoire peut être pondérée de manière exponentielle. Elle possède également des paramètres : la cible, le Sigma, et surtout le Lambda. Le Lambda est ce lissage, c'est-à-dire jusqu'où en mémoire on se souvient de tout, de rien ou de quelque chose entre les deux, pendant cette période d'attente.
Ces deux méthodes, très courantes pour détecter les décalages et les dérives, requièrent un peu d'expérience et d'expertise. Il est essentiel de savoir les utiliser pour détecter précisément ce que l'on recherche, car il est possible de détecter des éléments absents ou de passer à côté d'éléments déjà présents, et de ne pas prendre de décisions précises si l'on ajuste les paramètres de manière excessive.
Ne serait-il pas intéressant de pouvoir utiliser un outil de type apprentissage automatique pour effectuer ces calculs à notre place, en étant moins biaisé par notre expérience et nos connaissances ? Ce serait vraiment génial. Il existe une méthode qui peut nous aider : Fused Lasso. Elle fait partie de la boîte à outils des méthodes de régression modernes avancées. C'est un outil accessible grâce à la régression généralisée. La régression généralisée est une fonctionnalité de JMP Pro. C'est une méthode de régression pénalisée.
Par le passé, cette méthode a été évoquée comme une méthode permettant de trouver des points de changement. Elle repose sur des calculs mathématiques complexes et des concepts relativement complexes pour localiser ces points de changement dans les données. Il faut rappeler qu'il y a dix ans, Clay Barker avait présenté cette idée lors d'une de ses conférences sur Genreg, la détection des points de changement et le lasso fusionné.
Je pense que c'est une de ces choses qui ont fini par être une note de bas de page, et c'est vraiment important. J'utilise ce sujet depuis quelques années, mais je constate que peu de gens le connaissent. Je suis pendu à chaque mot prononcé par Clay Barker ; c'est mon héros. Mais peut-être pas pour tout le monde.
À ce stade, vous vous dites peut-être : « Hé, Byron, j’aimerais que tu mettes un peu la pression. Des méthodes de régression modernes avancées ? Genreg ? Je suis un peu désespéré, car tu parles de JMP Pro et de calculs mathématiques très complexes que je n’ai pas envie de suivre. » En réalité, ce n’est qu’un tout petit peu compliqué. C’est relativement facile à mettre en place, et tu peux mettre en place un système de détection de signaux qui pourrait présenter un avantage par rapport aux méthodes plus simples.
Pour rappel, la plateforme de partitionnement de JMP est utilisée depuis longtemps. En indiquant le temps comme X et Y, quelles que soient les réponses observées, vous pouvez l'utiliser pour identifier les points où la moyenne a évolué, surtout si vous utilisez un programme régularisé, comme le numéro de ligne. Cette plateforme est très efficace pour identifier les points de décalage des données de processus, comme un décalage de la moyenne. Elle peut identifier certains de ces points d'arrêt. Elle est très performante.
Il y a quelques petits problèmes. Si les points d'arrêt sont trop proches, il ne les trouve pas. Si le bruit est trop important, il ne les trouve pas. S'il y en a beaucoup, il risque de ne trouver que le premier et pas les suivants. Mais c'est une idée vraiment intéressante, car ce que vous faites, tout comme le lasso fusionné, c'est essayer de trouver les voisins des groupes dont les moyennes sont similaires, puis de trouver les différences de moyennes. C'est exactement ce qui se passe avec la partition.
Pour revenir à ces techniques de régression avancées, il nous faut configurer une structure de données spéciale avec une instruction JSL très simple, bref, pas vraiment simple, qui va générer une matrice. Voici à quoi ressemble cette matrice, illustrée ici sur la diapositive. Imaginez une matrice diagonale dont la première colonne contient uniquement des 1, la suivante zéro, puis uniquement des 1. La colonne suivante contient zéro, zéro, puis uniquement des 1. Nous avons une colonne pour chaque ligne que nous souhaitons analyser dans notre tableau de données.
Si nous avons cent lignes de données, nous obtenons cent colonnes. Si nous avons mille lignes de données, nous obtenons mille colonnes dans cette matrice diagonale. Pour simplifier, je l'appellerai plus tard la matrice de découverte, mais c'est un terme inventé, totalement erroné. Cela me convient, cependant.
Auparavant, nous pouvions utiliser cette matrice de découverte et la plateforme de partitionnement pour faire la même chose. La détection des ruptures était ainsi beaucoup plus sensible, car nous trouvions telle colonne correspondant à une variation de la moyenne. Cette colonne correspond à la ligne de l'ensemble de données. Cela fonctionnait très bien et était assez simple à configurer.
JMP a beaucoup évolué ces dernières années. L'une de mes fonctionnalités préférées dans JMP est le criblage prédictif. Ce criblage permet de construire de nombreux arbres, puis d'en faire la moyenne.
Bon, voici l'essentiel. Dans le criblage prédictif, on crée, disons, 100 arbres, et on prélève un échantillon aléatoire de colonnes de la matrice de découverte et un échantillon aléatoire de lignes de mes données, en examinant simplement un échantillon aléatoire de mon Y que j'essaie d'expliquer. On construit un arbre. On répète l'opération encore et encore.
En fait, la partie où un décalage est proche d'un autre décalage n'apparaît pas dans tous les arbres. Nous pouvons identifier ces décalages proches les uns des autres. Nous pouvons en trouver de nombreux dans cet ensemble de données. Cela résout certains problèmes liés au partitionnement : impossible de trouver des éléments proches les uns des autres et de ne pas trouver plus de quelques décalages s'ils se produisent. Cela nous permet d'en trouver beaucoup plus.
J'ai mis en place un environnement sandbox pour tester son bon fonctionnement. Qu'est-ce que c'est que d'être petit, et à quoi ressemble mon environnement sandbox ? Je veux identifier les changements 1-2 Sigma. Je veux identifier les changements systématiques. C'est comme ce que je fais avec les expériences de fabrication accidentelles ou les changements de matières premières. Ils ne nous ont pas fait perdre le contrôle, mais ils ont peut-être légèrement décalé la situation. Lorsque cette quantité de matière est perdue, la situation redescend. Ce sont de minuscules changements qui se produisent pendant l'exécution de notre processus, et cela me permet de revenir en arrière et d'en diagnostiquer certains. Je veux des changements très mineurs.
Imaginez un peu : dans mon bac à sable, j'ai environ 200 lignes. Sur les cent premières lignes, j'ai un décalage à 33 plus 1, puis un décalage à 66 - 1. Imaginons que j'ai une moyenne de 3, que je passe à 4, puis que je revienne à 3, ce qui correspond à ma moyenne. Du bruit est associé à cela. Voilà une image vraiment nette et agréable. Vous regardez ça et vous vous dites : « Bon, Byron, si tu commences à examiner des données comme ça, je peux trouver ça tout le temps. » Bon, mais je te dirai le piège à la fin.
Dans la zone bleue, je n'ai aucun décalage. Les 100 premières lignes ont un décalage défini. La deuxième ligne est vide. C'est là que se trouve le bruit. Je ne devrais jamais rien trouver dans cette section, et je devrais toujours trouver un décalage aux lignes 33 et 66.
C'est assez audacieux d'affirmer que j'ai une méthode qui permet de faire cela lorsque le signal est facile à trouver. Mais imaginons que mes données ressemblent à ceci : j'ai plusieurs milliers d'ensembles de données. Ils sont tous superposés. Il y a un flou, et je cherche toujours à trouver ce décalage entre 33 et 66. En moyenne, on peut toujours regarder ces données et se dire : « Oui, Byron, je vois bien que c'est là. » Mais certaines de ces données vont se décaler très nettement, d'autres non, et d'autres encore n'auront que du bruit ou des déplacements aléatoires dans cette section bleue. Dans quelle mesure suis-je capable de détecter un changement ou de ne pas en détecter ?
Voici un exemple pour clarifier les choses. Vers 33, lors du premier changement, je vois, rien qu'en le regardant, que quelque chose a augmenté. Mais lors du deuxième changement, c'est comme une tendance à la baisse. Ce n'est pas très clair. Dans mon cas, sans dérive, ou vers la fin, est-ce que ça augmente ? Ou y a-t-il une tendance en dents de scie ? Je n'en suis pas sûr. Ces changements ne sont peut-être pas très faciles à voir ou à détecter.
Bon, je vais être un peu nerveux et vous montrer à quoi ça ressemble en pratique, puis nous reviendrons pour évaluer certains résultats. Voilà ma boîte à outils. J'ai un échantillon aléatoire de données, et celle-ci présente un décalage vers le haut, indiqué par une ligne rouge, et un décalage vers le bas, également indiqué par une ligne rouge. C'est juste un graphique de contrôle des données. Rien qu'en le regardant, j'aurais du mal à dire : « Oui, il y a vraiment quelque chose. »
Je descends ici et je regarde une carte de contrôle CUSUM. Les lignes violettes indiquent les endroits où des décalages pourraient se produire. On voit clairement, alignées avec les lignes rouges, que CUSUM détecte ce décalage. En modifiant les valeurs K, H et Sigma, je peux augmenter la sensibilité. Fixons-la à 0,15. En modifiant la valeur K, je peux la réduire encore davantage. Je ne trouve pas 66, mais quelque chose se situe ici, entre 80 et 90. Cela indique qu'il se passe quelque chose. Mais c'est un bon test.
Je peux descendre ici et voir mon graphique EWMA. Je vais l'agrandir un peu. J'ai mon curseur Lambda, et je peux le modifier. Si je vais ici, il n'y a plus de mémoire. Si je vais ici, il n'y a que de la mémoire. C'est à peu près comme un graphique CUSUM. Je l'ai dit, et je sais que certains utilisateurs de cartes de contrôle vont m'écouter. Ne me mettez pas à la porte pour ça, mais c'est comme ça. Ici, en diminuant ou en augmentant Lambda, je peux identifier des points de variation autour de 33, mais je ne trouve rien autour de 66.
Examinons la troisième méthode. J'utilise ici le filtrage des prédicteurs et je viens de créer un petit diagramme de Pareto. Dans ce filtrage, j'ai configuré ma matrice de découverte. Nous pouvons examiner rapidement l'ensemble de données. Non, je ne vais pas examiner l'ensemble de données. Croyez-moi, il est là. Ce que je vois ici est la première hypothèse. Elle indique qu'il pourrait y avoir un décalage à la ligne 33, et l'hypothèse numéro 2, le rang numéro 2, est 65. Nous voyons quelque chose ici à 142, puis 35, puis 40, puis 80, puis 70. Nos premières hypothèses sont tout à fait justes.
J'ai tracé sur ce graphique une ligne bleue pour chacune des lignes indiquées dans l'écran de prédiction. La proportion expliquée correspond à l'épaisseur de la ligne bleue. On voit : « Je pense que nous voyons quelque chose autour de 33, et je pense que nous voyons quelque chose autour de 65. » Cette méthode détecte assez bien ce décalage dans la moyenne au fur et à mesure, car vous pouvez voir ce point ici. Si vous l'ignoriez complètement, il semblerait qu'il y ait un décalage de ceci par rapport à ceci. Mais notre œil le détecte, et les autres méthodes le détectent aussi, et tentent de l'inclure. Mais il n'était pas inclus dans tous les arbres, ce qui nous permet de trouver ce décalage, ce qui est plutôt intéressant.
À quelle fréquence cela fonctionnera-t-il correctement ? J'aimerais le savoir. Je vais revenir à PowerPoint. Reprenons. J'ai simulé des milliers de données individuelles de cet ensemble. Chacune était aussi bruyante que les autres, certaines faciles à détecter, d'autres plus difficiles, mais il y en avait des milliers. J'ai exécuté le profileur de prédiction sur chacun de ces ensembles de données, j'ai capturé les 10 premiers rangs et j'ai vérifié si la ligne sélectionnée était correcte.
Voici ce que j'ai constaté. La plupart du temps, nous choisissons des points très proches, voire exacts, des points de basculement que nous avons définis. Très rarement, nous choisissons des points situés dans ce bruit au-delà de 100, où je suis sûr que rien ne se passe. Il semble que cela fonctionne plutôt bien.
Examinons quelques statistiques. Ceci concerne 8 000 sandbox différents. D'ici la phase de découverte, ce nombre sera probablement plus important. Avec un criblage prédictif, nous n'utilisons que 100 arbres et nous avons examiné les 10 premiers rangs. Nous avons obtenu une fenêtre de plus ou moins 3 : 33 à plus ou moins 3 et 66 à plus ou moins 3. Le système a-t-il sélectionné dans cette plage ? Pour les deux, être simultanément dans le top 10, 95 % du temps, oui. Le système a trouvé 33, le décalage à 33, 90 % du temps, et le 66, 92 % du temps. Il les trouve plutôt bien, ce qui est fantastique.
Dans ce graphique, j'essaie d'exprimer cette notion de sensibilité et de spécificité. Dans le dépistage des prédicteurs, nous obtenons les 10 premiers rangs, les 10 premiers éléments. Je me demande : est-ce dans la fenêtre de plus ou moins 3 ou dans la fenêtre de plus ou moins 12 ? Quel pourcentage de fois ? Le premier choix était presque toujours le bon. Dans le bruit, le premier choix, ou surtout les cinq premiers, apparaissait très rarement. C'est une méthode plutôt efficace et assez sensible.
Conclusions. Premièrement, la détection de petits décalages est accessible par de multiples méthodes dans JMP, mais l'idée d'utiliser l'approche du lasso fusionné est fantastique. Un petit œuf de Pâques sera intégré au Graph Builder de JMP 19, l'une des personnalités de la ligne. Je n'en suis pas certain, mais je vous le ferai découvrir à la sortie de la version 19. Ces méthodes avancées sont assez simples, car il suffit d'utiliser un script pour générer cette matrice de découverte. Sans aucun réglage, cette approche du lasso fusionné fonctionne très bien. Il suffit d'un peu de compétence et de nombreuses opportunités.
Y aura-t-il un script que je pourrai utiliser pour faire ça moi-même ? Allez-vous partager cet outil Sandbox ? Oui. D'ici la sortie de Discovery, il y aura un module complémentaire vraiment pratique. Vous pourrez sélectionner vos données, utiliser l'outil Sandbox et l'outil Explorer pour plusieurs méthodes de détection de décalage. Je republierai également le script que Clay a utilisé pour créer cette matrice Discovery. J'espère que ce sera utile, ou du moins divertissant. J'espère vous voir à Discovery. Si vous me croisez dans le couloir, dites-moi bonjour. Je serai là.
À plus tard. Restez vigilants.