Erstellung und Verwendung von Autoencodern mit der SAP PAL

Datensätze, die im Machine Learning (ML) verwendet werden sollen, sind in der Praxis meist unverarbeitet und immens groß. Die meisten ML-Algorithmen benötigen die Eingangsdaten in einer spezifischen Form, die durch Datenvorverarbeitung bereitgestellt wird. Selbst dann ist das vorliegende Datenmodell meist jedoch sehr komplex.

Ein weiteres Problem bei Datensätzen kann die fehlende Balance zwischen Klassen sein. Bei einem Klassifizierungsvorhaben wird dem jeweiligen ML-Algorithmus ein Datensatz zugeführt, der neben regulären Attributen und einem Index auch ein Klassenattribut besitzt. So zum Beispiel bei einer Kundenabwanderungsanalyse. Hier sind alle Tupel mit einem Wert versehen, ob der jeweilige Kunde abgesprungen ist oder nicht, das Klassenattribut. Ist der Datensatz für die Kundenabwanderungsanalyse nun aber nicht balanciert und springen z.B. nur 20% der Kunden ab, kann das mit dem verwendeten ML-Algorithmus zu Ungenauigkeiten im resultierenden Modell führen. Um gleichzeitig den Problemen der hohen Komplexität von Datensätzen und der fehlenden Balance entgegenzuwirken, können mithilfe der SAP Predictive Analysis Library (PAL) Autoencoder erstellt werden.

Bei einem Autoencoder handelt es sich um ein künstlich neuronales Netzwerk (KNN). Wie in Abbildung 1 gezeigt, besteht ein Autoencoder aus fünf elementaren Bestandteilen. Die Originaldaten, den Encoder, die reduzierten Daten, den Decoder und die rückentwickelten Originaldaten. Anders als bei herkömmlichen KNNs ist das Ziel nicht die letzte Schicht des Netzwerks, sondern die mittlere Schicht. Bei dem Training des Autoencoders werden die Originaldaten, sowohl als Eingabe der ersten Schicht, als auch als Ziel für die letzte Schicht verwendet. In den verbleibenden Schichten werden die Daten reduziert, komprimiert und anschließend wieder bestmöglich zurückgebildet. In der mittleren Schicht des KNNs liegt also eine reduzierte Form der Originaldaten mit weniger Dimensionen vor. In der Regel werden Autoencoder für Anomalie-Analysen und Noise-Reduction (Filterung von Störwerten/-elementen) verwendet. (https://towardsdatascience.com/auto-encoder-what-is-it-and-what-is-it-used-for-part-1-3e5c6f017726)

 

Abbildung 1: Bestandteile eines Autoencoders

In dem von uns bearbeiteten Szenario wurde ein Datensatz zur Kundenabwanderungsanalyse verwendet. Zusammen mit dem Index und dem Klassenattribut hat der Datensatz 21 Attribute, wie Geschlecht, Dauer des Kundenverhältnisses, monatliche Kosten, etc. Bevor der Datensatz durch die SAP PAL verarbeitet wurde, wurden die Attributausprägungen skaliert. So wurden alle Attribute zwischen 0,3 und 0,7 skaliert, außer das Klassenattribut, welches zwischen 0 und 1 skaliert wurde, um einen Fokus auf dieses Attribut zu legen. Daraufhin wurde mit der SAP PAL ein KNN auf Basis des Datensatzes erstellt. Für die Erstellung eines solchen Netzwerkes sind lediglich die Eingabedaten, eine Parameter-Tabelle und eine leere Tabelle für das resultierende Modell notwendig. Das KNN wird dann von der SAP PAL im json-Format in der Modell-Tabelle gespeichert, aufgeteilt auf mehrere Zeilen mit je 5000 Zeichen. Anschließend wurde die Modell-Tabelle exportiert und mit einfach Mitteln in Python zerlegt, um als separate Modell-Tabellen für den Encoder und den Decoder zurück in die HANA-Datenbank importiert werden zu können. Dieser Schritt kann nach Bedarf jedoch auch mithilfe von SQL ohne Export im System selbst durchgeführt werden. Durch Verwendung der PREDICT-Prozedur der SAP PAL konnten die beiden Modelle verwendet werden. Auf diese Weise konnte das 19-dimensionale Datenmodell (21 abzüglich Index und Klassenattribut) zu einem zwei-dimensionalen Datensatz mithilfe des Encoders umgewandelt werden.

Abbildung 2 zeigt den verwendeten Datensatz in codierter Form. Zusätzlich wird auch ein Nutzen des Autoencoders dargestellt. Aus dem Datensatz wurde ein zufälliges Tupel ausgewählt und eine Merkmalsausprägung auf 13 (was weit über dem skalierten Maximum 0,7 liegt) gesetzt, was ganz klar einen Ausreißer, eine Anomalie, darstellt. Mithilfe der PREDICT-Prozedur konnten die zwei-dimensionalen Ausprägungen für dieses Tupel berechnet werden. Es sticht deutlich unter den restlichen Datenpunkten heraus.

Ein weiterer Nutzen des Autoencoders wird ebenfalls in Abbildung 2 deutlich. Den verwendeten Datensatz um mehr Tupel zu erweitern, ist in der zwei-dimensionalen Darstellung kein Problem. Werden Tupel der Klasse der abwandernden Kunden benötigt, können diese einfach in dem korrespondierenden Cluster hinzugefügt werden. Das ist in diesem Fall besonders einfach, weil bei der vorangegangenen Skalierung ein Fokus auf das Klassenattribut gelegt wurde und die Tupel auf diese Weise automatisch vom KNN stark danach sortiert wurden. Wurden neue Tupel nach Belieben hinzugefügt, können die Tupel mit dem Decoder wieder zurück in die ursprünglichen Dimensionen übersetzt werden.

Churn, Tupel

Abbildung 2: Darstellung des codierten Datensatzes

Fazit

Autoencoder lassen sich zu verschiedenen Zwecken einsetzen und sind mit der SAP PAL problemlos zu erstellen. Die Aufteilung des von der SAP PAL erstellten Modells in Encoder und Decoder kann je nach Umsetzung aufwendig sein, kann jedoch durch geeignete SQL-Prozeduren als ein Einmal-Aufwand abgewickelt werden. Bei der Anomalie-Analyse ist besonders herauszustellen, wie visuell die Analyse betrieben werden kann, da eine zwei-dimensionale Darstellung von codierten Daten leicht umzusetzen ist. In dem von uns praktisch umgesetzten Szenario konnte der verwendete Datensatz in zwei-dimensionaler Form um Tupel einer bestimmten Klasse (abspringende Kunden) ergänzt werden. Nach der Umwandlung mit dem Decoder hatte der erweiterte Datensatz daraufhin deutlich verbesserte Ergebnisse bei dem verwendeten ML-Algorithmus zur Kundenabwanderungsanalyse hervorgebracht. Die hinzugefügten Tupel, haben außerdem den bereits existierenden Tupeln stark geähnelt, wodurch der Datensatz durch generierte Tupel nicht zu stark verfälscht wurde.

Ansprechpartner

Oliver Ossenbrink

Geschäftsführung Vertrieb und HR