Artikelserie

Data Analytics in der Praxis – Teil 1: Regressionsanalyse
Keine Kommentare

Erst kürzlich schlug die gezielte Werbekampagne von Donald Trump größere Wellen, weil seine Wähleransprache durch Data-Analytics-Modelle genau auf die entsprechenden Zielgruppen zugeschnitten war.

Der Wunsch, aus Daten Erkenntnisse für unternehmerische Entscheidungen zu gewinnen, ist alt. Seit den 90ern bringen Unternehmen unter dem Stichwort „Business Intelligence“ ihre Daten in Data Warehouses zusammen und führen Analysen mit speziellen Tools durch. Was sich seitdem stark geändert hat und „Data Analytics“ als neue Herangehensweise rechtfertigt, sind vor allem zwei Dinge: Dank des technischen Fortschritts stehen heute wesentlich mehr Speicherkapazität und Rechenleistung zur Verfügung. Auch verursacht die Vernetzung immer niedrigere Kosten, sodass es schon fast zum Normalfall geworden ist, dass Dinge nicht nur Daten vor Ort produzieren, sondern diese Daten auch bei einer Zentrale abgeliefert, gespeichert und verarbeitet werden. Mit herkömmlichen ETL-Ansätzen ist es schwierig, Herr über die immer weiter wachsenden Datenmengen zu werden und flexibel auf die sich ständig verändernden wirtschaftlichen Fragestellungen einzugehen. So kommen heute Big-Data-Technologien und Machine-Learning-Verfahren für die Datenanalyse zum Einsatz.

Data-Analytics-Anwendungen, die in den letzten Jahren vor allem durch den Einsatz von Deep Learning einen gewaltigen Schritt nach vorn gemacht haben, finden sich vor allem bei den großen Firmen wie Google, Facebook und Apple. Sie beinhalten immer intelligentere Assistenten wie Siri und Ok Google, die über Spracheingabe steuerbar sind, oder auch die Fähigkeit von Programmen, Personen und Inhalt von Fotos zu erkennen und beschreiben zu können.

Artikelserie

Unter dem Begriff „Machine Learning“ werden alle algorithmische Verfahren zusammengefasst, die in der Lage sind, Zusammenhänge der Realität zu „lernen“, ohne dass diese dem Entwickler vorab bekannt sein müssen. Es ist verständlich, dass dieses Versprechen einen hohen Reiz auf Betriebswirte wie auch Softwareentwickler ausübt. Durch Marketing und Berichterstattung in den Medien ist Machine Learning jedoch stark ins Rampenlicht gerückt und hat in jüngster Vergangenheit teilweise nicht nur bei Laien, sondern auch bei IT-Experten überzogene Erwartungen geweckt.

Der vorliegende Artikel ist der erste aus einer Artikelreihe, in der wir zeigen möchten, was mit frei verfügbaren Mitteln wirklich möglich ist. Wir werden verschiedene Data-Analytics-Verfahren mitilfe konkreter Beispiele vorstellen, die angelehnt sind an Problemstellungen bei der Entwicklung unserer Tracking- und Tracing-Lösung oder bei anderen Beratungsprojekten. Wir möchten Sie als Leser Schritt für Schritt durch die Beispiele führen und hoffen, dass so Data Analytics nicht länger ein Buch mit sieben Siegeln ist.

Probleme, Verfahren, Modelle

Im Grunde steckt hinter allen Machine-Learning-Verfahren der Versuch, mithilfe eines Modells den Zusammenhang zwischen Ursache und Wirkung zu beschreiben. Das Modell soll aus den Beobachtungen der Vergangenheit auf Ergebnisse in der Zukunft schließen können. Mathematisch geht es darum, eine Abbildung von Eingabe- auf Ausgabewerte zu finden, bei der die Differenz zwischen den vom Modell vorhergesagten Ausgabewerten und den tatsächlichen, in der Realität auftretenden Ergebnissen möglichst klein ist. Das gilt für die Vorhersage des morgigen Wetters ebenso wie für die Diagnose einer Krankheit auf Basis von Symptomen und Patienteninformation.

Modelle können unterschiedlich komplex sein. Im einfachsten Fall handelt es sich um Schwellwertentscheidungen, wie z. B. die Erkennung eines kritischen Betriebszustands. Zu den fortgeschrittenen Anwendungsgebieten zählen komplexe Sprach- und Bilderkennungsaufgaben. Einige dieser Verfahren werden Sie in dieser Artikelreihe kennen lernen.

