Machine Learning mit SAP HANA - Benedict Baur - E-Book

Machine Learning mit SAP HANA E-Book

Benedict Baur

0,0
19,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Seit einigen Jahren preist die SAP das intelligente Unternehmen als Wettbewerbsvorteil an. Mit diesem Buch springen Sie mitten hinein in die Welt der künstlichen Intelligenz (KI). Erfahren Sie, welche Algorithmen die leistungsstarke In-Memory-Datenbank SAP HANA für das Machine Learning (ML) bereithält. Auf deren Basis lassen sich Muster und Gesetzmäßigkeiten in Datenbeständen erkennen und Vorhersagen treffen, die helfen, Geschäftsprozesse zu verbessern.

Machen Sie sich mit den beiden zentralen Bausteinen vertraut: Predictive Analysis Library (PAL) und Automated Predictive Library (APL). Während die PAL ermöglicht, einzelne Prozeduren flexibel miteinander zu verknüpfen, um komplexe Szenarien abzubilden, bietet die APL insbesondere automatisierte ML-Szenarien, wie Klassifikationen, Regressionen, Cluster- oder Zeitreihenanalysen. Außerdem lernen Sie Python-Tools, z. B. das Jupyter Notebook, und Techniken für Text-Mining sowohl in SQL-Script als auch in Python kennen.

Immer wieder werden die Funktionen und Algorithmen am durchgängigen betriebswirtschaftlichen Beispiel einer Abwanderungsanalyse/Kündigungsvorhersage praktisch veranschaulicht. Dabei lernen Sie einzuschätzen, wie Sie diese Techniken für eigene Szenarien einsetzen und etwaige Hürden bei der Implementierung leichter überwinden.


  • Predictive Analysis und Automated Predictive Library in SQLScript und Python
  • Klassifikations- und Cluster-Analysen
  • Explorative Datenanalysen und Machine Learning im Jupyter Notebook
  • Text Mining

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 239

Veröffentlichungsjahr: 2022

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Benedict Baur

Machine Learning mit SAP HANA®

Benedict BaurMachine Learning mit SAP HANA®

ISBN:978-3-96012-168-8 (E-Book)

Lektorat:Anja Achilles

Korrektorat:Bernhard Edlmann, Raubling

Coverdesign:Philip Esch

Coverfoto:© metamorworks, # 1182183209 – istockphoto.com

Satz & Layout:Johann-Christian Hanke

 

1. Auflage 2022

© Espresso Tutorials GmbH, Gleichen 2022

URL:www.espresso-tutorials.de

 

Das vorliegende Werk ist in allen seinen Teilen urheberrechtlich geschützt. Alle Rechte sind vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion und der Vervielfältigung. Espresso Tutorials GmbH, Bahnhofstr. 2, 37130 Gleichen, Deutschland.

Ungeachtet der Sorgfalt, die auf die Erstellung von Text und Abbildungen verwendet wurde, können weder der Verlag noch die Autoren oder Herausgeber für mögliche Fehler und deren Folgen eine juristische Verantwortung oder Haftung übernehmen.

Feedback:Wir freuen uns über Fragen und Anmerkungen jeglicher Art. Bitte senden Sie diese an: [email protected].

Inhaltsverzeichnis

Cover
Titelseite
Copyright / Impressum
Vorwort
Danksagung
1 Einleitung
1.1 Machine Learning – ein Überblick
1.1.1 Anwendungsszenarien
1.1.2 Funktionen von SAP HANA
1.2 Zentrale Begriffe und Methoden
1.2.1 Daten für Machine Learning
1.2.2 Beaufsichtigtes Lernen
1.2.3 Unbeaufsichtigtes Lernen
1.3 Beispieldaten mit Eclipse importieren
1.4 Python-Tools verwenden
2 Predictive Analysis Library mit SQLScript
2.1 Entscheidungsbäume für Klassifkationsprobleme
2.1.1 Trainieren eines Entscheidungsbaums
2.1.2 Testen des trainierten Modells
2.2 Clusteranalysen mit K-Means
3 Automated Predictive Library mit SQLScript
3.1 Ad-hoc-Analysen mit Predictive Business Functions
3.1.1 Statistiken und Datenprofil berechnen
3.1.2 Einflussfaktoren ermitteln
3.2 Predictive Model Functions
3.2.1 Modelle trainieren
3.2.2 Modelle testen und anwenden
3.2.3 Modelle bewerten
3.2.4 Weiterführende Informationen
4 Der Python Machine Learning Client für SAP HANA
4.1 Datenexploration und -vorbereitung mit HANA-Techniken
4.2 Datenvisualisierung im Jupyter Notebook
4.2.1 Visualisierungsfunktionen des Python ML Client
4.2.2 Verwendung von Pandas und Plotly
4.3 PAL in Python aufrufen
4.3.1 Klassifikationsmodelle
4.3.2 Clusteranalysen
4.3.3 Modelle speichern und wiederverwenden
4.4 APL in Python aufrufen
5 Text Mining
5.1 Import der Beispieldaten
5.2 Verwendung des Volltextindex
5.2.1 Erstellen des Volltextindex
5.2.2 Dokumentensuche und Schlagwörter
5.3 Themenextraktion
5.3.1 Normalisieren der Texte
5.3.2 Der Algorithmus Latent Dirichlet Allocation
5.3.3 Visualisierung der Themenscores in Python
5.4 Textklassifikation mit dem Python ML Client
6 Integration in SAP-Anwendungen
6.1 Vergleich der SAP-Produkte und -Techniken
6.1.1 Native SAP-HANA-Entwicklung
6.1.2 SAP S/4HANA
6.1.3 SAP BW/4HANA oder BW on HANA
6.1.4 SAP Predictive Analytics
6.1.5 SAP Data Intelligence
6.1.6 SAP Analytics Cloud
6.1.7 SAP AI Business Services
6.1.8 Python, SQLScript oder ABAP
6.2 PAL-Prognosemodelle in Calculation Views
7 Aufbau einer Testumgebung
7.1 Einrichten der HANA-Instanz
HANA Express Edition
Lösungsvorlagen aus der SAP CAL
7.2 Einrichten der Python-Umgebung
8 Fazit und Ausblick
Zusammenfassung
Weitere interessante Techniken
Ausblick
A Der Autor
B Quellcodeverzeichnis
C Literaturverzeichnis
Empfehlungen zum Literaturverzeichnis
D Disclaimer

