5 Dinge, die man über IoT-Analytics wissen sollte

Anhand eines aktuellen Themas - der Analyse von Feinstaubdaten - zeigt sich sehr gut, was bei IoT Analytics wichtig ist und worauf man achten sollte. [...]

Nicolai Ernst ist Data Engineer bei it-novum. (c) it-novum

Ende Januar fand in Stuttgart der Feinstaub Hackathon statt. Stuttgart gehört zu den am stärksten von der Feinstaubthematik betroffenen Kommunen Deutschlands. Die beim Hackathon verwendeten Daten stammen von Bürgern, die diese frei zur Verfügung stellen. Im Nachgang an den Feinstaub Hackathon habe ich mich etwas intensiver mit den Daten befasst und auf deren Grundlage die folgenden fünf Erkenntnisse für IoT Analytics entwickelt.

1. Täuschende Schlichtheit

Schauen wir uns zunächst die Daten des Sensors an, der die Temperatur misst. Das Ganze sieht zunächst simpel aus: Pro Zeile gibt es einen Zeitstempel und den dazugehörigen Messwert (= die Temperatur). Um die Daten aber richtig interpretieren und mit anderen Sensoren aus dem Netzwerk vergleichen zu können, fehlen weitere Informationen, die nicht direkt von diesem Sensor stammen. Eine dieser fehlenden Informationen wäre zum Beispiel die Position des Sensors: Neben dem Längen- und Breitengrad ist es interessant zu wissen, ob der Sensor drinnen oder draußen steht bzw. ob er direkter Sonneneinstrahlung ausgesetzt ist oder nicht. Diese Informationen werden benötigt, damit der Temperaturwert besser interpretiert werden kann: die exakte Position des Sensors wirkt sich letztendlich auch auf die Messwerte aus.
Erkenntnis: Erst durch die Kombination von mehreren Datenquellen (Data Blending) entsteht ein Datensatz, der sich interpretieren und auswerten lässt. Die reinen Sensoren-Daten haben meist nur wenig Informationsgehalt. Es ist außerdem ratsam, sich in die Dokumentation des Sensors einzulesen, da nicht immer sprechende Spaltennamen für die einzelnen Messwerte vergeben werden.

2. Sinnvolle Frequenz bestimmen

Im Gegensatz zu klassischen OLTP-Systemen (Online Transaction Processing) ergibt sich bei Sensordaten die Möglichkeit, die zu speichernde Datenmenge ohne Informationsverlust zu komprimieren. Der Temperatursensor lässt sich derart konfigurieren, dass er alle 5 Sekunden einen Wert erfasst und speichert bzw. per Bluetooth an einen Empfänger oder über WLan in die Cloud sendet. Als Resultat werden die Daten dann wie folgt angeliefert:

Der Temperatursensor liefert uns also alle 5 Sekunden einen neuen Messwert. Wenn wir davon ausgehen, dass es sich um die Außentemperatur handelt, die erfasst wird, muss man sich an dieser Stelle die folgenden Fragen stellen:
• Ist es sinnvoll, alle 5 Sekunden einen Temperaturwert zu messen?
• Ist es sinnvoll, alle 5 Sekunden einen Temperaturwert zu speichern?

Zu häufiges Messen verringert die Lebensdauer des Sensors. Deshalb kann es ratsam sein, das Intervall zwischen zwei Messpunkten entsprechend anzupassen. Das richtige Intervall zu bestimmen, ist jedoch keinesfalls trivial: ist es zu hoch gewählt, dann können eventuell interessante Beobachtungen verloren gehen, da sie nicht erfasst wurden. Wählt man hingegen ein sehr kleines Intervall, so verkürzt dies die Lebensdauer des Sensors und eventuell interessante Beobachtungen lassen sich in der Masse der Daten schwieriger identifizieren.