Keine Angst, um Machine Learning einzusetzen, ist es nicht zwingend notwendig, die Funktionsweise und mathematischen Hintergründe bis ins letzte Detail verstanden zu haben. Selbstverständlich ist Hintergrundwissen hilfreich und ein Grundverständnis zwingend notwendig, um ein geeignetes Verfahren zur Problemstellung auswählen zu können. Doch Frameworks wie scikit-learn bieten viele Modelle out of the Box an, um solche Verfahren als reiner Anwender einsetzen zu können. Das ist vergleichbar damit, dass Sie täglich mit Compilern arbeiten, deren innere Funktionsweise Sie zwar vom Prinzip her kennen, aber im Detail nie angeschaut haben.

Welche Machine-Learning-Verfahren gibt es?

Die verschiedenen Machine-Learning-Verfahren unterscheiden sich in verschiedenen Aspekten voneinander. Der wichtigste Unterschied zwischen den Verfahren ist wohl die Problemstellung, auf die ein Verfahren anwendbar ist. Man unterteilt zwischen folgenden Kategorien:

  • Klassifikation: Der unbekannte Input soll einer Klasse zugeordnet werden
    • Beispiel 1: Auf Fotos sollen Äpfel von Birnen unterschieden werden können
    • Beispiel 2: Aus Fehlerbeschreibungen soll auf bekannte mögliche Ursachen geschlossen werden
    • Beispiel 3: Aus Audiosamples soll auf den Betriebszustand einer Maschine geschlossen werden
  • Clusteranalyse: Eine Input-Menge soll in zuvor unbekannte Klassen eingeteilt werden
    • Beispiel 1: Einteilen von Benutzern in typische Nutzerprofile
    • Beispiel 2: Gruppieren von ähnlichen Fehlerberichten
    • Beispiel 3: Erkennen von wiederkehrenden Nutzungsmustern bei Produkten
  • Regression: Aus einem unbekannten Input soll ein Wert auf einer kontinuierlichen Funktion vorhergesagt werden
    • Beispiel 1: Vorhersage der verbleibenden Lebensdauer von Bauteilen
    • Beispiel 2: Forecasts für wirtschaftliche KPIs
  • Dimensionsreduktion: Input-Werte sollen so vereinfacht werden, dass sie mit weniger Merkmalen ausreichend unterscheidbar beschrieben werden können
    • Beispiel 1: Identifizieren der verursachenden Faktoren von Gesundheitsbeschwerden
    • Beispiel 2: Auswahl der relevanten Sensoren für die Früherkennung von Ausfällen

Der zweite entscheidende Unterschied zwischen den Modellen ist die Art und Weise, wie das Modell angelernt wird:

  • Supervised Learning: Das Modell wird trainiert, indem man ihm „vormacht“, wie Klassen richtig zugeordnet und Werte richtig berechnet werden. Dazu wird dem Verfahren ein Trainingsdatensatz zur Verfügung gestellt, bei dem der gewünschte Output zu den Input-Werten bereits vorliegt. Entweder werden die gewünschten Output-Werte manuell durch Experten zu den Input-Werten hinzugefügt (wenn z. B. Menschen Adressbestandteile in einer Freitexteingabe erkennen) oder durch entsprechende Messvorrichtungen gewonnen (wenn z. B. an Maschinen viele relevante Sensorwerte wie auch Betriebszustände und Fehlermeldungen aufgezeichnet werden).
  • Unsupervised Learning: Das Modell soll sich ohne externe Hilfe von selbst bilden und Vorhersagen ermöglichen. Dazu wird dem Modell lediglich ein Input-Datensatz zur Verfügung gestellt, in dem nach Mustern gesucht wird, die später eine optimale Vorhersage ermöglichen. Häufig passt das Modell eigenständig seine Parameter iterativ an, bis ein Optimum für die Vorhersage gefunden wurde.

Daneben gibt es auch Mischformen wie das Semi-supervised Learning und Varianten wie das Reinforced Learning oder das Active Learning. Doch sollen diese beiden wichtigsten Kategorien zunächst reichen, um die wichtigsten Verfahren kennen zu lernen.

Ein drittes, vor allem für die Umsetzung relevantes Unterscheidungsmerkmal von Machine-Learning-Verfahren ist die Frage, ob sich ein Modell im laufenden Betrieb noch verändern kann oder nicht.

  • Darf sich ein Modell laufend anpassen, während es Vorhersagen aufgrund von bislang nicht gesehenen Input-Werten vornimmt, spricht man von Onlinelearning.
  • Wird ein Modell nur vor seinem Einsatz mithilfe eines Trainingsdatensatzes gebildet und im laufenden Betrieb nicht mehr verändert, spricht man von Offlinelearning.