Willkommen bei Espresso Tutorials!

Unser Ziel ist es, SAP-Wissen wie einen Espresso zu servieren: Auf das Wesentliche verdichtete Informationen anstelle langatmiger Kompendien – für ein effektives Lernen an konkreten Fallbeispielen. Viele unserer Bücher enthalten zusätzlich Videos, mit denen Sie Schritt für Schritt die vermittelten Inhalte nachvollziehen können. Besuchen Sie unseren YouTube-Kanal mit einer umfangreichen Auswahl frei zugänglicher Videos: https://www.youtube.com/user/EspressoTutorials.

Kennen Sie schon unser Forum? Hier erhalten Sie stets aktuelle Informationen zu Entwicklungen der SAP-Software, Hilfe zu Ihren Fragen und die Gelegenheit, mit anderen Anwendern zu diskutieren: http://www.fico-forum.de.

Eine Auswahl weiterer Bücher von Espresso Tutorials:

Johannes Gerbershagen:

SAP

®

-Praxishandbuch ABAP Core Data Services (CDS)

Tobias Steckenborn:

Schnelleinstieg in SAP

®

Cloud Platform Workflow

Eik Sunke:

Cloud-Entwicklung in SAP HANA

®

Viktor Laufer, Rüdiger Deppe:

ABAP-Programmierung unter SAP S/4HANA

®

Tobias Steckenborn:

Schnelleinstieg SAP Business Technology Platform (BTP) – Services und Integration

Johannes Gerbershagen:

Praxishandbuch SAP

®

Gateway

Vorwort

Machine Learning, Data Science und künstliche Intelligenz sind Technologieansätze, die in den letzten Jahren viel Aufmerksamkeit erfahren haben und deren Einsatz sich in Wirtschaft und Industrie zunehmend verbreitet.

Die SAP hat in den letzten Jahren in allen drei Bereichen neue Lösungen auf den Markt gebracht und bestehende Produkte weiterentwickelt. Insbesondere SAP HANA als leistungsfähige In-Memory-Datenbank, Datenplattform und Herzstück vieler moderner SAP-Produkte bietet vielfältige Machine-Learning-Algorithmen. Zentrale Bausteine sind die beiden HANA-nativen Bibliotheken Predictive Analysis Library und Automated Predictive Library. Diese können sowohl mit SQLScript als auch mit Non-SAP-Sprachen wie Python oder R verwendet werden.

Mit diesem Buch möchte ich Ihnen einen Überblick über die Möglichkeiten geben, die SAP HANA für den Einsatz von Machine Learning (ML) bietet, und anhand ausgewählter Beispiele zeigen, wie man die HANA-Algorithmen implementieren kann. Dadurch sollen Sie besser einschätzen lernen, wie Sie diese Techniken für eigene Szenarien einsetzen und etwaige Hürden bei der Implementierung leichter überwinden.

Im ersten Kapitel erläutere ich zunächst wichtige Begriffe und Vorgehensweisen des Machine-Learning-Prozesses. Sie werden lernen, wie Sie die Beispieldaten in Ihre HANA-Plattform importieren sowie notwendige Schemata und Tabellen erstellen. Diese Vorbereitungen dienen als Grundlage, um die praktischen Beispiele in den Folgekapiteln nachzuvollziehen. Sie erfahren außerdem, wie Sie die Python-Tools, z.B. das Jupyter Notebook, einsetzen und von dort eine Verbindung zur Ihrer HANA-Instanz aufbauen.

Kapitel 2 führt in die Verwendung der Predictive Analysis Library (PAL) ein. Durch ausgewählte Beispiele lernen Sie, wie die PAL-Funktionen in SQLScript aufgerufen werden. Kapitel 3 zeigt das entsprechende Vorgehen in SQLScript für die Automated Predictive Library. In Kapitel 4 erfahren Sie, wie Sie die HANA-Funktionen mit dem Python Machine Learning Client einsetzen können. Die Techniken für Text Mining werden in Kapitel 5 vorgestellt. Diese werden sowohl in SQLScript als auch in Python gezeigt. Kapitel 6 skizziert die Integrationsmöglichkeiten der ML-Techniken in diverse SAP-Produkte.

Sobald Sie das Einführungskapitel durchgearbeitet und die Beispieldaten importiert haben, können Sie die Folgekapitel weitgehend unabhängig voneinander lesen. Aus dem SAP-Bereich kommenden Lesern empfehle ich, mit Kapitel 2 anzufangen. Dieses Kapitel bietet eine gute Möglichkeit, sich mit dem Vorgehen im Bereich Machine Learning in der HANA-Umgebung vertraut zu machen. Leser, die bereits mit Machine Learning in Python gearbeitet haben und die HANA-Algorithmen direkt in Python ausprobieren möchten, können auch direkt in Kapitel 4 einsteigen.

