21. April 2020
6 Min.

Data Mining und IoT – Analyse von Datensätzen anhand von Machine Learning Methoden

Im Bereich IoT entstehen durch Anwendungsfälle wie die Zustandsüberwachung von Maschinen immense Datenmengen, die unter anderem zur Optimierung von einzelnen Prozessen genutzt werden können. Um das zu ermöglichen, werden unterschiedliche Methoden angewandt, die sich unter den Begriff Data Mining zusammenfassen lassen. Darunter fallen allgemein statistische Methoden die auf Datensätze angewendet werden, um Querverbindungen und Trends zu erkennen.

Dieser Artikel verschafft einen Überblick zum Thema Data Mining und liefert einen Einblick in die Methoden zur Clusteranalyse, Klassifikation und Regressionsanalyse. Zudem werde ich anhand einzelner Anwendungsbeispiele zeigen, wie diese Methoden im Bereich IoT sinnvoll eingesetzt werden können.

Clusteranalyse

Die auf Machine Learning basierenden Clustering Verfahren werden im Data Mining für die Segmentierung der Datensätze herangezogen. Die Clusteranalyse wird der Kategorie des unüberwachten Lernens (unsupervised learning) zugeordnet, das heißt es liegen Daten aber keine Zielwerte vor. Die Daten und Objekte sollen so gruppiert werden, dass innerhalb der Gruppe die Ähnlichkeiten maximiert und außerhalb der Gruppe zu den restlichen Segmenten minimiert wird.

Wie kommen die Gruppierungen zustande?

Es gibt mittlerweile zahlreiche Ansätze Datensätze zu Segmentieren. Da es unmöglich ist auf alle Arten der Segmentierung einzugehen, werde ich kurz zwei der bekanntesten und aus meiner Sicht auch wichtigen Verfahren vorstellen. Beginnen werde ich mit dem k-Means Verfahren, das aufgrund der geringen Komplexität und guter Performance häufig zum Einsatz kommt. Der Algorithmus benötigt, neben den Datensätzen, eine vorab festgelegte Clusteranzahl n. Anhand dessen werden im ersten Schritt aus dem gesamten Datensatz k Objekte zufällig gewählt und als vorläufiges Clusterzentrum identifiziert. Im nächsten Schritt werden die restlichen Objekte des Datensatzes dem nächsten Clusterzentrum zugewiesen. Da bei der ersten Zuweisung die Clusterzentren mit sehr hoher Wahrscheinlichkeit nicht korrekt identifiziert wurden, wird im dritten Schritt für jedes der k Segmente der neue Mittelpunkt bestimmt. Daraufhin werden die einzelnen Objekte erneut dem nächsten Clusterzentrum zugewiesen. Diese Prozess wird wiederholt, bis die Clusterzentren über einen Iterationsschritt konstant bleiben. Besitzt der Anwender nicht das notwendige Wissen über die Datensätze, um eine feste Anzahl an Gruppierungen festzulegen, so kann es schnell zu einer Über- bzw. Untersegmentierung kommen. Das Ergebnis wird dadurch unbrauchbar. In solchen Fällen würde das DBSCAN-Clustering eine mögliche Alternative für die Segmentierung darstellen. DBSCAN steht für Density-Based Spatial Clustering of Application with Noise (Dichtebasierte räumliche Clusteranalyse mit Rauschen). Im Gegesatz zum k-Means Verfahren muss die Anzahl der zu erwartenden Segmente vorab nicht festgelegt werden. Die Datenpunkte werden also nicht den einzelnen Clusterzentren zugeordnet, sondern in einzelne Gruppen unterteilt.

Man unterscheidet hierbei zwischen:

  • Kernobjekten
  • Dichte-erreichbare Objekte
  • Rauschobjekte