Nicht alle Verfahren eignen sich dazu, Onlinelearning zu betreiben. Während sich beispielsweise ein künstliches neuronales Netz mit jedem neuen Feedback ändern kann, muss für das Trainieren eines Klassifikators oft der gesamte Trainingsdatensatz um neue Erkenntnisse erweitert und erneut für die Modellbildung bearbeitet werden. Wenn man von „selbstlernenden Systemen“ spricht, muss es sich also entweder um Systeme handeln, die online-learning-fähige Verfahren nutzen, oder das System trainiert die nur offlinefähigen Modelle so häufig neu, dass der Benutzer schlichtweg nichts davon bemerkt.

Wie man zu einem Modell kommt

Um von den Informationen eines Datensatzes zu einem Modell zu gelangen, geht man meist in zwei Stufen vor:

  1. Analyse und Bereinigung des Datensatzes
  2. Modellbildung und Validierung durch die Anwendung von Machine Learning

Die Analyse ist eine Bereinigung und statistische Aufbereitung des Datensatzes. Die Daten werden auf Ausreißer, fehlende Werte und andere Auffälligkeiten geprüft. Bei Sensorwerten wird überprüft, ob die gemessenen Werte fachlich in Ordnung sind; gefundene Auffälligkeiten müssen bewertet und gegebenenfalls korrigiert werden. Hilfestellung bietet die Anwendung statistischer Verfahren wie Mittelwerte, Trends oder Ähnlichkeiten, die z. B. zum Auffüllen fehlender Werte herangezogen werden können. Die Modellbildung erfolgt im nächsten Schritt durch die Anwendung von Algorithmen des maschinellen Lernens. Diese ermöglichen es, eine Vorschrift zu finden, wie Eingabewerte auf Zielwerte abgebildet werden können.

Welche Tools werden für Data Analytics eingesetzt?

Heutzutage werden überwiegend die freien Ökosysteme R und Python eingesetzt. In einigen Bereichen (Automobilindustrie) setzt man ebenso auf Matlab. Generell zeichnet die Tools aus, dass sie es dem Benutzer ermöglichen, mathematische Berechnungen einfach auf großen Datenmengen durchführen zu können. Ebenso bietet jedes dieser Tools eine große Auswahl an Bibliotheken vorhandener Machine-Learning-Algorithmen.

Bei R und Python ist ein großer Teil der Bibliotheken über die letzten Jahrzehnte vor allem an Universitäten und in anderen wissenschaftlichen Einrichtungen entstanden. In den letzten fünf Jahren haben Open-Source-Initiativen dazu beigetragen, dass speziell im Bereich des Deep Learnings ein beachtliches Portfolio an offenen Implementierungen zur Verfügung steht.

Die praktischen Beispiele im Rahmen dieses Artikels wurden auf Basis von Python in Version 3.6 umgesetzt. Eine Arbeitsumgebung für Python lässt sich einfach über die Installation von Anaconda aufsetzen – eine Python-Distribution, die bereits die wichtigsten Bibliotheken für die Datenverarbeitung beinhaltet. Als IDE für die Umsetzung empfiehlt sich Spyder, das der Anaconda-Distribution beiliegt. Es beinhaltet einen Texteditor, der sich gut mit der integrierten IPython Console integriert. Für die Arbeit mit Code empfiehlt es sich, den Spyder-Texteditor als Notizbuch zu verwenden und die Berechnungen im ersten Schritt in der IPython Console auszuprobieren. Alle Schritte, die in der Console überprüft und erfolgreich ausgeführt wurden, können vom „History Log“ einfach in den Spyder-Texteditor kopiert werden. Typischerweise entsteht so ein Skript, das eine Abfolge von Transformationen auf einem Datensatz abbildet.

Eine Alternative zur Arbeit mit Spyder sind Jupyter-Notebooks. Dieses webbasierte Tool eignet sich vor allem gut zum Austausch von Datenauswertungen, da Code und erklärender Text als Markdown zusammen in einem fortlaufenden Dokument festgehalten werden können. Hierauf wird in weiteren Artikeln dieser Reihe eingegangen.

Data Analytics in der Praxis – Teil 1: Regressionsanalyse

Nun geht es ans Eingemachte: Wir wollen die Ideen und Anwendungsbeispiele praktisch vorstellen, um Ihnen die Möglichkeit zu geben, sie für eigene Problemstellungen zu adaptieren. In diesem Teil geht es um die Anwendung einer Regressionsanalyse. Für die nachfolgenden Schritte haben wir auf einen Datensatz der Tool Wear Challenge 2010 zurückgegriffen. Leider ist der Datensatz zurzeit offline, daher haben wir alle notwendigen Daten auf unserer Webseite veröffentlicht. Hier findet sich auch der Code.