Im Verlauf des Buches zeige ich verschiedene Code-Beispiele, mit denen Sie die Funktionen am eigenen System ausprobieren können. Im Quellcodeverzeichnis (Anhang B) sind die Listings zu einem Abschnitt jeweils als eine zusammenhängende Datei aufgeführt. Zusätzlich finden Sie im Quellcode-Repository die Listings noch mal als einzelne Dateien, um Ihnen das mühsame Abtippen zu ersparen.

Codebeispiele in Github

Sämtliche Codebeispiele des Buches und die im Quellcodeverzeichnis aufgeführten Skripte finden Sie in meinem Github-Repository: https://github.com/drabap/mlhana.

Danksagung

An dieser Stelle möchte ich mich bei meiner Familie und meinen Freunden für die Unterstützung beim Schreiben dieses Buches bedanken. Dem Verlag Espresso Tutorials danke ich für die Möglichkeit, ein Buch über diese spannenden Themen zu veröffentlichen, und vor allem Martin Munzel und Anja Achilles für die Geduld und Unterstützung beim Schreiben des Manuskripts. Insbesondere möchte ich Jörg Brandeis für die Bereitschaft danken, Teile des Manuskripts zu lesen und mir sein HANA-System für meine Machine-Learning-Entwicklungen bereitzustellen. Ebenso danke ich Dr. Zoufiné Lauer-Baré für inspirierende Diskussionen zu neuronalen Netzen und für seinen Review der Python-bezogenen Inhalte im Buch.

In den Text sind Kästen eingefügt, um wichtige Informationen besonders hervorzuheben. Jeder Kasten ist zusätzlich mit einem Piktogramm versehen, das diesen genauer klassifiziert:

Hinweis

Hinweise bieten praktische Tipps zum Umgang mit dem jeweiligen Thema.

Beispiel

Beispiele dienen dazu, ein Thema besser zu illustrieren.

Achtung

Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.

Video

Schauen Sie sich ein Video zum jeweiligen Thema an.

Übungsaufgabe

Übungsaufgaben helfen Ihnen, Ihr Wissen zu festigen und zu vertiefen.

Die Form der Anrede

Um den Lesefluss nicht zu beeinträchtigen, verwenden wir im vorliegenden Buch bei personenbezogenen Substantiven und Pronomen zwar nur die gewohnte männliche Sprachform, meinen aber gleichermaßen Personen weiblichen und diversen Geschlechts.

Hinweis zum Urheberrecht

Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE. Alle Rechte an den Screenshots hält die SAP SE. Der Einfachheit halber haben wir im Rest des Buches darauf verzichtet, dies unter jedem Screenshot gesondert auszuweisen.

1   Einleitung

Zunächst erhalten Sie einen Überblick über die Möglichkeiten, die sich aus dem Einsatz von Machine Learning mit SAP HANA ergeben. Die relevanten Funktionen und Implementierungstechniken werden vorgestellt, zentrale Begriffe des Machine Learning anhand von typischen Anwendungsfällen erklärt und die technischen Vorbereitungen getroffen, mit denen Sie die Beispiele der Folgekapitel auf Ihrem eigenen HANA-System nachvollziehen können.

1.1   Machine Learning – ein Überblick

Machine Learning (ML), auf Deutsch: maschinelles Lernen, ist ein Teilgebiet der künstlichen Intelligenz, zu dem Techniken für die Untersuchung von Mustern und Zusammenhängen in Daten gezählt werden. Im betrieblichen Umfeld kommen diese Techniken insbesondere dann zum Einsatz, wenn aus Daten neue Erkenntnisse gewonnen oder Prognosen für die Zukunft getroffen werden sollen.

1.1.1   Anwendungsszenarien

Beispielhafte Anwendungsszenarien für Machine Learning sind:

Abwanderungsanalyse/Kündigungsvorhersage:

Vorhersage, welche Kunden einer Firma in der Zukunft (genauer: in einem gewissen Zeitraum ab heute) kündigen werden. Diese Informationen können zum Einleiten von Gegenmaßnahmen zur Verhinderung der drohenden Kündigung, z.B. Tarifanpassungen oder Treueprämien für kündigungsgefährdete Kunden, eingesetzt werden.

Segmentierung von Daten:

Unterteilung von Kunden mithilfe von Merkmalen in Gruppen, sogenannte Cluster. Diese Gruppen werden nach gemeinsamen Eigenschaften ausgewertet, um die Zusammensetzung des Kundenstamms besser zu verstehen.

Betrugserkennung:

Identifizierung betrügerischer Transaktionen bei Überweisungen oder elektronischen Zahlungsvorgängen.

Zeitreihenanalysen:

In zeitlich geordneten Daten (z.B. Umsätze nach Tagen oder Sensorwerte nach Stunden) werden Trends, periodische Schwankungen oder allgemeine zeitliche Muster erkannt.

Text Mining:

Daten in Textform, z.B. Anfragen, Kommentare, Nachrichten etc., werden automatisch verarbeitet, etwa zur Kategorisierung und zum Erkennen von gemeinsamen Inhalten.

Eine Zusammenfassung der verschiedenen Use-Cases stellt Abbildung 1.1 dar.

Abbildung 1.1: Anwendungsfälle für Machine Learning

Der Einsatz von ML-Techniken sollte dort in Betracht gezogen werden, wo hinreichend viele Daten zur Analyse einer Problemstellung vorliegen und eine klassische Programmierung expliziter Entscheidungsregeln oder Berechnungen nicht möglich ist oder zu kompliziert für eine Lösung der Problemstellung wäre. Der Nutzen von ML-Techniken besteht insbesondere darin, bisher unbekannte Zusammenhänge oder Gesetzmäßigkeiten in den Daten zu erkennen. Machine Learning ist somit eng verwandt mit den Bereichen Data Mining, Data Science und Advanced Analytics.

1.1.2   Funktionen von SAP HANA