Oftmals hat man als Data Engineer nicht die Möglichkeit, direkt Einfluss auf den Sensor und dessen Messintervalle zu nehmen und muss daher die gelieferten Messdaten als gegeben hinnehmen. Man hat aber die Möglichkeit, die Verarbeitungszeit und die zu speichernde Datenmenge zu beeinflussen – ohne Informationsverlust! Eine einfache Komprimierung könnte so aussehen, dass lediglich dann ein Wert vom Empfänger gespeichert wird, wenn sich der Messwert geändert hat – ansonsten wird der Messwert verworfen.

Mit dem Hintergrundwissen, dass lediglich das Delta abgespeichert wird, können die verworfenen Messwerte mit Hilfe des Messintervalls rekonstruiert werden. Der Facebook Inkubator beschreibt in seinem Paper Gorilla: A Fast, Scalable, In-Memory Time Series Database, wie so eine Komprimierung aussehen kann. Durch den beschriebenen Kompressionsalgorithmus lässt sich die zu speichernde Datenmenge um bis zu 90 % reduzieren. Das spart im Endeffekt nicht nur Speicher, sondern verkürzt auch die Verarbeitungszeit. Dadurch sind Analysen in Echtzeit erst möglich.

3: Zuverlässigkeit

Ein Sensor ist meist nicht selbst in der Lage, fehlerhafte Messwerte zu erkennen und entsprechende Gegenmaßnahmen einzuleiten. Das liegt u.a. an der (meist) geringen Rechenkapazität des Sensors, die für umfangreiche Analyseprozesse zur Identifizierung fehlerhafter Werte schlicht nicht ausreicht. Diese Aufgabe muss der Data Engineer während des Analyseprozesses übernehmen.
Auch kann man nicht immer davon ausgehen, dass die Sensoren oder der Empfänger, der die Daten entgegennimmt, zuverlässig funktionieren.

4: Nicht alle Daten sind gleich

4.1: Cross-Sectional Data
Cross-sectional data
Nicht alle Daten lassen sich gleich erheben und auswerten. Grob unterscheidet man zwischen Cross-Sectional und Time-Series Data. Bei Cross-Sectional Data handelt es sich um Daten, die durch die Beobachtung vieler Objekte zum gleichen Zeitpunkt erhoben wurden. Diese Objekte können sein:
• Einzelpersonen
• Firmen
• Filialen
• Länder

Die Analyse besteht in der Regel darin, die Unterschiede zwischen den Objekten zu vergleichen. Sie eignet sich daher nicht für die Auswertung von Feinstaubdaten, wo es ja auf ihre Entwicklung im Zeitverlauf ankommt.
Ich nehme daher ein anderes Beispiel: Wenn wir die Werte für Fettleibigkeit in einer Population bestimmen wollen, können wir 1.000 Personen via Zufallsprinzip aus dieser Bevölkerung extrahieren, deren Gewicht und Größe messen und berechnen, wie viel Prozent der Personen als fettleibig eingestuft werden können. Die Auswahl an Personen lässt sich zufällig treffen, da in der Regel keine Abhängigkeiten zwischen den einzelnen Beobachtungen existieren. Zu beachten ist aber, dass die Analyse lediglich eine Momentaufnahme dieser Population, d.h. zu einem bestimmten Zeitpunkt, darstellt. Wir wissen nicht, ob die Fettleibigkeit zu- oder abgenommen hat, d.h. es lassen sich keine Trends feststellen.

4.2: Zeitreihendaten
Bei Zeitreihendaten (time-series data) handelt es sich um eine Sammlung von Beobachtungen zu einem einzelnen Objekt zu verschiedenen Zeitpunkten. In der Regel sind die Zeitabstände gleichmäßig verteilt, z.B. alle 30 Minuten oder immer am ersten Tag des Monats. Ausnahmen bestätigen auch hier die Regel: die Messungen können natürlich auch unregelmäßig erfolgen. Unser Feinstaubbeispiel fällt also in diese Kategorie.