Ab wann ein Punkt Dichte-erreichbares Objekt oder ein Kernobjekt ist, wird durch die Parameter ԑ und minPts beeinflusst. ԑ gibt vor, welchen maximalen Abstand ein Datenpunkt von einem weiteren haben darf, um zur ԑ Nachbarschaft Ne(x) zu gehören. MinPts hingegegen legt die minimale Anzahl an Nachbarpunkten fest, damit ein Datenpunkt als Kernobjekt definiert werden kann. Die folgende Grafik verdeutlicht den Prozess der Zuordnung nochmals. Die minimale Anzahl an Datenpunkten (MinPts) wurde in dem Beispiel auf zwei gesetzt. Wie die Legende zeigt, stellen die blauen Kreuze die Datenpunkte dar, welche als Kernobjekt identifiziert wurden. Dies bedeutet, dass sich von den Objekten ausgehend in einem Radius von ԑ zwei weitere Datenpunkte befinden. Bei den grünen Datenpunkten trifft diese Bedingung nicht zu. Da sich in ihrer Nachbarschaft ein Kernobjekt befindet, sind sie selbst zwar nicht dicht, aber dichte-erreichbare Objekte. Trifft auch das nicht zu, so wird ein Datenpunkt als Rauschobjekt identifiziert. Die zusammenhängende Kernobjekte bilden mit dessen dichte-erreichbaren Objekten ein Cluster und werden mit einer spezifischen ID versehen.

Wie kann ich die Clusteranalyse sinnvoll einsetzen?

Die Clusteranalyse ist vor allem für die Segmentierung von Datensätzen ein hilfreiches Verfahren. So kann die Methode zum Beispiel für eine Kundensegmentierung eingesetzt werden oder um Messdaten zu clustern und so zu Kategorisieren oder Anomalien festzustellen. Voraussetzung ist dabei natürlich das Wissen darüber, nach welchen Parametern sinnvoll geclustert werden kann. Durch eine eindeutig zugewiesene Cluster ID, können einzelne Segmente auch herausgefiltert und näher analysiert werden.

Klassifikation

Die Klassifikation funktioniert nach einem ähnlichen Prinzip wie die Clusteranalyse, mit dem Unterschied, dass die Klassen bereits vordefiniert sind. Die einzelnen Objekte werden dann der Klasse zugeordnet, der sie am ähnlichsten sind. Aufgrund des vorhandenen Wissens über das Ergebnis, wird die Klassifikation, im Gegensatz zum Clustering, dem überwachten Lernen (supervised learning) zugeordnet.  Es gibt auch hier wieder unterschiedliche Methoden Daten zu Klassifizieren. Da ich leider nicht alle ansprechen kann, beginnen wir wieder mit dem bekanntesten Modell: Die Entscheidungsbäume.

Ein Entscheidungsbaum besteht aus Knoten in denen jeweils eine Entscheidung getroffen wird, gefolgt von mindestens zwei Blättern die das Resultat darstellen. Ein einfaches Beispiel könnte die Unterscheidung von roten zu grünen Äpfeln sein. In dem Fall würde der Knoten beispielsweise prüfen ob die Farbe Rot ist und je nach Antwort das Objekt dem Blatt „Grün“ oder dem Blatt „Rot“ zuordnen. Da in den meisten Anwendungsfällen die Objekte nicht ganz so einfach klassifiziert werden können, reicht ein einzelnes Merkmal meist nicht aus, um die gewünschte Genauigkeit zu erlangen.

Eine weitere Variante der Klassifikation ist die Support Vector Machine (SVM). Jedes Objekt, also jeder Datenpunkt wird dabei als Vektor in einem Vektorraum dargestellt. Für die Einteilung der Datenpunkte in Klassen, wird eine Hyperebene (n-dimensionale Ebene) als Trennwand genutzt. Diese wird so im Vektorraum platziert, dass der Abstand zum nächsten Datenpunkt der jeweiligen Klasse maximiert wird. Neben der Klassifikation kann die SVM-Methode auch als Regressor eingesetzt werden.

Wofür kann eine Klassifikation eingesetzt werden?

Ein möglicher Einsatzbereich ist die Qualitätssicherung. Dort kann anhand verschiedener Merkmale bestimmt werden, ob ein Bauteil Mängel aufweist. In den meisten Fällen würde hier ein einfacher Entscheidungsbaum genügen. Aufgrund der geringen Klassifikationsgüte reicht dieser jedoch beispielsweise in der Bildverarbeitung oft nicht aus – Neuronale Netze schaffen hier Abhilfe.

Regressionsanalyse