SAP HANA bietet verschiedene eingebaute bzw. installierbare Funktionen für Machine Learning:

Predictive Analysis Library (PAL):

Diese Bibliothek verfügt über ein breites Repertoire an Algorithmen aus den Bereichen Statistik und Machine Learning. Die einzelnen Prozeduren lassen sich flexibel miteinander verknüpfen, um komplexe Szenarien abzubilden.

Automated Predictive Library (APL):

Diese Bibliothek stellt Prozeduren bereit, um weitgehend automatisiert Machine-Learning-Szenarien wie Klassifikationen, Regressionen, Cluster- oder Zeitreihenanalysen durchzuführen.

Text Mining:

Techniken zur Analyse von Texten, wie z.B. Dokumentensuche, Schlagwortextraktion oder Themenextraktion. Die Algorithmen werden z.T. über spezifische SQLScript-Syntax aufgerufen oder sind in bestimmten Prozeduren der PAL implementiert.

PAL und APL bilden jeweils eine eigene Application Function Library (AFL). Bei einer AFL handelt es sich um eine von der SAP bereitgestellte Bibliothek von Funktionen zu einem bestimmten Themenkomplex, etwa Machine Learning. Die Funktionen einer AFL sind in C++ implementiert und werden direkt in der Datenbank ausgeführt.

Die APL kapselt die einzelnen Schritte des Machine Learning, wie das Vorbereiten der Eingabedaten, das Trainieren der Modelle und die Steuerung der Modellkomplexität. Zusätzlich werden relevante Erfolgskennzahlen für die Beurteilung des Modells automatisch berechnet. Dagegen müssen diese Schritte in der PAL jeweils einzeln durch Aufrufe der entsprechenden Prozeduren durchgeführt werden. Dafür erhalten Sie mit der PAL mehr Stellschrauben und Freiheiten bei der Entwicklung von ML-Modellen. Insbesondere können Sie aus verschiedenen Modelltypen und Algorithmen wählen, die die PAL unterstützt.

PAL vs. APL

Beachten Sie, dass PAL und APL eigenständige Komponenten mit eigener Codebasis sind und sich somit in der jeweiligen Vorgehensweise zur Anwendung der Prozeduren deutlich voneinander unterscheiden.

Es stehen Ihnen verschiedene Ansätze zur Anwendung der HANA-nativen Algorithmen zur Verfügung:

1.   Direkte Verwendung der PAL/APL-Prozeduren in SQLScript

2.   Verwendung von APIs in Python bzw. R Script für den Aufruf der PAL/APL-Prozeduren

Die Nutzung von SQLScript erlaubt die direkte Integration der ML-Techniken in HANA-native Applikationen und HANA-Artefakte wie Datenbankprozeduren, Tabellenfunktionen oder Calculation Views. SQLScript bietet außerdem vielfältige Möglichkeiten zur Aufbereitung der Daten und Auswertung der ML-Modelle. Mit SQLScript können Sie darüber hinaus ML-Algorithmen in ABAP-verwaltete Objekte wie AMDPs (ABAP Managed Database Procedures) oder CDS-Tabellenfunktionen für ABAP CDS Views integrieren.

Mit dem Python Machine Learning Client für SAP HANA (kurz: Python ML Client) stellt die SAP eine Sammlung von Python-APIs bereit, mit denen Sie u.a. die nativen HANA-Prozeduren der PAL und APL direkt in Python verwenden können. Das Orchestrieren der einzelnen Schritte beim Machine Learning findet in Python statt, die Ausführung der ML-Algorithmen hingegen erfolgt in der HANA-Datenbank. Es werden hierbei exakt die gleichen nativen Prozeduren aufgerufen wie bei der Verwendung in SQLScript. Für die Sprache R Script gibt es den entsprechenden »R Machine Learning Client für SAP HANA«, der die analoge Funktionsweise in R realisiert. Die Verwendung des Python- bzw. R-Client für Machine Learning ist besonders für die explorative und experimentelle Phase der Entwicklung von ML-Modellen interessant, in der Sie auf diese Weise das Know-how von Data-Science-Experten, die häufig mit Python oder R arbeiten, für HANA-Szenarien nutzbar machen.

Abbildung 1.2 fasst die ML-Funktionen von SAP HANA und die Möglichkeiten zur Anbindung in den verschiedenen Sprachen zusammen.

Abbildung 1.2: Architektur für Machine Learning mit SAP HANA

Warum lohnt es sich, Machine Learning in SAP HANA zu nutzen? Bei ML-Prozessen handelt es sich um sehr datenintensive Prozesse. Die direkte Ausführung in der Datenbank – statt in einem getrennten Applikationsserver oder Desktop-Tool – bietet Vorteile in Bezug auf die Performance und den Speicherverbrauch:

Der Transfer von Rohdaten oder Zwischenergebnissen zwischen Datenbank und Applikationsserver entfällt.

Die PAL/APL-Algorithmen sind für die Ausführung in der HANA-Datenbank optimiert und profitieren von Techniken wie der parallelisierten Ausführung.

Durch die Verwendung von SQLScript ist eine nahtlose Integration in viele SAP-Applikationen möglich.

Auf der anderen Seite decken die HANA-Bibliotheken natürlich nicht alle im Machine Learning verfügbaren Algorithmen ab. Je nach Szenario sollten daher auch externe Techniken wie Python (oder R) in Betracht gezogen werden, z.B. für die Verwendung moderner Deep-Learning-Algorithmen. Der in Kapitel 4 vorgestellte Python ML Client ermöglicht einerseits die Nutzung der HANA-basierten ML-Algorithmen und andererseits die Konsumierung der HANA-Daten. Er bildet somit einen guten Baustein für eine hybride Architektur, bei der in einer (Python-)Umgebung sowohl die HANA-Algorithmen mit Ausführung in der Datenbank als auch die vielfältigen Python-Bibliotheken mit den HANA-Daten genutzt werden können.

