Ein Deep Dive in die Anomaliedetektion
Als Nachwuchsforscher bei der Bundesanstalt für Arbeitsschutz und Arbeitsmedizin (BAuA) und PhD-Student am Lehrstuhl für Data Science und Data Engineering (LS 9) von Prof Müller an der TU-Dortmund arbeite ich derzeit an einem Projekt zur Entwicklung eines Assistenzsystems für die Gefährdungsbeurteilung. Hier möchte ich einen Einblick in meine Arbeit, insbesondere meine erste Veröffentlichung zur Anomaliedetektion, geben.
Ein Beitrag von Arn Baudzus
In dem Projekt geht es darum, ein Assistenzsystem für die Gefährdungsbeurteilung zu konstruieren. Das Werkzeug soll Daten, die von Sensoren in einem Betrieb gemessen werden, so aufbereiten, dass sie für Arbeitsschutzexpertinnen und -experten bei der Gefährdungsbeurteilung nutzbar sind.
Aus der Data-Science-Perspektive bewegen wir uns hier im Bereich der Zeitreihenanalyse. Besonders interessant ist für uns die Zeitreihenanomaliedetektion. Die vorgestellte Forschung entstand zusammen mit Bin Li und Prof. Emmanuel Müller vom Lehrstuhl für Data Science und Data Engineering der TU Dortmund und Dr. Adnane Jadid von der BAuA.
Ein Einblick in die Anomaliedetektion
Kommunikationstechnologie und Sensorik leben wir in einer Welt, in der die meisten Geräte um uns herum Daten erzeugen. Moderne Autos haben dutzende Sensoren, die einzelne Funktionen des Antriebs überwachen, Fitnesstracker bieten die Möglichkeit, unsere körperliche Aktivität aufzuzeichnen, und mit Smart-Home-Technologie lässt sich der Energieverbrauch eines Haushaltes detailliert aufschlüsseln.
Bei all diesen Daten handelt es sich um Zeitreihendaten – also Daten, die den Verlauf einer oder mehrerer Größen mit der Zeit zeigen. Um jedoch aus dieser Flut von Daten nützliche Informationen ziehen zu können, müssen die Daten zuvor verarbeitet werden.
Eine Möglichkeit, die Daten zu verarbeiten, bieten Algorithmen zum Auffinden von Abweichungen, sog. Anomaliedetektionsalgorithmen. Eine Anomalie in den Betriebsdaten einer Maschine kann z. B. auf einen Defekt hindeuten.
Auch wir bei der BAuA interessieren uns für Anomaliedetektionsalgorithmen, da das Erkennen von Anomalien im Arbeitskontext Experten dabei unterstützen kann, Gefahren zu erkennen. Ein paar Beispiele für solche Anomalien:
- An einem besonders heißen Tag könnten die Arbeitsbedingungen in einer Arbeitsstätte suboptimal sein.
- Ein plötzlicher Defekt an einer Maschine könnte zur abnormalen Feinstaubentwicklung führen.
- Wenn zur gleichen Zeit mehrere Maschinen in der gleichen Halle eingeschaltet sind, kann es zur abnormalen Lärmentwicklung kommen, die während einer Beurteilung des Arbeitsplatzes nicht aufgefallen wäre.
Anomalien aufzufinden ist also oft von Interesse. In Abbildung 1 sind einige Beispiele für Anomalien zu sehen:
Abb. 1: Einige Beispiele für Anomalien in Zeitreihen. Von links nach rechts: Der erste Graph zeigt einen einzelnen Wert, der ausreißt. Diese Anomalie könnte man auffinden, indem man z. B. den Mittelwert der Punkte und die Standardabweichung mit den einzelnen Punkten vergleicht. In der Mitte: Ein Bruch in einem periodischen Muster. Dieser ist schon schwieriger zu entdecken. In dem rechten Beispiel handelt es sich um eine Anomalie, die nur dann offenkundig wird, wenn man zwei Zeitreihen miteinander vergleicht. Zwei Reihen, die sich sonst immer ähnlich verhalten, tun dies auf einmal nicht mehr. Beide Zeitreihen isoliert sehen normal aus.
Im ersten Beispiel (Abb. 1 links) ist die Anomalie ein Wert, der deutlich größer ist als die ihn umgebenden Werte. Im zweiten Beispiel (Abb. 1 Mitte) ist es ein Bruch in einem wiederkehrenden Muster. Im dritten Beispiel (Abb. 1 rechts) weicht der Verlauf einer Größe von einer anderen Größe ab, die sonst immer gleich verlaufen.
Anomalien können viele Formen haben. Für Menschen sind Anomalien oft einfach zu erkennen. Mit einem Computerprogramm ist das komplizierter. Um ein klassisches Computerprogramm zur Detektion von Anomalien zu implementieren, müssen die Anomalien mit mathematischen Methoden auf eine Weise beschrieben werden, die der Computer erkennen kann. Das verlangt Fingerspitzengefühl und Wissen – sowohl über das System, das die Zeitreihe generiert, als auch in der Mathematik.
Praktisch wäre ein Algorithmus, der einfach die Zeitreihe einliest und Anomalien dann automatisch erkennt, ohne dass ein Programmierer exakt charakterisieren muss, wie eine Anomalie aussieht. Also ein Algorithmus, der auf viele Zeitreihen aus unterschiedlichen Systemen angewandt werden kann.
Algorithmen aus dem Bereich des maschinellen Lernens sind hier vielversprechende Kandidaten. Diese funktionieren vom Prinzip her immer ähnlich: Anstatt direkt zu lernen, eine Anomalie zu erkennen, lernen die Algorithmen, den Normalzustand des Systems nachzubilden. Dieses gelernte Modell des Normalzustands kann dann verglichen werden mit dem tatsächlichen Systemzustand. Wenn die Abweichung von Modell und tatsächlichen Daten zu groß ist, so handelt es sich bei der Stelle der Abweichung wohl um eine Anomalie.
Eine Familie von Algorithmen, die nach diesem Prinzip arbeiten, sind die rekonstruktionsbasierten Algorithmen (skizziert in Abb. 2):
Abb. 2: Ein Sinnbild für einen rekonstruktionsbasierten Anomaliedetektionsalgorithmuns.
Im Zentrum steht ein Modell, dessen Aufgabe es ist, ein Stück Zeitreihe einzulesen und dieses Stück Zeitreihe genau gleich auszugeben. Das Modell beinhaltet einen Informationsflaschenhals. Ein solcher Flaschenhals kann z. B. erzeugt werden, indem man ein neuronales Netz anlegt, in dem die Neuronenzahl zur Mitte hin kleiner wird, und sich am Ende wieder ausdehnt. Die einzige Möglichkeit, die das Modell hat, die Zeitreihe am anderen Ende des Flaschenhalses wieder auszugeben, ist, aus der Eingabe einen Satz von Merkmalen zu errechnen, die in der Lage sind, die gesamte Eingabe zu beschreiben. Der hintere Teil enthält dann Mechaniken, um aus diesen isolierten Informationen wieder den Anfangszustand zu rekonstruieren. Wenn der Normalzustand, der gelernt werden soll, z. B. nur aus konstanten Zeitreihen besteht, so genügt es, sich den Wert dieser Konstanten zu merken, um die komplette Zeitreihe zu beschreiben. Im Falle des maschinellen Lernens werden die Teile des Modells darauf trainiert, den Normalzustand nachzubilden. Die Heuristik ist nun, dass das Modell eine Anomalie nicht oder nicht vollständig rekonstruieren kann, da es darauf nicht trainiert wurde. Durch Vergleich des Rekonstruktionsfehlers eines unbekannten Segments mit dem Fehler, den das Model normalerweise macht, erhalten wir also ein Kriterium, um die Abnormalität des Segments zu bewerten.
Anomaliedetektion: Welcher Algorithmus ist der beste für welche Aufgabe?
Es gibt viele verschiedene Umsetzungen des oben beschriebenen Konzepts. Allein die Anzahl der Konzepte aus der Mathematik, die in Frage kommen, um das Modell zu realisieren, ist groß.
Uns stellte sich also die Frage, ob es einen Algorithmus gibt, der sich am besten eignet für die Daten, die im Arbeitsschutz eine Rolle spielen (z. B. Sensordaten moderner Gebäudetechnik), um diese auf Anomalien zu prüfen. Aber: Wie prüft man überhaupt, ob ein Algorithmus besser ist als ein anderer?
Es lässt sich nicht allgemeingültig definieren, was eine Anomalie ist. Etwas, das für ein System völlig normal ist, ist für ein anderes System eventuell abnormal: Wenn es in Sibirien schneit, ist das keine Besonderheit. Im Amazonasdelta hingegen würde das gleiche Ereignis wahrscheinlich für mehr Aufsehen sorgen. Deshalb gibt es im Moment nur die Möglichkeit, einen Algorithmus mit der menschlichen Leistung zu vergleichen. Wenn die Frage also ist, welcher Algorithmus am besten geeignet ist, Anomalien in den Telemetriedaten von Automotoren zu finden, bleibt uns nichts anderes übrig, als einen Satz von Telemetriedaten zu nehmen, der von Menschen erkannte Anomalien enthält, und zu schauen, wie viele dieser Anomalien der Algorithmus erkennt.
Wenn wir uns aber für die Frage interessieren, ob es einen Algorithmus gibt, der allgemein besser ist als ein anderer, dann ist das gängige Vorgehen, eine Menge an Testdatensätzen zu nehmen, die alle Anwendungen der Industrie abdecken, und die Algorithmen darauf basierend vergleichen. Dieses Testen ist sehr rechenleistungsintensiv und kann mitunter selbst mit starker Hardware mehrere Wochen dauern.
Unser Ansatz
Wir haben uns also gefragt, ob es eine Möglichkeit gibt, die Datensätze besser auszuwählen. Vielleicht gibt es ja Datensätze, in denen die Anomalien schwieriger zu finden sind als in anderen. Dann müsste man nur noch auf diesen Datensätzen testen und nicht mehr auf allen.
Unsere primäre Forschungsfrage ist also: Wie identifiziert man die relevanten Datensätze? Wir wollten daher schauen, ob es eine Möglichkeit gibt, die Test-Datensätze auf eine kleinere Menge zu reduzieren, mit der sich die gleiche Aussage treffen lässt.
Unser Ansatz war dabei folgender: Wir haben einen Satz von Kennzahlen gesucht, mit dem sich ein Datensatz eindeutig beschreiben lässt. Diesen Kennzahlen sollten keine Annahmen zu Grunde liegen, aus welchem Kontext die Daten stammen. Sie sollten allerdings Informationen über den Normalzustand und die Anomalien enthalten. Idealerweise sehen wir bei schlau gewählten Kennzahlen einen Zusammenhang zwischen der Leistung des Algorithmus auf einem Datensatz und der Kennzahl des Datensatzes.
Daher erschien es uns sinnvoll, statistische Kennzahlen aus der Informationstheorie zu benutzen: Entropie und Transinformation. Beide Größen lassen sich numerisch schätzen und setzen wenige Annahmen über die zugrundeliegenden Daten voraus. Die Entropie nach Shannon ist der Erwartungswert der statistischen Information, die mit einer Zufallsgröße verbunden ist. Die Transinformation ist ein Maß für den Zusammenhang zwischen einer Zufallsgröße und einer anderen. Dementsprechend haben wir die Kennzahlen so entwickelt, dass wir den Datensätzen mathematisch gesehen quasi zwei Fragen stellen.
Indem wir die Entropie von Daten ohne Anomalien berechnen, fragen wir:
"Wie viele Informationen sind zu lernen, um den Normalzustand zu begreifen?"
Indem wir die Transinformation zwischen Daten die Anomalien enthalten und solchen, die keine enthalten, berechnen, fragen wir:
"Wie groß ist der Unterschied zwischen dem normalen und dem abnormalen Zustand, der gefunden werden muss?"
Damit diese Fragen jedoch "an die Daten gestellt werden können", fehlt noch ein Zwischenschritt. Bei der Berechnung der Transinformation und der Entropie wird davon ausgegangen, dass die Werte, die zur Berechnung verwendet werden, Werte einer Zufallsgröße sind, die irgendeiner statistischen Verteilung folgt. Wenn wir also einfach die Werte der Zeitreihe ohne Zeitstempel zur Berechnung verwenden, ignorieren wir die Information, dass diese Werte Teil einer zusammenhängenden Zeitreihe sind. Genau das macht allerdings das besondere an Zeitreihendaten aus. Um diesen zeitlichen Kontext zu berücksichtigen, haben wir uns daher für einen Vorverarbeitungsschritt entschieden. Anstatt direkt Entropie und Transinformation der Werte zu bestimmen, berechnen wir zuerst die Fouriertransformation der Zeitreihen. Die Fouriertransformation liefert die Parameter von Sinus- und Cosinusfunktionen, die addiert werden müssten, um die Zeitreihe darzustellen. Dieser Satz von Parametern enthält die zeitliche Abhängigkeit. Durch die drei angewandten mathematischen Konzepte erhält unsere Kennzahl ihren Namen: FEMI-Index (Fourier Entropy Mutual Information-Index).
Um nun zu schauen, ob es einen Zusammenhang zwischen den Kennzahlen und der Leistung des Algorithmus gibt, haben wir mehrere Algorithmen auf 128 Datensätzen getestet.
Abb. 3: Jeder Punkt in der Abbildung repräsentiert einen Datensatz, eingeordnet nach FEMI-Index. Die Farbe kodiert die Leistung eines Anomalieklassifikationsalgorithmus auf diesem Datensatz. Bis auf einige Ausreißer scheinen alle Datensätze, die im unteren linken Viertel des Diagramms eingeordnet sind, gut verarbeitet worden zu sein. Der Index bietet also einen Hinweis auf die Performanz des Algorithmus.
Dabei hat sich gezeigt, dass der Index für eine grobe Einsortierung, welche der Datensätze weniger relevant sind als andere, geeignet scheint.
Irren ist menschlich
Bevor der Index als Werkzeug in der Praxis eingesetzt werden kann, gibt es allerdings noch einige Dinge die geklärt werden müssen: Wie genau ist dieser Zusammenhang zwischen der Entropie und der Transinformation mit dem Algorithmus und wieso gibt es für viele Datensätze einen Zusammenhang zwischen der Leistung des Algorithmus und dem Index? Was unterscheidet die Datensätze, für die diese Beobachtung abweicht (z. B. der dunkle Punkt bei Entropie -27 und bei Transinformation -22 in Abb. 3) vom Rest?
Vor lauter Freude darüber, einen Zusammenhang zwischen unseren Kennzahlen und der Leistung des Algorithmus zu sehen, ist uns zunächst entgangen, dass die errechneten Zahlen für Entropie und Transinformation nicht negativ sein dürfen. Wir hatten angenommen, dass Entropie nur in Systemen, die im physikalischen Sinne geschlossen sind, positiv sein muss und für Transinformation, die sich aus der Entropieformel herleiten lässt, folglich ähnliches gelten muss. Das ist allerdings nicht so (per Definition der Entropieformel ausgeschlossen). Entropieänderung kann in nicht geschlossenen Systemen negativ sein, wohingegen die Entropie immer positiv sein muss.
Daher haben wir weitergefragt, wie es eigentlich zu der negativen Entropie kommen kann und ob unsere Ergebnisse dadurch irrelevant oder falsch sind.
Die negative Entropie:
Wir haben den Schätzer für die Entropie nicht selbst implementiert. Entropie für gemessene Größen schätzen ist gar nicht so leicht, da sich Entropie immer auf die der Messgröße zugrundeliegende Verteilfunktion bezieht. Die kennt man im Allgemeinen aber nicht. D. h. man braucht irgendeinen Weg, um die Verteilfunktion zu schätzen. Bei Betrachtung einer eindimensionalen Zufallsgröße sind z. B. die Abstände benachbarter Messpunkte invers proportional zu der Verteilfunktion. Mit solchen Tricks lässt sich eine Formel ableiten. Man kann diese Intuition auf mehrere Dimensionen verallgemeinern, indem man die 1D-Abstände durch die Abstände der nächsten Nachbarn ersetzt. Dabei stellt sich jedoch eine Frage: Wie viele Nachbarn verwende ich zur Schätzung? Das ist ein Parameter, den man in der Implementierung, die wir für die Schätzung der Entropie verwendet haben, selber setzen muss. Das haben wir leider nicht getan. Und der vorgegebene Standardwert, den wir in der Implementierung verwendet hatten, ist eins. Nur einen Nachbarn für die Distanzschätzung zu verwenden, sorgt für ein Resultat, dass numerisch instabil ist. Daher die negativen Werte.
Ist das Ergebnis dadurch ungültig?
Unserer Meinung nach nicht, da die Position des Datensatzes bezüglich des Indexes reproduzierbar ist. Und damit auch die Assoziation mit der Leistung des Algorithmus. Das Verwenden der numerisch instabilen Werte macht die theoretische Interpretation unserer Ergebnisse allerdings nicht leichter. Wir haben noch nicht probiert, was für alle Datensätze passiert, wenn man die Anzahl der nächsten Nachbarn erhöht. Ab ~15 werden die Standardabweichungen wesentlich kleiner und die Werte kommen in einen positiven Bereich.
Wir sind mit den hier angemerkten (und noch weiteren) Fehlern so umgegangen, dass wir sie in der Veröffentlichung dokumentiert haben. Unserer Meinung nach ist es sehr wichtig, alle getroffenen Entscheidungen, alle Fehler und Ergebnisse gut und nachvollziehbar in der Veröffentlichung zu dokumentieren.
Die Reviewer mögen etwas übersehen, aber so hat man zumindest die Möglichkeit, die Menschen, die diese Forschung reproduzieren wollen, vor bösen Überraschungen zu schützen.
Trotz der offenen Fragen denke ich, dass unsere Publikation ihren Platz im wissenschaftlichen Diskurs hat. Die Idee, mit grundlegenden mathematischen Überlegungen Daten zu bewerten und diese Überlegungen mit maschinellem Lernen zu verbinden, ist innovativ.
Zum Schluss ein Ausblick
In der Richtung Informationstheorie und maschinelles Lernen gibt es unserer Meinung nach noch viel zu tun. Ein möglicher Ausgangspunkt dieser Erkundung kann die hier beschriebene Arbeit sein. (Zum Volltext geht's hier: https://dl.acm.org/doi/abs/10.1145/3638209.3638226)
Zitiervorschlag
Baudzus, Arn, 2024. Von anomalen Daten und menschlichen Fehlern - Ein Deep Dive in die Anomaliedetektion [online]. Dortmund: Bundesanstalt für Arbeitsschutz und Arbeitsmedizin. Verfügbar unter: https://www.baua.de/DE/Forschung/Projektblogs/KI-Blog/Artikel/KI-Anomaliedetektion.html