Problemstellung

Die Abnutzung eines Fräsers lässt sich im Betrieb nicht auf einfache Art und Weise direkt messen, weil hierzu eine Betrachtung der Schneiden des Fräsers unter dem Mikroskop erforderlich ist. Um die verbleibende Lebensdauer eines Fräsers im Betrieb bestimmen zu können, war es das Ziel der Tool Wear Challenge, indirekt von den Messungen der Beschleunigungs- und Kraftsensoren auf die Abnutzung zu schließen. Hierzu wurden sechs Experimente durchgeführt, bei denen jeweils dreihundertmal ein Werkstück auf der Fräse gefertigt und nach jedem Fräsvorgang die Abnutzung des Fräsers durch eine mikroskopische Analyse gemessen wurde.

Jedes Experiment ist einzeln im Netz abrufbar und benötigt entpackt ca. 4 GB auf der Festplatte. In dem Paket enthalten ist eine Datei, die den Abrieb des Fräskopfs nach jedem Fräsvorgang beschreibt, sowie weitere 361 Dateien, die alle Sensorwerte des jeweiligen Fräsvorgangs enthalten. Alle Sensorwerte wurden mit einer Abtastrate von 5 kHz aufgezeichnet, wobei ein Werkstück ca. 40 Sekunden zur Fertigstellung benötigt, was wiederum 200 000 Messwerte pro Sensor und Werkstück bedeutet. Die Messwerte eines Werkstücks liegen in Tabellenform vor (Tabelle 1).

Kraft X [N] Kraft Y [N] Kraft Z [N] Beschl. X [g] Beschl. Y[g] Beschl. Z [g] Schall [V]
1.373 2.11 0.368 0.069 0.053 0.073 -0.002
1.223 2.038 0.334 -0.025 -0.033 0.006 -0.002
1.014 2.012 0.269 -0.033 -0.026 -0.002 -0.002

Tabelle 1: Auszug der Messwerttabelle zur Abnutzung eines Fräsers

Explorative Analyse des Datensatzes

Im ersten Schritt einer Data-Analytics-Aufgabenstellung empfiehlt sich eine explorative Datenanalyse. Ziel der explorativen Analyse ist es, eine Einschätzung des Datensatzes, seiner Qualität und seiner Eigenschaften zu erlangen. Es werden die statistischen Eigenschaften des Datensatzes beleuchtet und Datenvisualisierungen auf Ausschnitten durchgeführt.

Für den vorliegenden Datensatz kann im ersten Schritt exemplarisch ein einzelner Fräsvorgang betrachtet werden. Hierzu wird als Erstes die Bibliothek „Pandas“, der De-facto-Standard zur Arbeit mit Datensätzen in Python, eingebunden.

import pandas as pd

Ein Fräsvorgang kann dann mit c1_01 = pd.read_csv(‚c_1_001.csv‘, names=[‚fx‘, ‚fy‘, ‚fz‘, ‚ax‘, ‚ay‘, ‚az‘, ‚ae‘]) geladen werden, wobei die Option names den Spalten des Datensatzes sprechende Namen zuordnet. Visualisiert man exemplarisch Kraft X (fx) und Beschleunigung X (ax) für einen Zeitraum von einer Sekunde (5 000 Werte), so wird deutlich, dass es sich um periodische Werte mit unterschiedlichen Wertebereichen handelt (Abb. 1).

import matplotlib.pyplot as plt
C1_01[['fx', ‘ax’]][5000:10000].plot()
plt.legend(['Kraft x', 'Beschleunigung x'])
Abb. 1: Erste exemplarische Visualisierung

Abb. 1: Erste exemplarische Visualisierung

Es empfiehlt sich, zusätzlich eine statistische Übersicht der geladenen Daten zu betrachten. Hierzu stellt Pandas die Funktion describe zur Verfügung: c1_01.describe(). Die Ausgabe ist eine Zusammenfassung wichtiger statistischer Werte jeder Spalte des Datensatzes in der in Listing 1 zu sehenden Form.

                  fx             ax
count  127399.000000  127399.000000
mean        0.400857       0.009307
std         0.842471       0.076350
min        -2.501000      -0.316000
25%        -0.198000      -0.041000
50%         0.377000       0.009000
75%         0.984000       0.060000
max         3.744000       0.330000

Anhand der Tabelle können neben den üblichen statistischen Werten auch die Anzahl an Datenpunkten (count) und die 25-%-, 50-%- und 75-%-Quantile abgelesen werden. Die Quantile sind Grenzwerte für fx bzw. ax, unter denen 25 %, 50 % bzw. 75 % der Datenpunkte liegen. Das 50-%-Quantil wird auch als Median der Datenreihe bezeichnet.