1.2   Zentrale Begriffe und Methoden

An einem konkreten Beispiel möchte ich nun die Vorgehensweise beim Entwickeln von Machine-Learning-Modellen veranschaulichen und die zentralen Begriffe erläutern, für die ich mich insbesondere am Glossar aus dem Buch »Data Science für Unternehmen« von Provost und Fawcett [1] orientiert habe. Diese Begriffe und deren Bedeutung sind im Machine-Learning-Umfeld allgemein gültig.

1.2.1   Daten für Machine Learning

Einer der entscheidenden Faktoren für die Entwicklung von Machine-Learning-Modellen ist das Vorliegen von Daten in ausreichender Menge und Qualität.

Betrachten wir einen der im vorherigen Abschnitt erwähnten Use-Cases aus dem Bereich der Analyse von Kundendaten: Eine Firma mit einer mittleren oder großen Anzahl an Vertragskunden, z.B. eine Bank, eine Versicherung oder ein Telefonanbieter, möchte mithilfe von Daten vorhersagen, welche Kunden in einem bestimmten Zeitintervall in der Zukunft ihren Vertrag kündigen oder nach Ende der Vertragslaufzeit nicht verlängern werden. Dazu können beispielsweise folgende der Firma vorliegende Informationen genutzt werden:

Alter eines Kunden,

regionale Informationen wie der Wohnort oder das Herkunftsland des Kunden,

die Anzahl der genutzten Produkte der Firma,

die Dauer der Kundenbeziehung (seit Abschluss des ersten Vertrags),

der Kontostand oder

die Bonität (Credit Score).

Nehmen wir an, diese Daten liegen als Snapshot mit einem Stand von vor drei Monaten vor und bei jedem (damaligen) Kunden ist vermerkt, ob er in den darauffolgenden drei Monaten gekündigt hat. Diese Information bezeichnen wir als Abwanderungskennzeichen oder Kündigungsflag. Für die Vorhersage des zukünftigen Abwanderungsverhaltens soll ein Machine-Learning-Algorithmus zum Einsatz kommen, der ein passendes Modell aus diesen historischen Daten erstellt. Der entsprechende Vorgang nennt sich allgemein Induktion oder Modellentwicklung und kann auf verschiedene Arten durchgeführt werden, die im Folgeabschnitt erläutert werden. Abbildung 1.3 zeigt den Zusammenhang zwischen Daten, Modell und der Prognose.

Abbildung 1.3: Vom Modell zur Prognose

Die meisten Machine-Learning-Algorithmen erwarten die Daten in Form einer Tabelle, bei der jede Zeile einem Datensatz (auch Instanz genannt) entspricht. In unserem Fall sind die Instanzen also die einzelnen Kunden. Sämtliche für die Modellentwicklung relevanten Informationen müssen durch Spalten der Tabelle repräsentiert sein. Diese Informationen werden als Merkmale, Attribute, Features oder auch Variablen bezeichnet. Bei den Variablen ist zwischen den Eingabevariablen und den Ausgabe- bzw. Zielvariablen zu unterscheiden. In unserem Fallbeispiel sind die Variablen wie »Alter«, »Land« oder »Credit Score« die Eingabevariablen, da diese vom Machine-Learning-Modell als Eingabedaten für die Prognosebildung verwendet werden sollen. Die Variable »Kündigungsflag« hingegen ist die Zielvariable. Das zu entwickelnde Machine-Learning-Modell soll pro Kunde den Wert der Zielvariablen vorhersagen bzw., mit welcher Wahrscheinlichkeit ein Kunde kündigen wird.

Bei den Variablen sind verschiedene Typen zu unterscheiden, die sich aus dem Datentyp ergeben:

kategorial (symbolisch):

eine text- oder zahlenartige Variable, die eine von endlich vielen möglichen Kategorien symbolisiert. Hier sind zwei Unterformen zu unterscheiden:

nominal:

Die Werte sind nicht geordnet, bei einer Zahl ist die Größe der Zahl ohne Bedeutung.

ordinal:

Die Werte sind geordnet, die Größe einer Zahl hat eine Bedeutung.

kontinuierlich (auch stetig, quantitativ):

eine numerische Variable, die ganzzahlige Werte (aus einem großem Wertebereich) oder Dezimalwerte annehmen kann.

Unterschied Eingabe- und Zielvariable

Die historischen Daten – der Snapshot aus der Vergangenheit – müssen sowohl die Eingabevariablen als auch die Zielvariable enthalten. Die aktuellen Daten der Kunden, die (noch) nicht gekündigt haben, können nur die Informationen zu den Eingabevariablen enthalten, da das Ereignis, dass ein Kunde kündigt, in der Zukunft liegt. Somit ist der Wert der Zielvariablen zum Zeitpunkt der Prognosebildung noch nicht bekannt. Das Machine-Learning-Modell soll den Wert dieser Variablen basierend auf den aktuell vorliegenden Informationen abschätzen.

Bei der Auswahl der Eingabevariablen in den historischen Daten ist also darauf zu achten, dass diese zum Zeitpunkt der Prognose wirklich vorliegen können.

Kategoriale Variable: nominal vs. ordinal

Das Merkmal »Land« ist ein typisches Beispiel für eine kategoriale Variable. In SAP-Systemen sind Bundesländer (oder allgemein Regionen von Ländern) numerisch kodiert. Die relative Größe dieser Ländercodes hat allerdings keine Bedeutung. Somit muss diese Spalte als nominale kategoriale Variable verwendet werden.

