Outlier Detection Advanced

In diesem Artikel soll es ebenfalls um Outlier Detection gehen, allerdings um “angewandte Outlier Detection” oder auch “Outlier Detection in der freien Wildbahn”. Angenommen, man hat bereits ein Machine Learning Modell trainiert und möchte dieses jetzt in einer Echtzeit-Umgebung einsetzen. In diesem Fall gibt es verschiedene Möglichkeiten, an das Thema der Erkennung von Ausreißern heranzugehen – dieser Artikel stellt einige Wege vor.

Weg 1: ein Sample alle n Sekunden #

Angenommen, wir haben eine Anwendung, die Daten von einem Beschleunigungssensor aufnimmt, zum Beispiel zur Bewegungserkennung. Alle paar Sekunden, z. B. alle 3 Sekunden, nehmen wir die gerade aufgenommenen 3 Sekunden an Daten und führen unsere Outlier Detection auf dieser Zeitreihe durch. Dabei kann das Verfahren beliebig aus den bisher vorgestellten Verfahren gewählt werden, also bspw. eine Distribution Based Outlier Detection sein. Diese Herangehensweise erlaubt uns also, die gleiche Outlier Detection und letztendlich auch das gleiche Preprocessing zu verwenden, wie beim ersten Training des Machine Learning Modells. Außerdem kann dieser Ansatz sehr gut mich hochfrequenten Daten umgehen, wie z. B. Beschleunigungsdaten mit mehreren Hundert Hertz. 

Weg 2: jeder einzelne Datenpunkt #

Eine andere Möglichkeit ist, sich jeden einzelnen Datenpunkt zum Zeitpunkt seiner Aufnahme anzuschauen, und sofort (wenn der Punkt “reinkommt”) zu entscheiden, ob es sich um einen Ausreißer handelt oder nicht. Da wir hier unter Umständen ein vielfaches an Rechenpower benötigen, ist dieses Verfahren eher für niederfrequente Zeitreihendaten geeignet, bei denen es nur jede Sekunde oder alle paar Sekunden einen neuen Datenpunkt gibt. Ein verbreitetes Beispiel für solche Daten sind GPS-Daten, bei denen wir nur ca. 1 mal pro Sekunde eine neue Position ermitteln. Bei jedem neuen Datenpunkt den wir erhalten, müssen wir also nur Anhand der letzten Datenpunkte entscheiden, ob es sich bei diesem “neuen” Punkt um einen Ausreißer handelt oder nicht. Hier kann man jetzt unterschiedlich herangehen:

HerangehensweiseBeschreibung
Domain knowledgeWenn wir wissen, wie unsere Daten auszusehen haben, können wir schon viele Punkte als Ausreißer klassifizieren. In diesem Fall bietet sich das Beispiel Herzschlag an: wir wissen, dass die Herzfrequenz in der Regel nicht 200 Schläge/Minute überschreitet, also klassifizieren wir alle Datenpunkte, die deutlich größer als 200 Schläge/Minute sind als Outlier.
Time basedEin weiterer Ansatz ist es festzustellen, dass Ausreißer einem bestimmten Zeitmuster folgen. Wenn man bspw. den GPS-Sensor auf dem Smartphone aktiviert und nach seiner genauen Position sucht, dauert es meistens ein paar Sekunden, bis das Smartphone die genaue Position gefunden hat, und dabei “springt” unsere Position ggf. um einige Meter hin und her. Da bietet es sich an, alle Daten, die in ersten 10 Sekunden nach einschalten der GPS-Antenne aufgenommen wurden, als Outlier zu klassifizieren.
“Distance” basedWenn wir wissen, dass zwei Punkte immer recht nah aneinander liegen, definieren wir eine Distanze-Schwelle, die zwei Punkte maximal auseinander sein dürfen. Wir müssen also immer nur den letzten gesehen Punkt speichern und können diesen dann mit dem nächsten Punkt vergleichen. Wird die Schwelle überschritten, ist der neue Datenpunkt ein Outlier.
RingbufferMöchte man einen Ansatz wie die Distribution Based Outlier Detection verfolgen, gibt es die Möglichkeit, über eine Datenstruktur wie einen Ringpuffer oder eine Pipe die letzten Sekunden an Daten zu speichern, um anschließend auf Basis dieser Daten eine Verteilung zu ermitteln, in die der “neue” Punkt dann reinpasst (= kein Outlier), oder eben nicht (= Outlier).
Herangehensweisen zur Outlier Detection für jeden einzelnen neuen Datenpunkt.

Kombination von Verfahren #

Je nach Art der Daten ist es durchaus auch angebracht bzw. erforderlich, mehrere dieser Herangehensweisen miteinandern zu kombinieren. Bei GPS-Daten könnte man zum Beispiel mit Time based die ersten paar Sekunden herausfiltern, um anschließend über “Distance” based Outlier im laufenden Datenstrom zu erkennen.

Je nachdem, was der Anwendungsfall ist und welche Probleme es zu lösen gibt, kann man die oben genannten Verfahren nutzen oder selbst ein Verfahren entwickeln, um zuverlässig Outlier zu erkennen. Dieser Artikel stellt lediglich eine Auswahl an Möglichkeiten vor, wie man an ein solchen Problem herangehen kann.

Schreibe einen Kommentar