Neben der Distribution des ersten Fräsvorgangs ist natürlich ebenfalls eine Betrachtung späterer Fräsvorgänge sinnvoll, um die Entwicklung der Sensorwerte abschätzen zu können. Wird die gleiche Auswertung für den letzten Fräsvorgang durchgeführt und im DataFrame c1_311 gespeichert, kann eine Gegenüberstellung der Distributionen für Kraft X, Y (Abb. 2) und Beschleunigung X, Y (Abb. 3) berechnet werden (Listing 2).

c1 = pd.concat([c1_01, c1_311], axis=1)
ax = c1[['fx', 'fx2', 'fy', 'fy2']].boxplot()
ax.set_xticklabels(['$K_x$(Wst. 1)', '$K_x$(Wst. 311)', '$K_y$(Wst. 1)', '$K_y$(Wst. 311)'])

ax = c1[['ax', 'ax2', 'ay', 'ay2']].boxplot()
ax.set_xticklabels(['$B_x$(Wst. 1)', '$B_x$(Wst. 311)', '$B_y$(Wst. 1)', '$B_y$(Wst. 311)'])
Abb. 2: Statistische Werte der Kräfte

Abb. 2: Statistische Werte der Kräfte

Abb. 3: Statistische Werte der Beschleunigung

Abb. 3: Statistische Werte der Beschleunigung

Die gewählte Darstellungsform wird Boxplot genannt und bildet eine Distribution ab. Sie ist analog zu den statistischen Werten, die describe ausgibt, mit einer Besonderheit: Die „whiskers“, also der horizontale Strich am unteren und oberen Ende des Wertebereichs, geben nicht die Maximalwerte an, sondern werden von der Matplotlib so angesetzt, dass der Wertebereich 1,5-mal so groß ist wie der Abstand zwischen dem 25-%- und dem 75-%-Quantil. Alle Werte, die außerhalb dieses Bereichs liegen, können so als Ausreißer angesehen werden. Die 25-%-, 50-%- und 75-%-Quartile werden durch den Beginn, die Linie innerhalb und das Ende der Box gekennzeichnet.

Es ist deutlich zu sehen, dass die Werte des letzten Fräsvorgangs stärker verteilt sind als die des ersten. Für den zeitlichen Verlauf des letzten Fräsvorgangs bedeutet das eine deutlich höhere Amplitude der Schwingungen, was sich praktisch durch größere Kräfte erklären lässt, die auf die Maschine wirken, da der Fräser bereits abgenutzt ist. Weiterhin ist der Median (beschriftete blaue Linie) der Kräfte deutlich ins Positive gerückt.

Als erstes Zwischenfazit lässt sich somit sagen, dass die Eingabewerte periodische Signale sind, deren Amplitude im Laufe der Zeit vermutlich immer größer wird. Ebenso kann beobachtet werden, dass sich für die gemessenen Kräfte der Median der Amplitude von Null weg in positive Richtung verschiebt.

Zielwerte

Neben den Sensorwerten ist es wichtig, sich mit dem Zielwert – dem Wert, der vorhergesagt werden soll – vertraut zu machen. Für den gewählten Datensatz ist der Zielwert das Maximum der Abnutzung, gemessen unter dem Mikroskop in 10^-3 mm, aller drei Schneiden eines Fräsers. Damit das Werkstück beim Fräsen keinen Schaden nimmt, darf die Abnutzung des Fräsers nicht zu groß werden: In der Beschreibung des Datensatzes wird der Wert der maximalen Abnutzung als 165 * 10^-3 mm definiert. Für das erste Experiment entwickelt sich der Zielwert folgendermaßen über die Zeit (Abb. 4):

wear_c1 = pd.read_csv('c1_wear.csv')
plt.plot(wear_c1)
plt.plot(wear_c1.max(axis=1), linewidth=8, linestyle=':')
plt.legend(['Schneide 1', 'Schneide 2', 'Schneide 3', 'Max'])
plt.show()
Abb. 4: Visualisierung des Abriebs der Schneiden über die Fräsvorgänge

Abb. 4: Visualisierung des Abriebs der Schneiden über die Fräsvorgänge

Nach einem anfänglichen starken Ansteigen der Abnutzung zwischen den Fräsvorgängen 0 bis 50 verhält sich der Zielwert nahezu linear. Wie wir weiter oben bereits beobachtet haben, steigen auch die Eingabewerte über die Zeit an. Somit empfiehlt sich eine direkte Gegenüberstellung.

Auffälligkeiten