Der Typ der Variablen ist durch den Datentyp meist schon festgelegt. Bei numerischen ganzzahligen Datentypen (z.B. INTEGER) hingegen können Sie wählen, ob die zugehörige Variable als nominal, ordinal oder kontinuierlich betrachtet werden soll. Die korrekte Wahl ergibt sich pro Variable aus der Bedeutung der Werte und dem möglichen Wertebereich, siehe etwa Hinweiskasten »Kategoriale Variable: nominal vs. ordinal«. Bei den PAL-Algorithmen müssen Sie lediglich für die numerischen ganzzahligen Variablen angeben, ob diese als kategoriale nominale oder als stetige Variable behandelt werden sollen, siehe Abschnitt 2.1. Bei den APL-Algorithmen müssen Sie pro Variable den Typ explizit angeben, siehe dazu Abschnitt 3.2.1.

Wie kommt man nun von den erfassten Daten zum fertigen Prognosemodell? Hierfür sorgt der sich anschließende Trainings- bzw. Lernprozess. Für unsere Betrachtung sind zwei Arten von Lernverfahren relevant: das beaufsichtigte und das unbeaufsichtigte Lernen.

1.2.2   Beaufsichtigtes Lernen

Beim beaufsichtigten Lernen (engl.: supervised learning) wird ein Modell entwickelt, das auf Basis der Eingabevariablen den Wert der Zielvariablen möglichst gut vorhersagen soll. Es sind zwei Unterarten des beaufsichtigten Lernens zu unterscheiden:

Klassifikationsanalyse/-problem:

Die Zielvariable ist kategorial

Regressionsanalyse/-problem:

Die Zielvariable ist kontinuierlich

Die Vorhersage des Kündigungsverhaltens ist ein Klassifikationsproblem, da die Zielvariable »Kündigung« nur die Ausprägungen »JA«/»NEIN« (bzw. 0 und 1) hat. Die Ausprägungen einer kategorialen Zielvariable nennt man auch Klassen, woraus sich die Bezeichnung Klassifikationsproblem ableitet.

Beispiele für Regressionsprobleme sind die Schätzung des Kontostands eines Kunden oder die Vorhersage einer Temperatur an einer Messstation zu einem bestimmten Zeitpunkt. Bei Klassifikationsproblemen wird die Zielvariable auch Label (oder Beschriftung) genannt.

Ein Modell wird auf Basis eines Modelltyps erstellt. Der Modelltyp bestimmt die innere Struktur des Modells und den Algorithmus für den Trainingsprozess. Im beaufsichtigen Lernen sind folgende Algorithmen bzw. Modelltypen weit verbreitet:

Nächste-Nachbarn-Klassifizierung

Entscheidungsbaum

Künstliches neuronales Netz

Support Vector Machine

Logistische Regression

Jeder Modelltyp verfügt über interne Koeffizienten bzw. Freiheitsgrade, die beim Trainingsprozess passend für die jeweilige Problemstellung bestimmt werden müssen. Man sagt auch, das Modell lernt, den korrekten Wert der Zielvariablen vorherzusagen, oder das Modell wird an die Daten angepasst.

Ausgangspunkt für den Lernprozess ist eine gegebene Menge von Grunddaten, bei denen für jeden Datensatz der korrekte Wert der Zielvariable bekannt ist. Bei Klassifikationsproblemen spricht man auch von beschrifteten Daten, da gewissermaßen jeder Datensatz mit der korrekten Klassenzuordnung »beschriftet« ist.

Betrachten wir zunächst einen vereinfachten zweistufigen Prozess bestehend aus Trainings- und Testphase: Aus der zur Verfügung stehenden Menge an Grunddaten, bei denen für jeden Datensatz der korrekte Wert der Zielvariablen bekannt ist, werden zwei disjunkte Untermengen gebildet:

1.   Trainingsdaten:

In der Trainingsphase werden die Modellkoeffizienten vom Trainingsalgorithmus so angepasst, dass das Modell die Zielvariable für die Trainingsdaten möglichst gut prognostiziert. Durch Vergleich von prognostiziertem und tatsächlichem Wert der Zielvariablen für die Datensätze lassen sich die Korrektklassifikationsrate (auch Treffsicherheit) oder umgekehrt der Klassifikationsfehler bestimmen. Berechnet man den Klassifikationsfehler für die Trainingsdaten, spricht man vom Trainingsfehler. Der Trainingsfehler entspricht also dem Anteil der falsch klassifizierten Trainingsdaten, die Korrektklassifikationsrate dem Anteil der korrekt klassifizierten Sätze.

2.   Testdaten:

Um einschätzen zu können, ob ein Modell für die Prognosebildung anhand neuer Daten geeignet ist, muss es auf eine Menge von Testdaten angewendet werden, die während des Trainingsprozesses – bewusst – zurückgehalten wurde. Durch Vergleich der Prognose des Modells mit dem korrekten Ist-Wert lässt sich nun der Testfehler oder Generalisierungsfehler bestimmen. Dieser beschreibt, wie gut sich das gefundene Modell auch für neue Daten verallgemeinern lässt, also solche, die nicht für das Training verwendet wurden. Damit kann die Verallgemeinerungsfähigkeit des Modells bzw. die Leistung des Modells für die Testdaten beschrieben werden. Eine hohe Korrektklassifikationsrate für die Testdaten zeigt, dass sich die beim Training gefundenen Zusammenhänge innerhalb der Trainingsdaten verallgemeinern lassen und nicht nur rein zufällige Muster sind.

Trainings- und Testdaten bei der Kündigungsvorhersage

