Rapport de Stage de Fin d’Etudes Présenté par : Mahamadou Klanan Diarra Parcours Ingénierie mathématique Majeure Ingénierie Mathématique Pour l’Entreprise 06 mai - 31 octobre, 2019 Machine learning pour le diagnostic des éoliennes offshore INSA ROUEN, Laboratoire d’Informatique, de Traitement de l’Information et des Systèmes (LITIS) Directeur de stage : Prof. Gilles Gasso Sorbonne Université - Paris 6 Table des matières 1 Introduction 2 2 Contexte du stage 2.1 Siemens Gamesa . . . . . . . . . . . 2.2 Environnement de travail . . . . . . . 2.3 Éolienne : histoire et fonctionnement 2.4 Formulation du problème . . . . . . . . . . . 4 4 4 5 8 3 Déroulement du stage 3.1 Problématique du stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Implémentation & Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 10 11 4 Études des modèles 4.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Kernel change detection . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 One class svm . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Algorithme du kernel change detection . . . . . . . . . . . . 4.3 Discrépance moyenne maximale (maximum mean dicrepancy MMD) 4.3.1 MMD dans un espace de Hilbert à noyau reproduisant . . . . . . . . . 12 12 13 14 17 20 21 . . . . . . . 24 24 26 26 28 28 29 32 . . . . . . . . 5 Évaluation 5.1 Données . . . . . . . . . . . . . . . . . . 5.1.1 Feature extraction . . . . . . . . 5.2 Test sur des lois de probabilités . . . . . 5.3 Test sur des données simulées d’éoliennes 5.3.1 Pré-traitement des données . . . 5.3.2 Stratégie de mise en œuvre . . . . 5.3.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Conclusion 37 A Annexes 39 1 Table des figures 1.1 La part de l’éolien dans la production d’électricité en France en 2017 et dans le monde en 2016. Ces représentations sont issues du site internet d’EDF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Moulin-cabine à corps mobile. Robert Philippe (1982)[2] . . . . . . . . 6 2.2 Différentes parties d’une éolienne[3] . . . . . . . . . . . . . . . . . . . . . 7 2.3 A droite la nacelle d’une éolienne onshore. Sa particularité est qu’elle munie de boite de vitesses car le générateur plus petit est placé à l’intérieur de la nacelle contrairement à une éolienne offshore dotée d’un plus gros générateur placé entre le rotor et la nacelle. Les éoliennes offshore de Siemens Gamesa ne sont pas munies de boites de vitesses . . . . . . . . . . . . . . . . . . . 4.1 8 Illustration du transfert des données non linéairement séparable via la fonction Φ(·) aussi appelée feature map . . . . . . . . . . . . . . . . . . . 13 4.2 Illustration du OC-SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Les données sont telles que k(xi , xi ) = c. Trouver l’hyperplan est équivalent à trouver la sphère de rayon minimale qui entoure une certaine proportion des données. Cette illustration est extraite du livre Learning with kernels (voir référence [1], p. 234) 4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . Influence des paramètres ν et γ sur la région estimée par le OC-SVM. Les points rouge sont en dehors de la région et sont jugés atypiques . . . . . 4.5 16 17 Principe de la fenêtre glissante, on veut tester la présence d’un changement à partir de xt . Cette illustration est extraite du papier An online kernel change detection algorithm. (voir référence [2], p. 3) . . . . . . . . . 2 18 4.6 Illustration du OC-SVM correspond aux deux fenêtres d’observations. Cette illustration est extraite du papier An online kernel change detection algorithm. (voir référence [2], p. 8) . . . . . . . . . . . . . . . . . . . . . 5.2 Accélérations de la nacelle et des pales. Cet exemple simule un changement de vitesse du vent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 19 24 Vibration latérale de la pale. Cette vibration entraîne celle de la nacelle lorsque la pale est aligné suivant l’axe de l’éolienne. . . . . . . . . . . . . 25 5.3 Fréquences des pales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.4 Données simulées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.5 Graphiques des tests réalises sur des simulations de différentes lois de probabilités comparées à la loi normale centrée réduite . . . . . . . . . . 5.6 Pré-traitement : la figure de gauche représente les signaux d’entrées, celle de droite les signaux de sorties . . . . . . . . . . . . . . . . . . . . . . . . 5.7 27 29 Illustration de la stratégie de détection : les rectangles représentent les spectrogrammes des 3 pales, At,N , Bt,N et Ct,N représentent les sous matrices de N colonnes prélevées sur les spectrogrammes respectivement à l’itération t. 30 5.8 Les Spectrogrammes des signaux pré-traités . . . . . . . . . . . . . . . . 5.9 KCD : le graphique de gauche représente les comparaisons des pales deux à deux, celui de droite la moyenne . . . . . . . . . . . . . . . . . . . . . . 31 31 5.10 MMD : le graphique de gauche représente les comparaisons des pales deux à deux, celui de droite la moyenne . . . . . . . . . . . . . . . . . . . . . . 32 5.11 Accélérations et fréquences des pales, défaut sur la pale B à partir de 5400.0. Le défaut s’amplifie progressivement. . . . . . . . . . . . . . . . . . . . . 34 5.12 Signaux pré-traités à gauche, spectrogrammes à droite . . . . . . . . . . 34 5.13 KCD à gauche, MMD à droite. La ligne rouge représente le seuil. . . . . . 34 5.14 Accélérations et fréquences, défaut : 11000 . . . . . . . . . . . . . . . . . 35 5.15 Spectrogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.16 Gauche : KCD, droite : MMD . . . . . . . . . . . . . . . . . . . . . . . 35 3 5.17 Accélérations et fréquences test 3, défaut : 5400 . . . . . . . . . . . . . . 36 5.18 Spectrogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.19 Gauche : KCD, droite : MMD . . . . . . . . . . . . . . . . . . . . . . . 36 1 Exemple d’utilisation, les points noirs sont tirés d’une distribution normale centrée et réduite, les points violets quant à eux sont d’une distribution normale de moyenne (1,1) mais de même variance. La mesure calculée est affichée en bas du graphe. . . . . . . . . . . . . . . . . . . . . . . . . . . 4 44 Résumé La détection de pannes sur les éoliennes est un défi majeur pour les contrôleurs de ces dispositifs. En effet la problématique a suscité de nombreux travaux et bon nombre d’approches tant statistiques que purement mécaniques ont été développées. Cet engouement pour les dispositifs éoliens est d’une part dû au paradoxe entre le besoin croissant d’énergies et les défis écologiques auxquels nous faisons face et d’autre part le coût de maintenance de ces dispositifs et la difficulté d’accès aux zones d’implantations. L’objectif de ce travail est d’implémenter des modèles de machine learning qui permettent de diagnostiquer la présence ou non de défauts sur les éoliennes offshore. Remerciements Avant d’aller plus loin dans ce rapport, il m’est très agréable d’exprimer ma reconnaissance envers les personnes qui m’ont apporté leur soutien que ce soit technique et moral dans l’élaboration de ce travail. Je présente mes profonds respect et reconnaissance au Prof. Gilles Gasso, mon directeur de stage, de m’avoir permis de travailler sur un sujet aussi passionnant, pour son enseignement et le temps qu’il m’a consacré. Je tiens également à ajouter que chacune de nos réunions était pour moi un réel plaisir, et ne faisait que m’encourager à approfondir mes connaissances en machine learning. Mes sincères remerciements vont également à tout le personnel du LITIS particulièrement à mon voisin de bureau Dr. Mathieu Bourgais pour ces conseils et tout le temps qu’il m’a consacré. Mes respects à toute l’équipe de Siemens Gamesa pour leur accueil très chaleureux, particulièrement mon contact au sein de l’équipe Mr. Panousis Panagiotis pour sa gentillesse et son enseignement. Un merci très spécial aux enseignants de la Sorbonne Université, des personnes qui m’ont transmis leur savoir au cours de ces deux dernières années. J’estime leur travail au plus haut point. Un très grand merci aux responsables du majeur Ingénierie Mathématique Pour l’Entreprise ainsi que mes sincères salutations à mes camarades de promotions. Je ne saurai conclure cette partie sans une pensée envers ma famille et mes amis, qui, à travers leur soutien omniprésent me permettent d’aller de l’avant et faire du mieux. 1 Introduction 85.2% de la consommation d’énergie dans le monde serait de nature fossile[1] . Compte tenu des enjeux écologiques, on s’oriente de plus en plus vers des moyens de production d’énergies renouvelables. Parmi les différents moyens de production d’énergies vertes entre autres le solaire, l’hydraulique, la biomasse.., l’éolien occupe une place importante. (a) (b) Figure 1.1 – La part de l’éolien dans la production d’électricité en France en 2017 et dans le monde en 2016. Ces représentations sont issues du site internet d’EDF. La production d’énergie éolien dépend intrinsèquement de la force du vent mais aussi du système de contrôle mis en œuvre sur ces dispositifs. Ce système de contrôle, outre maintenir la production à un niveau optimal, doit permettre de détecter des pannes le plus rapidement possible et mettre le dispositif hors service pour éviter une détérioration complète du matériel. D’ou l’objet de ce projet qui vise à mener une investigation des modèles de détection par les méthodes du machine learning en vue d’une intégration dans le système de contrôle. 2 Dans le premier chapitre nous posons le contexte du stage, décrivons l’environnement de travail, donnons en bref un historique et le principe de fonctionnement d’une éolienne pour finir par une formalisation du problème. Au second nous donnons un récapitulatif des différentes étapes du stage. Les chapitres 3 et 4 de ce rapport s’attellent à décrire les modèles étudiés, la stratégie de détection mise en œuvre et à présenter les résultats obtenus. Nous finissons évidemment par une conclusion et d’éventuelles perspectives. 3 Contexte du stage 2.1 Siemens Gamesa Siemens Gamesa est une société européenne fondée en 2017 suite à la fusion de Siemens Wind Power et de Gamesa. Avec plus de 40 ans d’expérience Siemens Gamesa est l’un des principaux fournisseurs mondiaux de produits, solutions et services dans le domaine de l’énergie éolienne. Siemens Gamesa c’est plus de 90.6 GW installés, 23000 employés et 9.1 Mrd euro de chiffre d’affaire. Le département R&D de la section Load & control de Siemens Gamesa France a ses locaux dans l’un des bâtiments de l’INSA de Rouen. C’est une équipe constituée de 10 chercheurs dont les études portent sur les phénomènes aérodynamiques, étude des charges qui s’exerce sur les éoliennes, sur l’amélioration du système de contrôle des dispositifs éoliens. 2.2 Environnement de travail Ce stage intervient dans le cadre d’un projet R&D qui vise à intégrer des modèles de machine learning dans le contrôle des éoliennes offshore. Le travail s’est tenu au sein du Laboratoire d’Informatique, de Traitement de l’Information et des Systèmes (LITIS) sous la direction du Prof. Gilles Gasso. Le champ d’application des études menés au LITIS est très vaste et utilise en grande partie les technologies de l’intelligence artificielle et aussi les méthodes multi-agents. Ma mission au sein de cette entité consistait dans un premier temps à comprendre le sujet, faire une bibliographie 4 des méthodes de traitement existantes, en implémenter quelques unes et étudier leurs performances. 2.3 Éolienne : histoire et fonctionnement Les éoliennes sont ce qu’on nomme des aérogénérateurs c’est à dire des dispositifs convertissant l’intensité du vent en énergie électrique. Les éoliennes sont inspirées des moulins à vent (voir image 2.1) apparus au VII siècle en Perse. On doit la première éolienne génératrice d’électricité à l’inventeur américain Charles Francis Brush qui construisit en 1888 une éolienne dotée de 144 pales pour alimenter sa maison en électricité. La première éolienne industrielle est due au danois Poul La Cour en 1891. Une éolienne est composée de plusieurs parties essentielles : le mat qui est une tige verticale de hauteur variable selon le type d’éolienne et la capacité de production ; le mat est solidement ancré sur une structure stable (fondation), la nacelle est fixée au sommet du mat et contient les composantes mécaniques et électroniques nécessaires au fonctionnement de l’éolienne, la nacelle peut tourner dans le plan horizontal pour se mettre face au vent, le rotor correspond au nez rotatif de la nacelle sur lequel est fixé les pales au nombre de trois généralement. Pour ce qui est du fonctionnement, sous l’effet du vent les pales se mettent en mouvement circulaire entraînant le rotor qui à son tour met en mouvement un aimant autour ou dans une bobine. C’est une explication très brève du fonctionnement de l’éolienne, car en effet, la nacelle contient bon nombre de composantes mécaniques qui interviennent dans le processus et il y a tout un système de contrôle qui coordonne en réalité ces mouvements. 5 Figure 2.1 – Moulin-cabine à corps mobile. Robert Philippe (1982)[2] 6 Figure 2.2 – Différentes parties d’une éolienne[3] 7 Figure 2.3 – A droite la nacelle d’une éolienne onshore. Sa particularité est qu’elle munie de boite de vitesses car le générateur plus petit est placé à l’intérieur de la nacelle contrairement à une éolienne offshore dotée d’un plus gros générateur placé entre le rotor et la nacelle. Les éoliennes offshore de Siemens Gamesa ne sont pas munies de boites de vitesses 2.4 Formulation du problème Le système de contrôle permet un monitoring de l’éolienne basé essentiellement sur du traitement (physique) du signal dans le sens où la méthode consiste à déterminer les fréquences de vibration des pales et à calculer l’écart entre ces fréquences. Formellement, soit FA , FB et FC les fréquences des trois pales. L’hypothèse de cette méthode est qu’en fonctionnement normal, les trois pales ont des fonctionnements semblables vu que leurs matériaux sont les mêmes (masse et raideur) et qu’elles sont soumises au même mouvement. En cas de défauts, fissure sur une pale par exemple, la fréquence de cette dernière change. Considérons les signaux suivants : dif f FA = FA − 0.5 ∗ (FB + FC ) dif f FB = FB − 0.5 ∗ (FA + FC ) dif f FC = FC − 0.5 ∗ (FA + FB ) 8 (2.1) Ces trois éléments doivent être stables autour de 0. Si l’un de ces signaux est en dehors d’un certain intervalle définie par [−ψ, ψ] avec ψ > 0, on est face à un défaut sur l’une des pales. Les méthodes présentées dans ce rapport partent d’une formulation différente. Considérons un processus (machine qui remplit des sachets de café, voix de personnes participant à un débat...) qui génère des données au cours du temps x0 , x1 , · · · , xt . La détection de ′ changements ou de défauts à l’instant t dans un tel processus se formule sous forme d’un test d’hypothèse comme suit : xt,1 = (x0 , ..., xt′ −1 ) ∼ P et xt,2 = (xt′ , ..., xt ) ∼ Q H0 : P ∼ Q (2.2) H1 : P ≁ Q P et Q sont deux lois de distributions inconnues en pratique. L’hypothèse H0 étant qu’il n’y a aucun changement dans le processus, les données sont distribuées de la même ′ manière avant et après l’instant t . Le problème se ramène à trouver une statistique de test T (xt,1 , xt,2 ) et un seuil η > 0 telle que : H0 : T (xt,1 , xt,2 ) ≤ η (Pas de changement) ′ H1 : T (xt,1 , xt,2 ) > η (changement détecté à t ) (2.3) Dans ce rapport nous présenterons deux méthodes qui partent de cette formulation : Kernel Change Detection et Maximun Mean Discrepancy. 9 Déroulement du stage Dans ce chapitre nous décrivons les différentes phases de déroulement du stage. Ce travail s’est déroulé au sein du LITIS (Laboratoire d’Informatique, de Traitement de l’Information et des Systèmes) sur un projet R&D de Siemens Gamesa de ce fait en étroite collaboration avec l’équipe de recherche Load & control de l’entreprise. 3.1 Problématique du stage La première étape du stage a consisté à comprendre la problématique et ma mission. Au fur à mesure des différentes réunion avec mon directeur de stage et l’expert métier, ma mission s’est précisée et mes connaissances sur le dispositif éolien se sont accrues considérablement. En effet, c’était une étape constituée de plusieurs réunions d’explication : du problème, de ma mission, du dispositif éolien. C’était également une étape d’intégration, de présentation : à l’équipe de Siemens Gamesa, aux personnels du LITIS, mes voisins de bureau. 3.2 Bibliographie Ma mission étant définie, l’étape suivante consistait à identifier des méthodes. Il s’agissait de faire une bibliographie des modèles de détection par machine learning, deux méthodes ont été suggérés par mon directeur de stage : Kernel change detection et le 10 Discrépance moyenne maximale (Maximum mean discrepancy). Ces méthodes ont été choisies pour leurs natures non paramétriques, non supervisées et également pour leurs bonnes propriétés théoriques. Il existe bien évidemment d’autres approches qui peuvent être paramétriques et/ou supervisés [8]. 3.3 Implémentation & Test La phase d’implémentation a occupé la grande partie de la durée du stage. Il a fallu d’abord installer Python et les packages de base pour commencer (numpy, pandas, matplotlib, sklearn) le reste des packages nécessaires a été installé au fur à mesure des besoins. Deux classes ont été codées Kernel_Change_Detection que nous avons fait hérité de la classe OneClassSVM (OC-SVM) de la bibliothèque sklearn.svm ce qui facilite son initialisation, maximum_mean_discrepancy, ainsi qu’un module de fonctions utiles. Le test des modèles implémentés a été réalisé sur des données simulées de lois de probabilités (Normale, Laplace) avant de passer aux données simulées d’éoliennes. 11 Études des modèles Dans ce chapitre nous détaillons les modèles de détection implémentés tout au long de ce projet. Nous commençons par introduire la notion d’espace de Hilbert à noyau reproduisant, nous décrivons ensuite le premier modèle Kernel Change Detection (KCD) où nous parlerons du one class support vector machine (OC-SVM) et détaillons les calculs qui conduisent à la statistique de test proposée par cette méthode nommée : mesure de dissimilarité. On conclut le chapitre avec la seconde méthode la discrépance moyenne maximale (Maximum Mean Discrepancy : MMD). 4.1 Préambule Definition. [Bernhard Schökopf and Aexander J. Smola, 2001 [1]] Soient X un ensemble non vide et H l’espace de Hilbert des fonctions f : X −→ R. H est un espace de Hilbert à noyau reproduisant, muni d’un produit scalaire h·, ·i induisant une norme (kf kH = q hf, f i), s’il existe une fonction (noyau) k : X × X −→ R avec les propriétés suivantes : 1. reproduction : hf, k(x, ·)i = f (x), ∀f ∈ H 2. k engendre H : H = vect{k(x, ·)|x ∈ X } De cette définition on tire en particulier : k(x, ·) : X −→ R ; hk(x, ·), k(y, ·) = k(x, y) H est entièrement déterminé par k, à chaque noyau correspond un espace de Hilbert 12 Figure 4.1 – Illustration du transfert des données non linéairement séparable via la fonction Φ(·) aussi appelée feature map (reproducing kernel Hilbert space RKHS) : ′ ′ ′ hk(x, ·), k (y, ·) = k(x, y) = k (y, x) = k (x, y). Notons Φ(x) = k(x, ·). La notion d’espace de Hilbert à noyau reproduisant est énormément utilisée en apprentissage automatique en particulier dans les algorithmes de type SVM (support vector machine). L’idée consiste à transférer les données dans un espace de dimension plus grande (dim(H) >> dim(X )) voir même infinie (espace de fonctions) de sorte que le problème soit facile à résoudre. L’exemple classique est celui de la classification, qui cherche un hyperplan {ω ∈ X , ω0 ∈ R|hω, xi + ω0 = 0} qui sépare efficacement les données dans le cas de la classification binaire. Dans le cas de problème non linéairement séparable, ils sont transférées dans un espace de Hilbert à noyau reproduisant (voir figure 4.1) via le feature map Φ : X −→ H. L’hyperplan à déterminer est alors {W ∈ H, W0 ∈ R|hW, Φ(x)i + W0 = 0}. Les propriétés de cet espace font que la résolution du problème ne dépendra plus de la dimension de l’espace en question (k(x, y) = hΦ(x), Φ(y)i). 4.2 Kernel change detection Dans cette section nous présenterons la méthode KCD proposée par Desobry et al. (2004). La méthode s’appuie sur l’algorithme du One Class SVM décrit ci-dessous. 13 4.2.1 One class svm Soit X = (x1 , · · · , xn ) ⊂ X où n est le nombre d’observations, X l’espace des observations (input space). H est un espace de Hilbert à noyau reproduisant (feature space) et k(·, ·) le noyau associé. On définit Φ : X −→ H tel que : k(x1 , x2 ) = hΦ(x1 ), Φ(x2 )i. Des exemples de fonction noyau sont : — le noyau linéaire (linear kernel) : k(x1 , x2 ) = hx1 , x2 i — le noyau polynomial d’ordre d : k(x1 , x2 ) = (hx1 , x2 i + c)d avec c ≥ 0 −x2 k — le noyau gaussien (RBF kernel) : k(x1 , x2 ) = exp − kx12γ 2 2 Le One class svm (OC-SVM) est un algorithme de classification non supervisé qui trace le contour d’un certain niveau λ de la distribution des données (i.e. {x ∈ X /f (x) = λ}) où f est la densité (inconnue) de distribution des données, l’ensemble {x ∈ X /f (x) ≥ λ} constitue notre classe unique (one class) et toute observation en dehors est considérée comme aberrante. Figure 4.2 – Illustration du OC-SVM Le principe de l’algorithme consiste à projeter les données sur la surface d’un hypersphère de rayon fixé grâce à l’astuce du noyau (kernel trick) et à trouver l’hyperplan optimal qui sépare les données mappées du centre de l’hypersphère. On peut 14 donc supposer sans perte de généralité (quitte à normaliser) que le noyau est tel que k(x1 , x1 ) = hΦ(x1 ), Φ(x1 )iH = kΦ(x1 )k2H = 1 c’est le cas du noyau gaussien par exemple. Formellement il s’agit de trouver l’hyperplan {Φ(x) ∈ H : hω, Φ(x)iH − ρ = 0} avec ω ∈ H et ρ > 0 de sorte que hω, Φ(x)iH − ρ ≥ 0 pour une certaine proportion des données. Pour ce faire il y a lieu de résoudre le problème d’optimisation : min ω∈H,ρ>0,ξ∈Rn n 1 X 1 ξi − ρ kωk2 + 2 νn i=1 sous la contrainte : hω, Φ(x)iH ≥ ρ − ξi , ∀i = 1, · · · , n où les ξi sont des variables d’écart (slack variable) et 0 < ν ≤ 1 la constante de relaxation qui contrôle l’influence des erreurs ( n1 La fonction de décision : i=1 ξi ). Pn f (x) = sgn(hω, Φ(x)iH − ρ) Le lagrangien du problème avec comme multiplicateurs αi , βi > 0, i = 1, · · · , n est donné par : X X 1 1 X βi ξi L(ω, ρ, ξ, α, β) = kωk2 + αi (hω, Φ(x)iH − ρ + ξi ) − ξi − ρ − 2 νn i i i La réécriture du problème sous les conditions KKT donne le problème dual : minn α∈R X αi αj k(xi , xj ) i,j sous les contraintes : 0 ≤ αi ≤ X 1 ; αi = 1 νn i Les paramètres de l’hyperplan sont donnés par : ω = 15 P i αi Φ(xi ), ρ = P i αi k(xi , xj ) Figure 4.3 – Les données sont telles que k(xi , xi ) = c. Trouver l’hyperplan est équivalent à trouver la sphère de rayon minimale qui entoure une certaine proportion des données. Cette illustration est extraite du livre Learning with kernels (voir référence [1], p. 234) . Autre formulation Une formulation équivalente du OC-SVM, plus accessible, consiste à chercher la sphère de rayon minimal R qui englobe les données (voir figure 4.3). Formellement le problème se pose comme suit : minR∈R,c∈H,ξ∈Rn R2 + 1 νn Pn i=1 ξi , 0<ν≤1 Sous la contrainte : kΦ(xi ) − ckH ≤ R2 − ξi , ξi ≥ 0, i = 1, · · · , n Le dual, minα∈Rn P i,j αi αj k(xi , xj ) − P sous les contraintes 0 ≤ αi ≤ i αi k(xi , xi ), i, j = 1, · · · , n 1 ; νn P i αi = 1 Pour k(xi , xi ) = cte on retrouve la formulation précédente du dual du OC-SVM. Choix du noyau Le noyau gaussien (rbf kernel) est le meilleur choix pour ce algorithme. En effet il n’y a pas lieu de le normaliser. Il se pose alors le problème du choix des paramètres γ et ν 16 qui sont cruciaux pour un meilleur résultat comme on peut le voir sur la figure ci-dessous. Figure 4.4 – Influence des paramètres ν et γ sur la région estimée par le OC-SVM. Les points rouge sont en dehors de la région et sont jugés atypiques Pour de petites valeurs de ν le nombre de points en dehors de la région estimée par le OC-SVM diminue et inversement. L’influence de γ sur la région estimée est également remarquable, de grandes valeurs causent un problème de sur-apprentissage et inversement les petites valeurs causent un problème de sous-apprentissage. Différents travaux ont traité du sujet [3], [4], ce n’est pas l’objet de ce présent travail. 4.2.2 Algorithme du kernel change detection Dans cette section nous décrivons l’algorithme de la méthode KCD qui s’appuie sur le OC-SVM pour proposer une statistique qui reflète le degré de ressemblance entre les contours estimés sur deux séries d’observations. L’algorithme utilise le principe de fenêtre glissante sur les données. 17 Figure 4.5 – Principe de la fenêtre glissante, on veut tester la présence d’un changement à partir de xt . Cette illustration est extraite du papier An online kernel change detection algorithm. (voir référence [2], p. 3) . La procédure est la suivante : on prends deux fenêtres de taille m1 et m2 d’échantillons respectifs xt,1 et xt,2 , on calcule la dissimilarité entre les contours estimés sur ces deux séries d’observations. Cette mesure sera comparée à un seuil η et la décision devient : H0 : D(xt,1 , xt,2 ) ≤ η (Pas de changement) H1 : D(xt,1 , xt,2 ) > η (changement detecté à t) Mesure de dissimilarité Le calcul de cette mesure se base sur des arguments de géométrie dans le feature space (H) et part de l’idée suivante : si deux échantillons xt,1 = (x1 , · · · , xn ) et xt,2 = (y1 , · · · , yn ) sont issus d’une même distribution les contours estimés sur ces deux échantillons doivent être similaires, donc une valeur qui prétend refléter leur dissimilarité doit être proche de 0 et inversement. Soient xt,1 et xt,2 nos deux fenêtres précédentes, (ωt,i , ρt,i ) les coefficients des hyperplans respectifs, pt,i l’intersection de l’hyperplan et l’hypersphère, ct,i l’intersection de la normale à l’hyperplan passant par le centre O et l’hypersphère, et, ρt,i kωt,i k la distance entre l’hyperplan et centre O de l’hypersphère i = 1, 2. Ces notions sont illustrées sur la figure 4.6. 18 Figure 4.6 – Illustration du OC-SVM correspond aux deux fenêtres d’observations. Cette illustration est extraite du papier An online kernel change detection algorithm. (voir référence [2], p. 8) . La mesure de dissimilarité s’exprime comme suit : ⌢ ct,1 ct,2 D(xt,1 , xt,2 ) = ⌢ ⌢ ct,1 pt,1 + ct,2 pt,2 ⌢ \ Oct,2 ), le produit ct,1 ct,2 désigne la longueur de l’arc (i.e. l’angle entre ct,1 et ct,2 : ct,1 scalaire ente ct,1 et ct,2 s’exprime en fonction de ce dernier : \ hct,1 , ct,2 i = kct,1 kH kct,2 kH cos(ct,1 Oct,2 ) en notant que ct,i = ωt,i kωt,i kH =⇒ kct,i kH = 1 on obtient ; \ hct,1 , ct,2 i = cos(ct,1 Oct,2 ) \ =⇒ ct,1 Oct,2 = arccos(hct,1 , ct,2 i) hωt,1 , ωt,2 i = arccos kωt,1 kH kωt,2 kH 19 ! des conditions KKT on a : ωt,i = P i αi Φ(xi ) ; T αt,1 k(xt,1 , xt,2 )αt,2 hωt,1 , ωt,2 i q =q T T kωt,1 kH kωt,2 kH αt,1 k(xt,1 , xt,1 )αt,1 αt,2 k(xt,2 , xt,2 )αt,2 ⌢ Un calcule similaire nous donne l’expression de ct,i pt,i , i = 1, 2 : ⌢ ct,i pt,i = arccos q ρt,i T αt,i k(xt,i , xt,i )αt,i Théorème. [Desobry et al., 2004 [2]] Soit x = (x1 , · · · , xn ) un échantillon i.i.d selon la loi p(·) une mesure de probabilité de moyenne µ, définie sur X . Soit k(·, ·) un noyau tel que : k(x, y) = exp(−λkx − ykX ) avec λ > 0 Alors avec probabilité 1 le centre c donné par le OC-SVM sur x converge vers µ = Φ(µ) quand n −→ ∞. 4.3 Discrépance moyenne maximale (maximum mean dicrepancy MMD) Dans cette section nous présentons la seconde méthode implémentée pour la détection de changement. Nous verrons l’intérêt de l’espace de Hilbert à noyau reproduisant dans l’étude de ce problème, définissons la mesure de discrépance et son estimateur. Definition. Discrépance moyenne maximale Soient F la classe des fonctions f : X −→ R. p et q deux mesures de probabilité et x ∼ p, 20 y ∼ q. La discrépance moyenne maximale entre p et q est définie par : M M D[F, p, q] = sup (Ep [f (x)] − Eq [f (y)]) f ∈F Soit X = (x1 , · · · , xn ) et Y = (y1 , · · · , yn ) deux échantillons i.i.d respectivement selon p et q. Un estimateur sans biais est donné par : 1X 1X M M D[F, X, Y ] = sup f (xi ) − f (yi ) n i n i f ∈F ! 4.3.1 MMD dans un espace de Hilbert à noyau reproduisant Dans cette section nous présentons la discrépance moyenne maximale en considérant F comme la boule unité d’un espace de Hilbert à noyau reproduisant {f | kf kH ≤ 1} : M M D[F, p, q] = sup (Ep [f (x)] − Eq [f (y)]) kf kH ≤1 Le développement des calculs requiert l’introduction d’un élément crucial noté µp . A chaque mesure de probabilité p définie sur X est associée un unique élément de H µp tel que Ep [f ] = hf, µp i sous les conditions : Ep [f ] = Z f (x)p(x)dx = Z k(·, ·) mesurable (4.1) q Ep [ k(x, x)] < ∞ f (x)hp, k(x, ·)idx = Z f (x)hp, k(x, ·)idx = En d’autre termes, on a que : µp = Ep [k(x, ·)]. Lemme. Arthur Gretton et al. (2012) 21 Z f (x)Ep [k(x, ·)]dx Sous les conditions énoncées ci-dessus en 4.1 on a : " #2 sup (Ep [f (x)] − Eq [f (y)]) kf kH ≤1 = kµp − µq k2H En effet : 2 MMD = = " " #2 sup (Ep [f (x)] − Eq [f (y)]) kf kH ≤1 #2 sup hµp − µq , f i kf kH ≤1 = kµp − µq k2H Estimateur Dans cette section nous donnons l’estimateur du MMD. En se plaçant dans la boule unité de H un RKHS, nous avons exprimé M M D[F, p, q]2 avec p et q deux mesures de probabilité définies sur X comme kµp − µq k2H . Les propriétés de H permettent d’écrire [Arthur Gretton et al. (2012)] : M M D[F, p, q]2 = kµp − µq k2H = hµp , µp iH + hµq , µq iH − 2hµp , µq iH ′ ′ = Ep,p [k(x, x )] + Eq,q [k(y, y )] − 2Ep,q [k(x, y)] ′ ′ avec x, x ∼ p et y, y ∼ q. Il s’en déduit un estimateur sans biais avec X = (x1 , · · · , xn ) i.i.d selon p et Y = (y1 , · · · , yn ) i.i.d selon q : M M D[F, X, Y ]2 = n X 1 h(xi , xj , yi , yj ) n(n − 1) i6=j où h(xi , xj , yi , yj ) = k(xi , xj ) + k(yi , yj ) − k(xi , yj ) − k(xj , yi ). — Le MMD est un test de distribution sur deux échantillons et le problème de la 22 détection de changement peut se formuler sous forme d’un test d’hypothèses voir 2.2. Pour employer le MMD en détection on utilise là encore le principe de la fenêtre glissante (voir figure 4.5). 23 Évaluation Dans ce chapitre nous présentons les résultats des tests réalisés sur des données simulées et des données d’éoliennes. Nous présenterons la stratégie mise en œuvre pour adapter les modèles à notre cas d’étude. Mais avant quelques mots sur les données dont on dispose. 5.1 Données Pour ce projet nous avons travaillé sur les accélérations des pales de l’éolienne. L’intensité du vent soumet les pales à des vibrations latérales (voir figure 5.1). Les pales dans leur mouvement entraînent la nacelle et par le biais d’un capteur les accélérations de la nacelle sont enregistrées. (a) Accélération de la nacelle (b) Accélérations des trois pales A, B et C Figure 5.2 – Accélérations de la nacelle et des pales. Cet exemple simule un changement de vitesse du vent. L’accélération de la nacelle est démodulée pour extraire celles des pales selon l’expression : xt = ut ∗ cos(ψt + αt ) où ψt représente l’angle azimutal de la pale c’est à dire l’angle 24 Figure 5.1 – Vibration latérale de la pale. Cette vibration entraîne celle de la nacelle lorsque la pale est aligné suivant l’axe de l’éolienne. entre la position de la pale à l’instant t et sa position initiale. αt représente l’angle et la position initiale de la pale et l’axe vertical de l’éolienne. Après filtrage des accélérations par une boucle à verrouillage de phase (PLL : phaselocked loop) on obtient les fréquences de vibration des pales (figure 5.3). Figure 5.3 – Fréquences des pales 25 5.1.1 Feature extraction Pour extraire la caractéristique (feature) que nous exploitons, nous utilisons la transformée de Fourier à court terme (short-time Fourier transform (stft)) des accélérations des pales. L’intérêt de cette transformée de Fourier est qu’elle conserve, contrairement à la transformée de Fourier classique, le séquencement temporel du signal ce qui nous permet d’apprécier l’énergie instantanée des fréquences qui le compose. La méthode consiste à calculer la transformée de Fourier classique sur des fenêtres locales du signal d’entré. Le stft[4] est définie par : Xm (ω) = ∞ X x(n)w(n − mR)e−jωn n=−∞ Où x(·) : désigne le signal d’entré w(·) : la fonction qui détermine la fenêtre locale, à analyser, du signal R : la taille du saut entre deux fenêtres consécutives. Plus précisément le calcul fonctionne selon le principe de la fenêtre glissante. Soit N la taille de la fenêtre et M le chevauchement entre deux fenêtres consécutives, alors R = N − M . Pour extraire cette caractéristique nous utilisons la fonction stft de la bibliothèque scipy.signal de python. 5.2 Test sur des lois de probabilités Dans un premier temps nous comparons la loi N (0, 1) à d’autres lois (normale de moyenne et/ou de variance différentes, Laplace) (voir figure 5.4). Sur la figure 5.5b sont reportées les valeurs des statistiques de test des deux modèles implémentés. On distingue très clairement le cas sans changement (courbe bleue) des cas avec un changement (voir figure 5.5b). 26 Figure 5.4 – Données simulées (a) Kernel change detection (b) Discrepance moyenne maximale Figure 5.5 – Graphiques des tests réalises sur des simulations de différentes lois de probabilités comparées à la loi normale centrée réduite Remarquez sur la figure 5.5b qu’on arrive à bien distinguer, pour les deux modèles, le cas sans changement (loi normale centrée réduite contre elle même, courbe bleue) des autres cas. Ce qui traduit la capacité des modèles implémentés à, effectivement, détecter des changements. 27 5.3 Test sur des données simulées d’éoliennes Dans cette section nous présentons les résultats obtenus sur des données simulées d’éoliennes. Nous disposons de 4 cas tests dont 3 simulent des pannes. Mais avant quelques mots sur la stratégie mise en œuvre pour adapter les modèles étudiés à notre cas d’étude. 5.3.1 Pré-traitement des données Les signaux sur les lesquels nous travaillons sont composés de plusieurs fréquences qui sont mises en évidence à travers la Transformée de Fourier à temps court. Cependant pour une meilleure efficacité et éviter que le défaut ne soit noyé dans multitude de fréquences, on s’intéresse juste à une petite bande de fréquence qui contient les fréquences réelles des pales. Pour ce faire nous utilisons un filtre passe-bande. Les signaux résultants sont centrés et réduits pour accroître leur amplitude donc l’énergie des fréquences qui les composent. 28 Figure 5.6 – Pré-traitement : la figure de gauche représente les signaux d’entrées, celle de droite les signaux de sorties 5.3.2 Stratégie de mise en œuvre Les méthodes (KCD & MMD) sont conçues pour détecter des changements sur un signal en utilisant le principe de la fenêtre glissante (figure 4.5). Cette stratégie n’est pas adaptée à notre cas, en effet, l’accélération, sujette aux fluctuations du vent varie constamment. En outre, nous ne cherchons pas à détecter un changement sur l’accélération d’une pale mais à détecter une différence significative entre les accélérations des pales (figure 5.7). 29 Figure 5.7 – Illustration de la stratégie de détection : les rectangles représentent les spectrogrammes des 3 pales, At,N , Bt,N et Ct,N représentent les sous matrices de N colonnes prélevées sur les spectrogrammes respectivement à l’itération t. A l’itération t on prélève 3 sous matrices (At,N , Bt,N et Ct,N ) de N colonnes partant de t, sur les 3 spectrogrammes respectivement, nous comparons les pales deux à deux sur la base de ces 3 échantillons prélevés : T (At,N , Bt,N ), T (At,N , Ct,N ) et T (Bt,N , Ct,N ). Nous utilisons comme mesure de dissimilarité la moyenne : T̂ (At,N , Bt,N , Ct,N ) = 1 [T (At,N , Bt,N ) + T (At,N , Ct,N ) + T (Bt,N , Ct,N )] . 3 (5.1) Comme exemple pour illustrer tout ce que nous venons de détailler, prenons le cas sans défauts (figure 5.6), le pré-traitement conserve la bande de fréquences 0.8 - 0.85 Hz (voir figure 5.8). 30 Figure 5.8 – Les Spectrogrammes des signaux pré-traités Figure 5.9 – KCD : le graphique de gauche représente les comparaisons des pales deux à deux, celui de droite la moyenne 31 Figure 5.10 – MMD : le graphique de gauche représente les comparaisons des pales deux à deux, celui de droite la moyenne 5.3.3 Résultats Les résultats présentés ici ont été obtenues sur 3 cas test simulant des pannes. Dans les 3 cas des défauts ont été introduits sur la pale B en changeant sa rigidité. les cas 1 et 3 (figures 5.11 et 5.17) simulent des défauts mineurs qui s’aggravent dans le temps. Cette situation est simulée en changeant progressivement la rigidité du pale B. Le cas 2 (figure 5.14) simule un défaut brutal. La fréquence d’échantillonnage des signaux d’origine (accélérations) est de 10 soit une observation tout les 1 10 de seconde. Les tableaux 5.1 et 5.1 ci-dessous contiennent les données générées suite aux tests réalisés sur les 3 cas de simulations de pannes sur une éolienne. La colonne stft pour Short-Time Fourier Transform représente la taille de l’échantillon pris sur le signal pour constituer une colonne du spectrogramme, elle fait à la taille de la fenêtre (N ) définie dans la section 5.1.1. Le couple (ν, γ) fixé à (0.1,0.1) sont les paramètres du OC-SVM, ce choix a été guidé par de multiples essais réalisés sur les mêmes données. Les seuils ont été fixés post-traitement, en effet le KCD ne présente pas de méthodes de choix du seuil et pour le MMD, bien qu’il présente des théorèmes de convergence, le choix du seuil dépend de la taille des données (N colonnes) mais aussi de certaines notions théoriques que nous 32 n’avons pas pu explorer plus en détails (ce point est abordé dans les perspectives). Le changement commence à l’instant 5400.0 pour les cas 1, 3 et à l’instant 11000 pour le cas 3. Paramètres Cas stft 512 Test 1 1024 256 512 Test 2 1024 256 512 Test 3 1024 256 Seuil (ν, γ) N colonnes 0.22 50 0.14 (0.1,0.1) 20 0.275 50 0.16 50 0.11 (0.1,0.1) 20 0.22 50 0.18 50 0.11 (0.1,0.1) 20 0.25 50 KCD instant de détection retard à la détection 9292.8 3892.8 10393.6 4993.6 9049.6 3649.6 11776.0 776 11827.2 827.2 11772.0 772.0 8960.0 3568.0 9345.6 3945.6 9305.6 3985.6 Table 5.1 – Données générées par le test de la méthode KCD sur les cas test avec différentes combinaisons de paramètres. Paramètres Cas stft 512 Test 1 1024 256 512 Test 2 1024 256 512 Test 3 1024 256 Seuil γ 0.005 1 0.005 1 0.005 1 N colonnes 50 50 50 50 50 50 50 50 50 MMD instant de détection retard à la détection 10316.8 4916.8 9830.4 4430.4 8038.4 2638.0 11750.4 750.4 12288.0 1288.0 11648.0 648.0 10214.4 4814.4 9625.6 4225.6 9689.6 4289.6 Table 5.2 – Données générées par le test de la méthode M M D sur les cas test avec différentes combinaisons de paramètres. Remarquez les instants de détection mais également les retards à la détection. Le retard est plus grand pour les cas 1 et 3, en effet, ces deux cas (figures 5.11 et 5.17) présentent des défauts initial mineurs qui s’amplifient dans le temps. Le défaut ne sera détectable que lorsqu’il sera suffisant pour impacter significativement les accélérations des pales. Contrairement au cas 2 qui présente un défaut brutal détecté rapidement. Cette observation est valable pour les deux méthodes. 33 Test 1 Figure 5.11 – Accélérations et fréquences des pales, défaut sur la pale B à partir de 5400.0. Le défaut s’amplifie progressivement. Figure 5.12 – Signaux pré-traités à gauche, spectrogrammes à droite Figure 5.13 – KCD à gauche, MMD à droite. La ligne rouge représente le seuil. 34 Test 2 Figure 5.14 – Accélérations et fréquences, défaut : 11000 Figure 5.15 – Spectrogrammes Figure 5.16 – Gauche : KCD, droite : MMD 35 Test 3 Figure 5.17 – Accélérations et fréquences test 3, défaut : 5400 Figure 5.18 – Spectrogrammes Figure 5.19 – Gauche : KCD, droite : MMD 36 Conclusion J’ai effectué mon stage de fin d’études d’ingénierie mathématique, à l’INSA Rouen au sein du laboratoire d’informatique, de traitement de l’information et des systèmes (litis), sur un projet R&D de Siemens Gamesa, qui vise à identifier des modèles de machine learning permettant de détecter des changement et les adapter à la détection de pannes sur les éoliennes offshore. Durant ce stage de 6 mois, les compétences acquises au cours de ma formation m’ont permis non seulement de comprendre la problématique formulée scientifiquement et les méthodes mises en œuvre pour y répondre, mais aussi de pouvoir donner une interprétation des équations et mettre en place un système permettant d’adapter les méthodes étudiées à notre cas. Ce stage m’a permis de découvrir le travail en laboratoire, les acteurs, le dialogue avec les experts métiers. Au cours de ce travail, j’ai acquis des compétences en machine learning notamment les algorithmes de type SVM et l’utilisation de la fonction noyau. J’ai aussi acquis des compétences en traitement de signal : le filtrage, la densité spectrale de puissance. Au terme de ce travail nous avons pu répondre à la demande qui consistait à implémenter des modèles de machine learning et les adapter à la détection de pannes sur une éolienne. Le choix du seuil reste, cependant, arbitraire et nécessite pour un meilleur choix une étude approfondie de la statistique définie en 5.1, particulièrement pour modèle MMD qui offre plus de perspectives. 37 Ce qui reste à faire — Mieux analyser la sensibilité des deux modèles aux différents paramètres (instant de détection et retard à la détection en fonction des paramètres du modèles), — Mettre en place une fonction seuil adaptative pour la méthode KCD, par exemple t−1 ηt = Qt−1 + λ(Qt−1 − Qt−1 représente la médiane des mesures à l’instant 2 3 1 ), où Q2 t − 1, Qt−1 − Q1t−1 désigne l’écart inter-quartile à t − 1 et λ > 0.5 une constante. 3 Ainsi la mesure calculée à l’instant t (T̂ (At,N , Bt,N , Ct,N )) sera comparée au seuil ηt , — Avec un calibrage adéquat des paramètres, mettre les modèles en streaming (en continu)), — Explorer d’autres modèles [8]. 38 Annexes 39 Kernel change detection : K e r n e l C h a n g e D e t e c t i o n ( s e l f , k e r n e l = ’ r b f ’ , d e g r e e = 3 ,gamma = 0 . 1 , c o e f 0 = 0 . 0 , t o l = 1 e −3, nu = 0 . 5 , s h r i n k i n g = True , c a c h e _ s i z e = 2 0 0 , v e r b o s e = F a l s e , max_iter = −1, random_state = None ) Les paramètres sont ceux du OC-SVM, pour plus d’information suivre le lien. Pour un utilisateur il y a 4 fonctions essentielles : TrainingOfData ( s e l f , X, Y = None , Z = None ) ComputeDecisionFunction ( s e l f , xx , yy , c l f _ c l u s t e r 1 , c l f _ c l u s t e r 2 = None , c l f _ c l u s t e r 3 = None ) C l u s t e r I n f o ( s e l f , c l f _ c l u s t e r 1 , c l f _ c l u s t e r 2=None ) DissimilarityMeasure ( self , clf_cluster1 , clf_cluster2 ) TrainOfData : Cette fonction entraîne 1 à 3 modèles en fonction des entrés (X, Y, Z) qui sont les échantillons d’entraînements. Calcule des OC-SVM pour chaque entrée : X, Y et Z. 40 Exemple : import D e t e c t i o n T o o l s K i t a s DT import numpy a s np cov = [ [ 1 . , 0 ] , [ 0 , 1 . ] ] X = np . random . m u l t i v a r i a t e _ n o r m a l ( ( 0 , 0 ) , cov , 4 0 0 ) modele = DT. K e r n e l C h a n g e D e t e c t i o n ( nu =0.1) c l f = modele . TrainingOfData (X) Y = np . random . m u l t i v a r i a t e _ n o r m a l ( ( 5 , 1 0 ) , cov , 4 0 0 ) modele2 = DT. K e r n e l C h a n g e D e t e c t i o n ( nu =0.1) c l f , c l f 1 = modele2 . TrainingOfData (X, Y) ComputeDecisionFunction : Cette fonction calcule et affiche la frontière de décision du OC-SVM, à utiliser pour des échantillons d’entraînements 2D. xx , yy = np . meshgrid ( np . l i n s p a c e ( −5 , 5 ,10 0) , np . l i n s p a c e ( −5 , 5 ,10 0) ) z z = modele . ComputeDecisionFunction ( xx , yy , c l f ) ClusterInfo : Cette fonction retourne des informations utilisées dans la celle (DissimilarityMeasure) qui suit. Dans le cas où elle prend en argument un seul classifieur (clf), la fonction retourne la constante qui intervient dans le problème d’optimisation (intercept) ainsi que la matrice noyau construite avec les vecteurs supports du classifieur. Dans le cas de deux classifieurs en entrée (clf1, clf2) elle retourne les coefficients duaux respectifs des deux problèmes d’optimisations ainsi que la matrice noyau construite avec les vecteurs supports des deux classifieurs. rho , k e r n e l _ m a t r i x = modele . C l u s t e r I n f o ( c l f ) 41 a_1 , a_2 , K = modele2 . C l u s t e r I n f o ( c l f , c l f 1 ) DissimilarityMeasure : Celle-ci calcule la mesure introduite par Desobry et al. dans leur article cité plus haut : measure = modele2 . D i s s i m i l a r i t y M e a s u r e ( c l f , c l f 1 ) 42 Exemple complet : import D e t e c t i o n T o o l s K i t a s DT import m a t p l o t l i b . p y p l o t a s p l t import numpy a s np cov = [ [ 1 . , 0 ] , [ 0 , 1 . ] ] x = np . random . m u l t i v a r i a t e _ n o r m a l ( ( 0 , 0 ) , cov , 4 0 0 ) y = np . random . m u l t i v a r i a t e _ n o r m a l ( ( 1 , 1 ) , [ [ 1 . , 0 ] , [ 0 , 1 . ] ] , 4 0 0 ) mod = DT. K e r n e l C h a n g e D e t e c t i o n ( nu = 0 . 1 , k e r n e l = ’ r b f ’ , gamma = 0 . 0 7 ) c l f 1 , c l f 2 = mod . TrainingOfData ( x , y ) print ( " diss : {} " . format (mod . D i s s i m i l a r i t y M e a s u r e ( c l f 1 , c l f 2 ) ) ) xx , yy = np . meshgrid ( np . l i n s p a c e ( −8 , 8 ,10 0) , np . l i n s p a c e ( −8 , 8 ,10 0) ) z z = mod . ComputeDecisionFunction ( xx , yy , c l f 1 ) s s = mod . ComputeDecisionFunction ( xx , yy , c l f 2 ) p l t . c o n t o u r ( xx , yy , zz , l e v e l s = [ 0 ] , l i n e w i d t h s =1, c o l o r s= ’ g r e e n ’ ) p l t . c o n t o u r ( xx , yy , s s , l e v e l s = [ 0 ] , l i n e w i d t h s =1, c o l o r s= ’ g o l d ’ ) p l t . s c a t t e r ( x [ : , 0 ] , x [ : , 1 ] , c= ’ b l a c k ’ , l a b e l = ’ normal 0 , 1 ’ ) p l t . s c a t t e r ( y [ : , 0 ] , y [ : , 1 ] , c= ’ b l u e v i o l e t ’ , l a b e l = ’ normal 1 , 1 ’ ) plt . legend () p l t . show ( ) 43 Figure 1 – Exemple d’utilisation, les points noirs sont tirés d’une distribution normale centrée et réduite, les points violets quant à eux sont d’une distribution normale de moyenne (1,1) mais de même variance. La mesure calculée est affichée en bas du graphe. Maximum mean discrepancy : maximun_mean_discrepency ( s e l f , gamma , b l o c k _ s i z e , n_block = 1 ) Cette classe implémente deux approche basées sur le MMD : l’approche présentée dans ce rapport qui s’adapte mieux à notre cas et une stratégie de détection, basée sur cette dernière, présentée dans le document [9]. — gamma désigne le paramètre de la fonction noyau utilisée en l’occurrence ici il s’agit du noyau gaussien. — block_size désigne la taille de la fenêtre à chaque itération (N colonnes). — n_block représente le nombre de fenêtre à chaque itération, est fixé à 1 pour l’approche présentée dans ce rapport. — 44 mmd_estimator ( s e l f , X, Y) : prend en entrée X et Y de taille block_size et retourne leur MMD. import D e t e c t i o n T o o l s K i t a s DT mod = DT. maximun_mean_discrepency (gamma=1, b l o c k _ s i z e =5, n_block =1) x = np . a r r a y ( [ 1 , 2 , 3 , 5 , 4 , 6 , 8 ] ) y = np . a r a n g e ( 7 ) p r i n t (mod . mmd_estimator ( x , y ) ) 45 Bibliographie [1] Bernhard Schökopf and Aexander J. Smola, 2001, Leaning with Kernels, Cambridge, Massachusetts. The MIT Press. [2] Desobry, F., Davy, M., Doncarli, C., 2005. An online kernel change detection algorithm. IEEE Trans. Signal Process. 53 (5), 2961– 2974. [3] Xiao, Y., Wang, H. ,Zhang, L. ,Xu, W., 2014, Two methods of Gaussian kernel parameters for one class svm and their application to fault detection. ScienceDirect Knowledge-Based Systems, 59, 75 - 84 [4] Wang, S., Liu, Q., Zhu, E., Porikli, F. and Yin, J., 2018 Hyperparameter selection of one class support vector machine by self-adaptive data shifting. ScienceDirect Pattern Recognition, 74, 198 - 211. [5] Arthur Gretton, Karsten M. Borgwardt, Malte J. Rasch, Bernhard Schölkopf, Alexander Smola, 2012, A Kernel Two-Sample Test. Journal of Machine Learning Research, 13 (Mar), 723 - 773. [6] Harchaoui, Z., Lévy-Leduc, C., 2007, Seqmentation temporelle de signaux à l’aide du Lasso. GRETSI, Groupe d’Etudes du Traitement du Signal et des Images, http ://hdl.handle.net/2042/17527. [7] Carmeli, C., De Vito, E.,Toigo, A., Umanita, V., 2018, Vector valued reproducing kernel Hilbertspaces and universality. https ://arxiv.org/pdf/0807.1659t. [8] Truong, C., Oudre, L., Vayatis, N., 2019, Selective review of offline change point detection methods.ScienceDirect Signal Processing, 167, 107299. [9] Li, S., Xie, Y., Dai, H., Song, L., 2018, ScanB-Statistic for Kernel Change-Point Detection. https ://arxiv.org/abs/1507.01279 46