Weil die jeweils 200 000 Sensorwerte pro Sensor und Werkstück einen periodischen Verlauf haben, können sie nicht direkt bei der Modellbildung verwendet werden. Stattdessen müssen sie für eine Gegenüberstellung durch sogenannte Merkmale abstrahiert werden. Für die Sensorwerte eines Fräsvorgangs bietet es sich an, die bereits betrachteten statistischen Eigenschaften der Sensorwerte für ein Werkstück als Merkmal zu verwenden. Damit die Auswertung im Rahmen des Artikels übersichtlich bleibt, beschränken wir uns auf den quadratischen Mittelwert und die Standardabweichung. Während die Standardabweichung robust gegenüber einer Werteverschiebung ist, da sie nur auf Basis der Abweichungen vom Mittelwert berechnet wird, verschiebt sich der quadratische Mittelwert in Relation zur Werteverschiebung des Signals. Berechnet werden beide Werte für ein Werkstück wie folgt:

c1_rms = c1_01.pow(2).mean(axis=0).pow(0.5)
c1_std = c1_01.std(axis=0)
plt.legend(['Abrieb', '$K_x$QM', '$K_y$QM', '$K_z$QM', '$K_x$Std', '$K_y$Std', '$K_z$Std', '$B_x$QM', '$B_y$QM', '$B_z$QM', '$B_x$Std', '$B_y$Std', '$B_z$Std' ], bbox_to_anchor=(1, 1), loc=2, borderaxespad=0.)

Eine wiederholte Berechnung für alle Fräsvorgänge ergibt für den ersten Datensatz das in Abbildung 5 gezeigte Bild.

An dieser Stelle verhindern zwar die unterschiedlichen Wertebereiche noch tiefergehende Erkenntnisse, allerdings wird schon eine deutliche Auffälligkeit sichtbar: Der quadratische Mittelwert der Kraft in X-Richtung (KxQM – die blaue Linie) hat Ausreißer im Bereich des zehnten Fräsvorgangs und des 220. bis 250. Fräsvorgangs. Der Werteverlauf lässt auf ein stetiges Ansteigen des Sensormittelwerts, einen sogenannten Bias-Drift, schließen. Mit hoher Wahrscheinlichkeit wurde hier der Mittelwert des Sensors zwischen den Messungen nicht zurückgesetzt; nur so ist der plötzliche Abfall des Werts von einem Fräsvorgang auf den nächsten zu erklären. Entsprechend eignet sich die Variable in dieser Form nicht für eine Vorhersage.

Generell sind solche Auffälligkeiten in Datensätzen die Regel. Je nach Art der Variable und Auffälligkeit gibt es verschiedene Möglichkeiten zur Korrektur, von denen einige in den nächsten Artikeln dieser Reihe vorgestellt werden. Im obigen Fall wäre eine lineare Interpolation der Datenreihe im Bereich der Auffälligkeiten denkbar. Aufgrund der Vielzahl an anderen Variablen, die zur Vorhersage genutzt werden können, wird an dieser Stelle allerdings davon abgesehen.

Abb. 5: Wiederholte Berechnung für alle Fräsvorgänge

Abb. 5: Wiederholte Berechnung für alle Fräsvorgänge

Lineare Zusammenhänge

Ein Vorhersagemodell bildet einen Zusammenhang zwischen Eingabe- und Zielwerten. Der einfachste Zusammenhang ist eine lineare Abbildung eines oder mehrerer Eingabewerte zur Errechnung des Zielwerts. Entsprechend wird der Datensatz im ersten Schritt auf lineare Zusammenhänge überprüft. Ein Maß für den linearen Zusammenhang von zwei Datenreihen ist der Korrelationskoeffizient. Er gibt unabhängig von der Skalierung der Datenreihen an, ob sich die Werte in den Datenreihen proportional zueinander verändern. Eine sinnvolle Übersicht der Korrelationen auf einem Datensatz bietet ein Korrelationsplot (Abb. 6). Hierzu wird das Paket Seaborn integriert, das gut gestylte Korrelationsplots auf Basis von Matplotlib ermöglicht:

import seaborn as sns
labels = ['Abrieb', '$K_x$QM', '$K_y$QM', '$K_z$QM', '$K_x$Std', '$K_y$Std', '$K_z$Std', '$B_x$QM', '$B_y$QM', '$B_z$QM', '$B_x$Std', '$B_y$Std', '$B_z$Std' ]
corr = wear_c1.corr()
sns.heatmap(corr, square=True, cmap=sns.diverging_palette(220, 10, as_cmap=True), linewidths=.75, cbar_kws={"shrink": .5},  xticklabels=labels,  yticklabels=labels)