Betrachten Sie das Beispiel aus Abbildung 1.3 zur Entwicklung eines Modells für die Kündigungsvorhersage: Die (kategoriale) Zielvariable ist in der orangefarbenen Spalte »Kündigung nach drei Monaten« (kurz EXITED) mit den zwei Ausprägungen »JA«/»NEIN« dargestellt. Der korrekte Wert der Zielvariablen ist nur für die Kundensätze in den historischen Daten bekannt. Die Trainings- und Testdaten werden beide aus den historischen Daten gebildet, aber als disjunkte Mengen. In der Trainingsphase wird der Wert der Zielvariablen für jeden Satz der Trainingsdaten verwendet, um das Modell an die Daten anzupassen. Die Testdaten dürfen nicht in der Trainingsphase bei der Anpassung des Modells verwendet werden, sondern erst in der Testphase, in der sie zum Vergleich des tatsächlichen Kündigungsverhaltens und des vom Modell prognostizierten Kündigungsverhaltens eingesetzt werden.

Die Korrektklassifikationsrate allein ist nicht immer ausreichend, um die Leistung eines Modells genau genug zu beurteilen. Es gibt daher weitere Kennzahlen, sogenannte Gütekriterien, die zur Beurteilung herangezogen werden können. Auch diese basieren auf dem Vergleich von Prognose- und Ist-Wert für die Datensätze einer Testdatenmenge. Eine wichtige Technik hierbei ist die Konfusionsmatrix (auch bekannt als Verwechslungsmatrix oder Wahrheitsmatrix), die den Anteil der korrekt klassifizierten Datensätze in den einzelnen Klassen zählt. Die Konfusionsmatrix und daraus abgeleitete Gütekriterien werde ich in Abschnitt 2.1 einführen.

Viele Modelltypen lassen sich vor dem Training durch Hyperparameter konfigurieren. Bei Entscheidungsbäumen lässt sich dadurch z.B. die Struktur des erstellten Baums beeinflussen, bei neuronalen Netzen kann u.a. die Architektur (bzw. Topologie) aus der Anzahl und Größe der versteckten Schichten festgelegt werden. Diese Hyperparameter werden beim Trainingsprozess nicht automatisch bestimmt. Durch Einführung einer weiteren Menge, der Validierungsdaten, lässt sich aber die Leistung von Modellen mit verschiedenen Konfigurationen der Hyperparameter vergleichen. Hierfür werden die Korrektklassifikationsrate oder andere Gütekriterien auf Basis der Validierungsdaten berechnet und der Einfluss der Hyperparameter untersucht. Dies ergibt einen dreistufigen Prozess:

1.   Lernphase: Modelle mit verschiedenen Hyperparameterkonfigurationen mit den Trainingsdaten trainieren

2.   Validierungsphase: Leistung der verschiedenen Modelle anhand der Validierungsdaten vergleichen; Konfiguration der Hyperparameter, die zum besten Modell führen, bestimmen und fixieren

3.   Testphase: Leistung des Modells mit den in der Validierungsphase gewählten Hyperparametern für die Testdaten bestimmen

Der letzte Schritt, die Testphase, ist der Realitätscheck, um die Eignung des Modells zu bewerten. Hat das Vorgehen aus Lernphase und Validierungsphase zum gewünschten Resultat geführt? Lässt sich das Modell praktisch verwenden, liefert es also für neue Daten gute Prognosen? Lern- und Validierungsphase müssen nicht zwangsläufig nacheinander ablaufen. Denkbar ist auch, erst mal mit wenigen Konfigurationen für die Hyperparameter in die Lernphase zu starten. Dann können in der Validierungsphase vielversprechende Konfigurationen identifiziert und auf dieser Basis weitere Konfigurationen trainiert und bewertet werden. Die APL führt die Trainings- und Validierungsphase automatisch abwechselnd aus und wiederholt beide Phasen, bis ein geeignetes Modell gefunden ist bzw. gewisse Stoppkriterien erreicht werden. Auch viele PAL-Algorithmen bieten die Möglichkeit, die Optimierung der Hyperparameter zu übernehmen, siehe hierzu insbesondere Abschnitt 4.3.1.

Abbildung 1.4 veranschaulicht das mehrstufige Vorgehen aus Trainings-, Validierungs- und der abschließenden Testphase.

Abbildung 1.4: Mehrstufiges Vorgehen mit Training, Validierung und Test

Den Vorgang, das fertige Modell auf (neue) Daten zur Prognosebildung anzuwenden, nennt man Inferenz. Bei Klassifikationsalgorithmen wird auch der Begriff Scoring verwendet.

1.2.3   Unbeaufsichtigtes Lernen

Weitere wichtige Machine-Learning-Verfahren werden unter dem Begriff unbeaufsichtigtes Lernen zusammengefasst. Bei diesen Verfahren wird keine Zielvariable angegeben, sondern alle (selektierten) Features werden als Eingabevariablen verwendet. Diese Verfahren finden Einsatz in explorativen Analysen, etwa um Muster und Zusammenhänge in Daten zu erkennen, oder für die Dimensionsreduktion, d.h. das Komprimieren der Features auf eine kleinere Anzahl von (transformierten) Features. Wichtig sind insbesondere die Clustering-Algorithmen, die die Eingabedaten in Untergruppen segmentieren. Dadurch lassen sich z.B. Gruppen von Kunden mit ähnlichem Verhalten identifizieren. Auch beim Clustering wird ein Modell erstellt, das anschließend auf neue Daten angewandt wird, um diese den bereits erstellten Clustern zuzuweisen.

Vertiefende Betrachtung der ML-Lernverfahren

Techniken für das beaufsichtigte Lernen stelle ich Ihnen im Detail in den Abschnitten 2.1, 3.2, 4.3 und 5.4 vor. Beispiele für das unbeaufsichtigte Lernen – insbesondere die Clustering-Verfahren – finden Sie in den Abschnitten 2.2, 4.3.2, und 5.3.

1.3   Beispieldaten mit Eclipse importieren

In diesem Abschnitt zeige ich, wie Sie die notwendigen Datenbanktabellen für die Beispiele in den Folgekapiteln erstellen und die Beispieldaten in die HANA-Datenbank importieren. Für den Import der Daten und die Ausführung der SQL-Beispiele im Buch verwende ich die Eclipse-Entwicklungsumgebung mit installierten SAP-HANA-Tools. Alternativ können Sie den webbasierten »SAP HANA Database Explorer« des SAP Business Application Studio (bzw. der Web IDE) oder die Software »DBeaver« verwenden. Für die SQL-Beispiele genügt zumeist der Einsatz einer SQL-Konsole in Eclipse (bzw. den anderen Tools).

Um die Ergebnisse der Beispiele zu visualisieren, nutze ich teilweise die Funktion »Datenvorschau« (Data preview) für HANA-Tabellen. Deren Verwendung beschreibe ich zwar spezifisch für Eclipse, der webbasierte Database Explorer bietet aber ähnliche Visualisierungsmöglichkeiten. DBeaver enthält in der kostenfreien Community-Edition leider keine Visualisierungsmöglichkeiten, wohl aber in der kostenpflichtigen Version.

Um die folgenden Schritte nachzuvollziehen, benötigen Sie Zugriff auf eine HANA-Datenbank. Ich gehe im Weiteren davon aus, dass Sie sich in Eclipse mit dem HANA-System verbunden haben. Der Import der Daten erfordert noch keine besonderen Dienste in der HANA-Datenbank. Wie Sie die Machine-Learning-Funktionen prüfen und ggf. aktivieren, finden Sie in Abschnitt 7.1.

Öffnen Sie nun in Eclipse eine SQL-Konsole, die mit Ihrem HANA-System verbunden ist, und führen Sie in dieser das Skript Ch_1_Create_ML_Datamodel.sql aus, das Sie im Quellcode-Verzeichnis (Anhang B) finden (Abbildung 1.5).

Abbildung 1.5: Vorbereitende Schritte in der SQL-Konsole

Wenn das Skript erfolgreich durchläuft, werden vier neue Schemata angelegt:

APL_CACHE

ML_APL

ML_DATA

ML_MODEL

Eventuell erhalten Sie eine Fehlermeldung, weil das Schema APL_CACHE bereits existiert. Dies ist aber kein Problem, da es nur zur temporären Ablage der APL verwendet wird. Falls die drei anderen Schemata schon in Ihrem System existieren, passen Sie das Skript so an, dass Schemata mit anderen Namen erstellt werden. Allerdings müssen Sie dann auch die Folgeskripte so anpassen, dass diese die richtigen Schemata verwenden.

Im Schema ML_DATA sehen Sie drei zunächst leere Tabellen:

CHURN

IRIS

MALL_CUSTOMERS

Diese füllen Sie nun mit Beispieldaten aus den folgenden externen Quellen:

CHURN:

Beispieldatenmenge »Churn modeling« [

2

]:

https://www.kaggle.com/shubh0799/churn-modelling?select=Churn_Modelling.csv

. Die zugehörige CSV-Datei finden Sie auch im Quellcodeverzeichnis (Anhang B) unter Ch_1_Churn_Modelling.csv.

IRIS:

Beispieldatenmenge »Iris Flower Dataset« [

3

]: Die CSV-Datei finden Sie im Quellcodeverzeichnis unter dem Namen

Ch_1_Iris_Plantid.csv.

Die Originaldatei von

https://www.kaggle.com/datasets/arshid/iris-flower-dataset

wurde um die Schlüsselspalte PLANTID zur eindeutigen Identifizierung jedes Datensatzes ergänzt.

MALL_CUSTOMERS:

Datenmenge »Customer Mall Segmentation« [

4

]:

https://kurzelinks.de/qdz4

(verweist auf die CSV-Datei

Mall_Customers.csv

aus dem Github-Repository:

https://github.com/SteffiPeTaffy/machineLearningAZ/

).

Ich zeige Ihnen nun, wie Sie in Eclipse die CSV-Datei »Churn Modeling« in die HANA-Tabelle CHURN importieren.

Wählen Sie im Menü den Punkt File • Import. Im Dialogfenster wählen Sie SAP HANA Content • Data from Local File (siehe Abbildung 1.6).

Abbildung 1.6: Der Importdialog für SAP HANA

Im nächsten Schritt wählen Sie das Zielsystem aus und klicken auf Next. Abbildung 1.7 zeigt den sich öffnenden Dialog zur Auswahl der Datei. Suchen Sie die CSV-Datei auf Ihrem Rechner und tragen Sie sie unter Source File ein. Im Bereich File Details wählen Sie als Trennzeichen Comma (,) und aktivieren die Option Header row exists . Im Bereich Target Table entscheiden Sie sich für Existing und tragen die Tabelle CHURN im Schema ML_DATA ein .

Abbildung 1.7: Auswahl der Quelldatei und Zieltabelle

Im nächsten Dialogfenster (Abbildung 1.8) sehen Sie die Spalten der Quelle und der Zieltabelle. Klicken Sie auf das Hierarchiesymbol und wählen Sie im sich öffnenden Kontextmenü die Option Map by Name. Die Quelldatei und die Zieltabelle haben die gleichen Spaltennamen, somit werden alle Quellfelder übernommen. Durch Klick auf Finish starten Sie den Datenimport.

Abbildung 1.8: Mapping der Spalten und Starten des Imports

Im Job Log können Sie den Status des Imports verfolgen. Wenn alles gut läuft, erhalten Sie die Meldung Completed Successfully, siehe Abbildung 1.9.

Abbildung 1.9: Status des Imports