Time-series data (Zeitreihendaten)
Die Abbildung zeigt gemessene Temperaturwerte (t1, t2, usw.). Sie stammen allesamt vom selben Prozess. Da sich die Temperatur im Zeitverlauf meistens verändert, können die Messwerte nicht unabhängig voneinander betrachtet werden. Im Sommer erreicht die Temperatur gegen Mittag bzw. Nachmittag meist ihren höchsten Wert und sinkt danach wieder. Anhand der zuvor gemessen Werte können wir somit einen Trend für den Temperaturanstieg und -abstieg erkennen und wie stark dieser ausfällt. Das bedeutet, dass es keinen Sinn macht, sich zufällige Werte herauszunehmen und diese miteinander zu vergleichen wie wir es bei Cross-Sectional Data getan haben – die Ansätze unterscheiden sich grundlegend voneinander.
Dadurch dass wir nun ein einzelnes Objekt über einen längeren Zeitraum beobachten, können wir im Gegensatz zu Cross-Sectional Data Trends und saisonale Effekte erkennen. Bei saisonalen Effekten handelt es sich um Entwicklungen, die sich in gewissen Abständen selbst wiederholen. Möchte man nun ein Modell erstellen, mit dessen Hilfe eine mögliche Prognose der zukünftigen Entwicklung getroffen werden soll, gilt es einiges zu beachten:
• Aus dem Zeitstempel lassen sich viele Kennzahlen (im Data Science-Umfeld spricht man auch von Features) ableiten, die für ein Prognosemodell genutzt werden können. Neben offensichtlichen Kennzahlen wie:
o Jahr, Monat, Tag, Stunde, Minute und Sekunde
o Quartal, Kalenderwoche, …
sind vor allem die nicht so offensichtlichen Kennzahlen interessant, z.B.:
• Frequenz, d.h. die Zeit, die zwischen zwei Beobachtungen verstrichen ist. Daraus lässt sich ableiten, ob die Daten in gleichen Zeitabständen gemessen wurden oder nicht.
• Des Weiteren kann nach Mustern gesucht werden, z.B. ob eine Regelmäßigkeit existiert, mit der fehlerhafte Werte auftreten.
Bei all dem darf man eines aber nicht außer Acht lassen: Hat man eine Gesetzmäßigkeit bzw. ein Muster gefunden, mit dem fehlerhafte oder fehlende Werte identifiziert werden können, so kann in Zukunft darauf reagiert werden. Mit anderen Worten, das gefundene Muster hat für die Zukunft keine Bedeutung mehr! So führt der Ersatz fehlerhafter Sensoren durch neue Geräte zu neuen Messergebnissen. Bei der Erstellung des Prognosemodells handelt es sich also um einen fortlaufenden, andauernden Prozess.

5. Wenn Predictive Analytics, dann Vorarbeiten! (Zeitseriendaten)

Wer seine Daten auswerten kann, will meistens mehr als nur historische Daten analysieren. Predictive Analytics sind Verfahren, mit denen auf Grundlage von Daten aus der Vergangenheit Vorhersagen über deren zukünftige Entwicklung getroffen werden können. Zum Einsatz kommen Techniken aus den Bereichen Statistik und Maschinenlernen. Ziel ist es, ein aussagekräftiges Modell für die Berechnung von Vorhersagen zu entwickeln. Dafür sind aber ein paar Vorarbeiten nötig.
Um das Modell erstellen zu können, benötigt man Beobachtungswerte eines Prozesses über einen möglichst langen Zeitraum, also die erwähnten Zeitreihendaten (time-series data). Sensordaten sind grundsätzlich gut geeignet, um Techniken aus dem Predictive Analytics-Umfeld anzuwenden, da sie zum einen Informationen über einen Prozess über einen längeren Zeitraum bereitstellen und zum anderen (je nach Messintervall) in großer Menge vorliegen.
Die in der Praxis am häufigsten angewandten Verfahren werden mit dem Begriff „überwachtes Lernen“ überschrieben. Dieses Verfahren kann man sich so vorstellen: Ein Lehrer versucht seinem Schüler die Addition im Zahlenraum bis 100 beizubringen. Dazu nennt er ihm zwei Zahlen und dieser teilt ihm anschließend das seiner Meinung nach richtige Ergebnis mit. Der Lehrer ermittelt nun seinerseits das richtige Ergebnis und sagt es dem Schüler. Dieser kann nun anhand seines eigenen Ergebnisses und dem des Lehrers überprüfen, ob sein Vorgehen richtig oder falsch war. Ziel ist es also, aus einem gegebenen Input (hier die zwei Zahlen) den richtigen Output (hier das Ergebnis der Addition) abzuleiten. Dafür versucht der Schüler eine Gesetzmäßigkeit zu entwickeln, die sich auf den Sachverhalt anwenden lässt.