Im Korrelationsplot steht ein Kästchen für die Korrelation zwischen den zwei Variablen, die in der jeweiligen Spalte und Zeile stehen. Der Wert innerhalb des Kästchens gibt den Korrelationskoeffizienten an, der Werte zwischen 1 und -1 annehmen kann. Hierbei bedeutet 1 eine perfekte Korrelation, d. h. die zwei betrachteten Variablen verändern sich proportional. Deswegen steht in der Diagonale immer eine „1“, denn hier wird eine Variable mit sich selbst verglichen. Eine „-1“ bedeutet, dass sich zwei Variablen antiproportional zueinander verhalten, also während der Wert einer Datenreihe um einen Faktor x ansteigt, sinkt er für die andere Datenreihe um den gleichen Faktor.

Abb. 6: Korrelationsplot

Abb. 6: Korrelationsplot

Die erste Zeile und Spalte im Korrelationsplot (‚w1‘) gehören zur vorherzusagenden Abnutzung. Betrachtet man die Korrelation mit den Eingabedaten, kann schnell eine Auswahl an vielversprechenden Kandidaten für die Berechnung des Zielwerts bestimmt werden. Dazu werden alle Korrelationen größer als 0.95 ausgewählt. Das sind:

  • der quadratische Mittelwert der Kraft in Y- und Z-Richtung
  • der quadratische Mittelwert der Beschleunigung in alle Richtungen
  • die Standardabweichung der Kraft in alle Richtungen

Durch eine Normalisierung der ausgewählten Eingabewerte ist es möglich, sich den Verlauf der Datenreihen im gleichen Wertebereich anzusehen. Verschiedene Möglichkeiten hierzu bietet die Bibliothek scikit-learn im Modul Preprocessing (Listing 3). Die verwendete Skalierungsmethode robust_scale skaliert eine Datenreihe anhand der angegebenen minimalen und maximalen Quartilwerte auf den Wertebereich 0-1 (Abb. 7).

from sklearn import preprocessing
wear_c1_flt = wear_c1[['w1', 'c1_fyrms','c1_fzrms','c1_fxstd','c1_fystd', 'c1_fzstd', 'c1_axrms','c1_ayrms','c1_azrms']]
wear_c1_flt_norm = pd.DataFrame(preprocessing.robust_scale(wear_c1_flt, axis=0, quantile_range=(10, 90)), columns=wear_c1_flt.columns.values)
wear_c1_flt_norm.plot()	
plt.legend(['Abrieb', '$K_y$QM', '$K_z$QM', '$K_x$Std', '$K_y$Std', '$K_z$Std', '$B_x$QM', '$B_y$QM', '$B_z$QM'], bbox_to_anchor=(1, 1), loc=2, borderaxespad=0.)
Abb. 7: Visualisierung der Skalierungsmethode „robust_scale“

Abb. 7: Visualisierung der Skalierungsmethode „robust_scale“

Wie erwartet spiegeln die ausgewählten Eingabewerte den Verlauf des Zielwerts gut wider, was anhand der Abweichung zwischen den Linien über den gesamten Verlauf beobachtet werden kann. Besonders klein ist sie im Mittelteil zwischen den Fräsvorgängen 120 und 200.
Der nächste Schritt ist nun die Berechnung eines linearen Modells, das in der Lage ist, aus neuen Eingabewerten auf den Zielwert zu schließen. Hierzu kommt erneut ein Modul aus scikit-learn zum Einsatz. Ein Vorteil von scikit-learn ist das einheitliche Interface zum Trainieren von Modellen. Eine lineare Regression kann in nur wenigen Schritten berechnet werden:

from sklearn import linear_model
reg = linear_model.LinearRegression()
X = wear_c1_flt[['fyrms','fzrms','fxstd','fystd', 'fzstd', 'axrms','ayrms','azrms']]
y = wear_c1_flt['wear']
reg.fit(X, y)

In den ersten beiden Zeilen wird das notwendige Modul von scikit-learn geladen und ein lineares Regressionsmodell initialisiert. Die Zuweisung von X und y dient zur Veranschaulichung, welche Werte linear kombiniert werden (X), um den Zielwert (y) zu berechnen. Die eigentliche Berechnung findet dann in der letzten Zeile statt. Soll statt einer linearen Regression z. B. eine Lasso-Regression verwendet werden, kann Zeile 2 einfach durch reg = linear_model.Lasso(alpha=0.5) ersetzt werden.