Eine weitere Methode aus dem Data Mining Bereich ist die Regressionsanalyse. Wie du vielleicht schon weißt, geht es bei dem statistischen Verfahren darum, den Zusammenhang zwischen einem oder mehreren Merkmalen auf ein weiteres Merkmal zu untersuchen. Je nachdem spricht man dann von der fast jedem bekannten einfachen linearen Regression oder der multiplen linearen Regression. Um die optimale Lösung für ein Modell zu finden, wird die Differenzen der vom Modell geschätzten y-Werte und zu den wahren Werten berechnet und aufsummiert. Die berechnete Differenz bzw. Abweichung bezeichnet man auch als Residuum є. Damit die Summe der Residuen nicht null wird, wird dabei meistens die Summe der quadrierten Residuen hergezogen. Das Aufsummieren des quadratischen Fehlers macht die lineare Regression besonders anfällig auf Ausreißer. Um den entgegen zu wirken, wurden die robusten Regressionsverfahren erforscht. Daraus bekannt ist beispielsweise der RANSAC (random sample consensus) oder Huber Loss Algorithmus. Da ich in der Vergangenheit mit einer Eigenimplementierung des RANSAC bereits sehr gute Ergebnisse erzielen konnte, werde ich das Verfahren im Folgenden näher eingehen. Ein paar von euch stellt sich nun vielleicht die Frage

Was bedeutet ein „robustes“ Regressionsverfahren?

Ein robustes Regressionsverfahren soll generell die Anfälligkeit einer Regressionsanalyse auf Ausreißer deutlich reduzieren. Am Beispiel von RANSAC erfolgt das durch die Einteilung der Datensätze in inlier und outlier. Im Gegensatz zu der linearen Regression erfolgt das Bestimmen der vermutlich besten Lösung nicht anhand des kleinsten Fehlers, sondern anhand der meisten inlier. Bei einer Regressionsgeraden wird ein Objekt als inlier identifiziert, sobald er den zuvor festgelegten Abstand zur Modellgerade nicht überschreitet.

Robuste Regressionsverfahren sind aufwändiger in der Implementierung und langsamer in der Ausführung. Für Datensätze mit wenig Ausreißern, performt zum Beispiel die lineare Regression meistens besser als die robusten Verfahren. Weitere Formen der Regressionsanalyse sind die logistische oder symbolische Regression. Um den Rahmen des Artikels nicht zu sprengen, werde ich auf diese nicht näher eingehen.

Die folgende Abbildung zeigt das Ergebnis einer Demo der Scikit-learn Bibliothek. Dabei wurde das Ergebnis des linearen Regressors und RANSAC Regressors bei einem Datensatz mit relativ vielen gehäuften Ausreißern (Outliers) gegenübergestellt. Man sieht deutlich, dass der lineare Regressor stark auf die Ausreißer reagiert und diese in die Analyse miteinbezieht, während der RANSAC Regressor dennoch die korrekte Lösung findet.

Quelle: https://scikit-learn.org/stable/auto_examples/linear_model/plot_ransac.html#sphx-glr-auto-examples-linear-model-plot-ransac-py

In welchen IoT Use Cases kommt die Regressionsanalyse zum Einsatz?

Allgemein wird die Regressionsanalyse hauptsächlich eingesetzt, um Trends von Datensätzen zu bestimmen. Ein Anwendungsfall im Bereich Produktionsplanung wäre zum Beispiel eine Trendanalyse des Absatzes, um so die Produktion entsprechend anzupassen und Bauteile pünktlich nachzuliefern. Des Weiteren können die notwendigen Kapazitäten so besser abgeschätzt werden. Eine weitere Einsatzmöglichkeit wäre dir Untersuchung der Einflüsse von zum Beispiel Temperatur oder Druck auf die Performance oder Lebensdauer eines Bauteils.

Eine weitere wichtige, hier nicht behandeltet Methode wäre die Assoziationsanalyse, welche die Daten auf Korrelationen untersucht und damit das Erkennen von Mustern und Abhängigkeiten ermöglicht. Die Open Source Machine learning library Scikit-learn stellt die Python Implementierung vieler Data Mining Methoden zur Verfügung (Achtung: teilweise nicht ganz nach dem originalen Algorithmus). Anhand dessen können die einzelnen Verfahren relativ simpel anhand unterschiedlicher Datensätze getestet werden. Der Quellcode kann in GitHub eingesehen und nachvollzogen werden.

Um die behandelten Methoden zusammenzufassen, habe ich im Folgenden noch eine kleine tabellarische Übersicht erstellt.

Bildnachweise:

Artikel kommentieren