Der „allwissende“ Lehrer ist in der Praxis meist ein Experte auf seinem Gebiet oder man nutzt z.B. physikalische Gesetze, um das Ergebnis zu verifizieren. Möchte man nun überwachtes Lernen auf unsere Sensordaten anwenden, ergibt sich zunächst ein Problem:
Timestamp
Messwert
2018-06-03T10:00:00 10
2018-06-03T11:00:00 14
2018-06-03T12:00:00 20

Möchten wir den Messwert 14 vorhersagen, steht uns nur der Timestamp zur Verfügung, also 2018-06-03T11:00:00. Das ist der Tatsache geschuldet, dass die Verfahren zeilenweise arbeiten. Zwar lassen sich aus dem Timestamp auch einige interessante Informationen ableiten, wir haben aber bereits gelernt, dass es wenig Sinn macht, Messwerte isoliert zu betrachten und wollen daher mindestens auch den vorher gemessenen Wert (= 10) mit in Betracht ziehen. Um überwachtes Lernen anwenden zu können, müssen wir nun unsere Daten zuvor entsprechend anpassen. Dazu nutzen wir eine Technik, die sich Sliding Window nennt. Aus der Ausgangstabelle wird nun folgende Tabelle:
Timestamp
t-1 Messwert t-1 Messwert
null null 10
2018-06-03T10:00:00 10 14
2018-06-03T11:00:00 14 20
Diese Tabelle können wir jetzt für überwachtes Lernen nutzen. Neben der Spalte Messwert, die den vorherzusagenden Wert enthält, existieren ebenfalls der zuvor gemessene Wert (Messwert t-1) und dessen Timestamp (Timestamp t-1) als Spalte. Dadurch, dass diese Informationen nun in einer Zeile stehen, lassen sich Verfahren aus dem Bereich überwachtes Lernen anwenden, die sich in der Praxis an anderer Stelle bereits bewährt haben.

Fazit

IoT-Daten wie in unserem Feinstaubbeispiel haben das Potential, unsere Lebensweise zu verändern, wie es in Stuttgart beispielsweise der Fall ist. Durch die hohe Feinstaubbelastung ist die Stadt gezwungen, Lösungen gegen einen Anstieg der Luftbelastung zu erarbeiten. IoT-Analysen können dabei unterstützen, besonders betroffene Gebiete zu identifizieren und zu überprüfen, wie wirksam die eingeleiteten Maßnahmen sind. Wie dieser Artikel gezeigt hat, handelt es sich bei IoT Analytics aber keineswegs um eine Plug-and-Play-Technologie, sondern um ein komplexes Thema, bei dem eine Reihe von Besonderheiten beachtet werden muss. Die Implementierung einer IoT Analyseanwendung setzt deshalb ein fundiertes Konzept und einen detaillierten Umsetzungsplan voraus.


Mehr Artikel

Be the first to comment

Leave a Reply

Your email address will not be published.


*