Eine Auswertung der Vorhersagequalität beinhaltet die grafische Inspektion ebenso wie eine Berechnung der Modellabweichung. Für die grafische Inspektion wird der Zielwert zusammen mit dem vorhergesagten Wert des Modells in einem Diagramm aufgetragen. Hierdurch kann visuell nachvollzogen werden, an welchen Stellen die Vorhersage besonders stark vom Zielwert abweicht (Abb. 8):

plt.plot(reg.predict(X), label='Vorhersage')
plt.title('Regression fit with mean squared error: {:.2f}'.format(np.mean((reg.predict(X)-y) ** 2) ))
plt.plot(y, label='Gemessene Abnutzung') 
plt.legend()
Abb. 8: Grafische Inspektion der Vorhersagequalität

Abb. 8: Grafische Inspektion der Vorhersagequalität

Wie erwartet bildet die Vorhersage das Verhalten der Abnutzung gut nach. Der mathematisch interessierte Leser findet die Parameter der linearen Regression im coef_-Feld des Regressionsobjekts.

Der praktische Nutzen des Modells ist eine Vorhersage der verbleibenden Fräsvorgänge. Soll ein Fräser z. B. bei einem Abrieb von 160 * 10^-3 mm ersetzt werden, lässt sich eine Vorhersage der verbleibenden Fräsvorgänge nach der Fertigung eines Werkstücks wie folgt berechnen:

  1. Bestimmung der statistischen Werte des letzten Fräsvorgangs
  2. Abschätzung der Fräserabnutzung anhand des Modells
  3. Berechnung der verbleibenden Fräsvorgänge anhand der abgeschätzten Fräserabnutzung

Die Schritte zwei und drei lassen sich unter Berechnung einer Zuordnungstabelle von Abnutzungen zu verbleibender Lebensdauer (y_pred) wie folgt bestimmen:

y_pred = pd.DataFrame({'wear':y, 'rul':(sum(y<=160)-np.arange(0,y.size)).T})
def rul(X):
  wear = reg.predict(X)
  return y_pred['rul'][sum(y_pred['wear']<=wear)]

Die Zuordnungstabelle drückt aus, bei welcher Abnutzung welche Lebensdauer zu erwarten ist. Auf Basis der Tabelle kann der Wert gesucht werden, welcher der berechneten Abnutzung auf Basis des Modells am nächsten kommt.

Validierung und Ausblick

Nach der Modellbildung gilt es nun, das Modell zu validieren. Die Anwendung des Modells auf andere Datensätze ist in der Praxis ein wichtiger Schritt, um sicherzustellen, dass ein Modell generalisiert, also sinnvolle Vorhersagen für alle möglichen Eingabewerte liefert. Wenn wir das Modell auf die Experimente C2 und C3 anwenden, die wir nicht als Trainingsdatensatz verwendet haben, ergibt sich das in Abbildung 9 gezeigte Bild.

Abb. 9: Anwendung des Modells auf andere Experimente

Abb. 9: Anwendung des Modells auf andere Experimente

Die Auswertung der Vorhersagen zeigt schnell, dass das Modell zwar für das Experiment C1, nicht aber für die Experimente C2 und C3 eine gute Abbildung ist: Die tatsächliche Abnutzung im Experiment C2 (graue Linie) weicht von der Vorhersage (lila Linie) stark ab. Gleiches gilt für Experiment C3 (vgl. gelbe und grüne Linie). Eine interessante Auffälligkeit dabei ist, dass die betrachteten Sensorwerte vom ersten und zweiten Experiment ähnlich gewesen sein müssen, da das lineare Modell sehr ähnliche Abnutzungswerte abschätzt (Kurven rot und lila). Auch ist interessant, dass bei C3 der Kurvenverlauf der Vorhersage (gelb) und die tatsächlichen Werte (grün) grundsätzlich ähnlich sind.

Aufgrund dieser Beobachtungen würde man in der Praxis nun so fortfahren: Einerseits würde man hinterfragen, ob C2 und C3 im Setup wirklich mit C1 vergleichbar sind und relevante Unterschiede möglicherweise übersehen wurden. Ist das der Fall, würde man das Modell weiter verfeinern, indem weitere Variablen in die Modellbildung einbezogen werden.

Die Vorteile einer linearen Regression sind ihre Robustheit und die Tatsache, dass die linearen Zusammenhänge gut auch vom Menschen zu verstehen sind. Bei linearen Regressionsmodellen gibt es folglich keine Überraschungen bezüglich der vorhergesagten Werte. Die lineare Regression ist jedoch ein sehr einfaches Verfahren und nur der Einstieg in den Methodenkoffer, den Data Analytics bietet. In den nächsten Artikeln der Serie werden wir immer komplexere Möglichkeiten zur Modellbildung vorstellen und exemplarisch anwenden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -