{"id":801,"date":"2022-01-03T20:10:01","date_gmt":"2022-01-03T19:10:01","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=801"},"modified":"2022-04-08T16:42:45","modified_gmt":"2022-04-08T14:42:45","slug":"data-mining-driverless-ai","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2022\/data-mining-driverless-ai\/","title":{"rendered":"Data Mining &#8211; Driverless AI"},"content":{"rendered":"<h1>Bedeutung von Data Mining<\/h1>\n<h2>Begriffsdefinition und Abgrenzung<\/h2>\n<blockquote><p><span id=\"page293R_mcid7\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">\u201eThe fruits of knowledge growing on the <\/span><\/span><span id=\"page293R_mcid8\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">tree of data are not easy to pick.\u201c<\/span><\/span><\/p><\/blockquote>\n<p><span id=\"page293R_mcid8\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">&#8211; Frawley <\/span><\/span><span id=\"page293R_mcid9\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">et al., Knowledge Discovery: An Overview, 1992<\/span><\/span><\/p>\n<p>Data Mining <span id=\"page293R_mcid15\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">beschreibt die &#8222;Extraktion implizit vor<\/span><\/span><span id=\"page293R_mcid17\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">handenen, nicht trivialen und n\u00fctzlichen <\/span><\/span><span id=\"page293R_mcid18\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">Wissens aus gro\u00dfen [&#8230;] komplex <\/span><\/span><span id=\"page293R_mcid19\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">strukturierten Datenbest\u00e4nden&#8220;. Unter Wissen versteht man hierbei ein Muster<span id=\"page293R_mcid22\" class=\"markedContent\">, das &#8222;interessant ist <\/span><span id=\"page293R_mcid23\" class=\"markedContent\">und mit ausreichender Sicherheit tats\u00e4ch<\/span><span id=\"page293R_mcid25\" class=\"markedContent\">lich existiert<\/span><\/span><\/span>&#8220; <span id=\"page293R_mcid19\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">(<a href=\"https:\/\/link.springer.com\/article\/10.1007\/s11576-008-0108-z\">Bissantz et al., 2009<\/a>)<\/span><\/span>. Angetrieben von sinkenden Preisen f\u00fcr Speicherplatz und dem Aufkommen des Internets, w\u00e4chst die Diskrepanz zwischen der Menge an generierten Daten und dem aus den Daten gewonnenen Wissen kontinuierlich. Data Mining versucht, diese L\u00fccke wieder zu schlie\u00dfen.<\/p>\n<p>Obwohl sich Data Mining in den letzen Jahren als ein wesentlicher Trend in der IT etabliert hat, kommen beim Data Mining l\u00e4ngst etablierte Verfahren zum Einsatz. Im Kern bedient sich Data Mining n\u00e4mlich vieler Methoden aus der Statistik. Allerdings beschreibt Data Mining dar\u00fcber hinausgendend, den ganzen Prozess von Datenakquise, \u00fcber Datenaufbereitung, der Mustererkennung bis hin zur benutzerfreundlichen Pr\u00e4sentation der Erkentnisse und meist einer konkreten Handlungsempfehlung.<\/p>\n<h2>Data Mining im Unternehmen<\/h2>\n<p>Die renommierte Unternehmensberatung McKinsey kommt im <a href=\"https:\/\/www.mckinsey.com\/business-functions\/marketing-and-sales\/our-insights\/b2b-commercial-analytics-what-outperformers-do\">R\u00fcckblick auf das Jahr 2021<\/a> zu dem Schluss, dass Unternehmen, die eine effektive Datenanlysestrategie verfolgen, im Schnitt eine 1,5 Mal h\u00f6here Wachstumsrate aufweisen.<\/p>\n<p>Potenzielle Use Cases von Data Mining in den unterschiedlichen Bereichen der Unternehmenspyramide sind z.B.:<\/p>\n<ul>\n<li>Target Marketing &#8211; Vorhersage &amp; Unterbreitung m\u00f6glichst erfolgsversprechender und kundenspezifischer Produktvorschl\u00e4ge (&#8222;Dieses Produkt wurde h\u00e4ufig zusammen gekauft mit &#8230;&#8220;) (Vertrieb \/ Marketing &#8211; operative Ebene)<\/li>\n<li>Customer Churn Prediction &#8211; Filtern von Kunden, welche die Vertragsbeziehung vermutlich bald beenden k\u00f6nnten &amp; gezieltes Anwenden von Kundenzufriedenheitsma\u00dfnahmen (Rabatte, Boni, Gutscheine etc.) (Vertrieb \/ Marketing &#8211; operative Ebene)<\/li>\n<li>Umsatzprognose &#8211; Vorhersage des zu erwartenden Umsatzes auf Basis relevanter Daten (Umsatz in Vorperioden, Materialaufwand, Abschreibungen, Konjunktur, Prognosefehler etc.) (Rechnungswesen &#8211; Management-Ebene)<\/li>\n<li>Key Value Indikatoren in Produktionsprozessen &#8211; Analyse &amp; Monitoring von Kennzahlen der Produktion (Wartezeiten, Umlaufzeiten, Durchlaufzahlen etc.) (Fertigung \/ Produktio &#8211; Management-Ebene)<\/li>\n<\/ul>\n<h1>\u00dcberblick Data Mining Software<\/h1>\n<h2>Programmiersprachen<\/h2>\n<p>Grunds\u00e4tzlich kann Data Mining mit jeder beliebigen Programmiersprache betrieben werden. Hieraus ergibt sich die gr\u00f6\u00dfte Flexibilit\u00e4t, da beliebiger Code zur Verarbeitung der Daten geschrieben werden kann. Dar\u00fcber hinaus ist die Nutzung beliebiger verf\u00fcgbarer Programmbibliotheken m\u00f6glich. Idealerweise sollte eine Programmiersprache gew\u00e4hlt werden in deren \u00d6kosystem bereits n\u00fctzliche Bibliotheken existieren. Folgend sollen zwei Beispiele Genannt werden.<\/p>\n<h3>Python<\/h3>\n<p><a href=\"https:\/\/www.python.org\/\">Python<\/a> ist eine auf vielen Plattformen verf\u00fcgbare h\u00f6here Programmiersprache welche die Pradigmen der objektorientierten, aspektorientierten und funktionalen Programmierung erlaubt. In <a href=\"https:\/\/www.python.org\/\">Python<\/a> kann der Anwender auf eine Vielzahl von Bibliotheken die Funktionalit\u00e4t f\u00fcr Data Mining implementieren zur\u00fcckgreifen. Beispiele hierf\u00fcr w\u00e4ren <a href=\"https:\/\/pandas.pydata.org\/\">pandas<\/a> f\u00fcr Datenanalyse\/-manipulation, <a href=\"https:\/\/scikit-learn.org\/stable\/\">scikit-learn<\/a> f\u00fcr Machine Learning und <a href=\"https:\/\/matplotlib.org\/\">matplotlib<\/a> f\u00fcr Visualisierung.<\/p>\n<p>Dar\u00fcber hinaus existieren spezialisierte Werkzeuge wie <a href=\"https:\/\/jupyter.org\/\">Jupyter Notebook<\/a> zur bequemeren Auswertung und Organisation kleiner Codeschnipsel f\u00fcr Analysen sowie Python-Distributionen wie <a href=\"https:\/\/www.anaconda.com\/products\/individual\">Anaconda<\/a> welche eine kuratierte Sammlung an Paketen f\u00fcr Datenanalyse und Data Mining bereitstellen.<\/p>\n<h3>R<\/h3>\n<p><a href=\"https:\/\/www.r-project.org\/\">R<\/a> ist eine Programmiersprache f\u00fcr statistische Berechnungen und Visualisierungen welche als Designziel die Nutzbarkeit f\u00fcr Datenanalyse hat. Sie besitzt somit bereits einige eingebaute Funktionalit\u00e4t zur Analyse und Visualisierung von Daten. Zus\u00e4tzlich existieren auch hier Pakete welche weitere Funktionalit\u00e4t beisteuern.<\/p>\n<h2>Spezialisierte Software<\/h2>\n<p>F\u00fcr statistische Analysen existiert Software f\u00fcr statistische Analysen wie <a href=\"https:\/\/de.mathworks.com\/solutions\/data-science.html\">matlab<\/a> oder <a href=\"https:\/\/www.scilab.org\/\">Scilab<\/a>.<\/p>\n<p>Dar\u00fcber hinaus existiert spezialisiertere Software f\u00fcr den Zweck des Data Mining. Diese bietet dann Funktionalit\u00e4t zur weiteren Verarbeitung der Daten, wie Workflows, Klassifikation und weitere M\u00f6glichkeiten des Machine Learning. Der Vorteil ist die einfachere Zug\u00e4nglichkeit der Funktionalit\u00e4t da meist keine &#8211; oder nur spezifische &#8211; Programmierkenntnisse n\u00f6tig sind, sowie teils bessere M\u00f6glichkeiten der Integration in einem betrieblichen Kontext.<br \/>\nNachfolgend sollen einige Beispiele erw\u00e4hnt werden:<\/p>\n<h3>WEKA<\/h3>\n<p><a href=\"https:\/\/www.cs.waikato.ac.nz\/ml\/weka\/\">WEKA<\/a> &#8211; oder <em>Waikato Environment for Knowledge Analysis<\/em> &#8211; ist ein quello\ufb00enes, umfangreiches, plattformunabh\u00e4ngiges Data Mining Softwarepaket, es wird entwickelt an der University of Waikato, New Zealand.<\/p>\n<p>WEKA bietet verschiedene GUI-Module: Explorer, Experimenter, KnowledgeFlow und simple CLI. Hierbei bietet der Explorer Funktionalit\u00e4t wie Klassifikation (Machine Learning) und Visualisation. Ein Import der Daten aus CSV-Dateien und Datenbanken (via JDB) ist m\u00f6glich.<\/p>\n<p>Im Knowledge Flow lassen sich Workflows definieren die verschiedene Einzelfilter und Klassifikatoren miteinander verkn\u00fcpfen.<\/p>\n<p>Die Funktionalit\u00e4t l\u00e4sst sie hier\u00fcber hinaus mittels Plugins erweitern.<\/p>\n<h3>Orange<\/h3>\n<p><a href=\"https:\/\/orangedatamining.com\/\">Orange<\/a> ist eine umfangreiche quelloffene Software zur Datenanalyse. Es wird an der University of Ljubljana entwickelt. Es bietet eine umfassende grafische Oberfl\u00e4che, in der Workflows zur Verarbeitung von Daten erstellt werden k\u00f6nnen. Diese Workflows verkn\u00fcpfen einzelne Widgets miteinander. Diese Widgets liefern wiederum einzelne Funktionalit\u00e4ten wie einen Datenimport oder verschiedene Werkzeuge f\u00fcr Machine Learning. Dar\u00fcber hinaus existieren Widgets deren Verhalten per Python frei definiert werden kann.<br \/>\nUmgekehrt ist Orange auch per Python API-steuerbar und kann in \u00fcbergreifende Arbeitsabl\u00e4ufe integriert werden.<\/p>\n<h3>SAS<\/h3>\n<p><a href=\"https:\/\/www.sas.com\/de_de\/home.html\">SAS<\/a> ist ein umfassendes Statistiksoftwarepaket welches M\u00f6glichkeiten weit \u00fcber Datenanalyse und Data Mining hinaus bietet. So existieren auch Komponenten f\u00fcr Qualit\u00e4tskontrolle (SAS\/QC) und zur Analyse von Klinischen Studien (SAS\/PH). F\u00fcr die Zwecke des Data Mining existieren die Komponenten SAS\/INSIGHT und Enterprise Miner.<\/p>\n<p>SAS\/INSIGHT ist eine Klassische Anwendung, sie erlaubt die Verarbeitung und Visualisierung von Datens\u00e4tzen.<\/p>\n<p>SAS Enterprise Miner ist eine Client-Server basierte Anwendung. Es erlaubt eine Integration mit im betrieblichen Umfeld eingesetzter Standardsoftware wie zum Beispiel Microsoft Excel oder verschiedene Datenbanksysteme. Es lassen sich basierend auf eingegangenen Daten automatisch mittels pr\u00e4diktiver Analyse Vorhersagemodelle erstellen um z.B. die Wahrscheinlichkeit von Ereignissen vorherzusagen.<\/p>\n<p>SAS ist Propriet\u00e4re Software, Preise werden nur auf Anfrage herausgegeben. Es existiert allerdings eine f\u00fcr <a href=\"https:\/\/www.sas.com\/de_de\/software\/on-demand-for-academics.html\">Bildungszwecke kostenlos nutzbare Cloudbasierte Webversion von SAS Studio und SAS Viya<\/a>.<\/p>\n<div class=\"D6j0vc\">\n<div id=\"center_col\" class=\"gXmnc s6JM6d\">\n<div id=\"taw\">\n<div class=\"yuRUbf\">\n<h1 class=\"LC20lb MBeuO DKV0Md\">H2O Driverless AI<\/h1>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2>Wieso H2O Driverless AI?<\/h2>\n<p>Das Wirtschaftsmagazin <a href=\"https:\/\/www.forbes.com\/sites\/cindygordon\/2021\/12\/28\/transforming-big-data-initiatives-into-ai-insights-board-directors-and-ceos-must-improve-their-digital-literacy\/?sh=5d11fa276ec4\">Forbes<\/a> berichtet, dass in erstaunlich vielen Unternehmen das Thema Data Mining nach wie vor vernachl\u00e4ssigt wird. Nicht zuletzt liegt das daran, dass sich nicht jedes Unternehmen den Luxus eines eigenen Data Science Teams leisten kann. Die Firma h20 hat daher mit Driverless AI ein Produkt entwickelt, dass viele der Aufgaben eines Data Scientists automatisiert \u00fcbernehmen k\u00f6nnen soll. So k\u00f6nnten auch kleinere und mittlere Unternehmen von den Vorteilen einer effektiven Datenanalysestrategie profitieren. Das Potential einer solchen L\u00f6sung w\u00e4re enorm, weswegen wir uns entschieden haben, Driverless AI n\u00e4her zu beleuchten.<\/p>\n<p>&nbsp;<\/p>\n<h2>Installation und Verwendung von Driverless AI<\/h2>\n<h3>Installation<\/h3>\n<p>Die verschiedenen Installationsm\u00f6glichkeiten sind in der <a href=\"https:\/\/docs.h2o.ai\/driverless-ai\/latest-stable\/docs\/userguide\/index.html\">Dokumentation<\/a> aufgelistet. Driverless AI l\u00e4sst sich auf Linux, Windows und macOS und als Cloud L\u00f6sung in Amazon AWS, Microsoft Azure und Google Cloud installieren. W\u00e4hrend die Installation auf consumer Hardware zwar grunds\u00e4tzlich m\u00f6glich ist, sind die Anforderungen an CPU und GPU wegen der anspruchsvollen Machine Learning Tasks recht hoch. M\u00f6chte man Driverless AI auf eigener Hardware installieren, bietet sich die <a href=\"https:\/\/docs.h2o.ai\/driverless-ai\/latest-stable\/docs\/userguide\/install\/ubuntu.html\">Installation \u00fcber Docker<\/a> an.<\/p>\n<p>Dozenten und Studierende k\u00f6nnen \u00fcber das <a href=\"https:\/\/www.h2o.ai\/academic\/\">academic program<\/a> von H2O kostenlos eine 6-monatige Lizenz beziehen, allerdings ist der Prozess daf\u00fcr recht langwierig. Um einen Eindruck von der Software zu gewinnen oder die hier vorgestellten Experimente zu reproduzieren, reicht auch das <a href=\"https:\/\/aquarium.h2o.ai\/lab\">Test Lab<\/a> von H2O (&#8222;Aquarium&#8220;). Man hat hier die M\u00f6glichkeit, eine Instanz von Driverless AI in der Cloud zu starten, die nach zwei Stunden automatisch wieder gel\u00f6scht wird. Dabei gehen alle Daten verloren; f\u00fcr einen ersten Eindruck reicht die Zeit aber allemal. Es finden sich hier auch einige interessante weiterf\u00fchrende Erl\u00e4uterungen zum Thema Data Mining und Machine Learning und vorgefertigte Labs mit zugeh\u00f6rigen Tutorials.<\/p>\n<p>Alternativ kann Driverless AI \u00fcber die <a href=\"https:\/\/www.h2o.ai\/freetrial\/\">14-t\u00e4tige Testversion<\/a> der H2O AI Cloud getestet werden. Die AI Cloud beinhaltet noch weitere Softwarel\u00f6sungen, f\u00fcr uns ist an dieser Stelle aber nur Driverless AI von Interesse. Um Driverless AI innerhalb der AI Cloud zu nutzen, muss nach erfolgter Registrierung zun\u00e4chst auf den Tab &#8222;My AI Engines&#8220; gewechselt werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1161\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/AI_Engines.png\" alt=\"\" width=\"1068\" height=\"81\" \/><\/p>\n<p>Hier kann eine neue Driverless AI Instanz erzeugt und gestartet werden. Die Default Werte k\u00f6nnen beibehalten werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1162\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/AI_Launch_instance.png\" alt=\"\" width=\"758\" height=\"674\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Beispielhafter Use Case<\/h2>\n<h3>Problemformulierung<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-850\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/churn.png\" alt=\"\" width=\"1692\" height=\"600\" \/><\/p>\n<p>Die Abwanderungsquote (<em>customer churn rate<\/em>) beschreibt den Anteil der Kunden, die aufh\u00f6ren einen Dienst oder ein Produkt zu nutzen. Sie ist eine zentrale Metrik f\u00fcr die Kundenzufriedenheit und kann vom Marketing genutzt werden, um Kundenr\u00fcckgewinnungsma\u00dfnahmen zu ergreifen. Das Subskriptionmodell hat sich l\u00e4ngst als Vertriebsstrategie in nahezu allen Gesch\u00e4ftsfeldern etabliert. Gleichzeitig ist es heute einfacher denn je, einen schnellen Vergleich zwischen Anbietern durchzuf\u00fchren und sich f\u00fcr die beste Option zu entscheiden. Das Risiko f\u00fcr ein Unternehmen, einen Kunden zu verlieren, ist dementsprechend hoch.<\/p>\n<p>Die Kosten daf\u00fcr, einen neuen Kunden zu gewinnen sind etwa <a href=\"https:\/\/www.researchgate.net\/publication\/258789602_A_Survey_on_Churn_Prediction_Techniques_in_Communication_Sector\">f\u00fcnf mal so hoch<\/a>, wie die Kosten daf\u00fcr, einen bestehenden Kunden zu halten. Es ist daher von gro\u00dfem Interesse, fr\u00fchzeitig erkennen zu k\u00f6nnen, bei welchen Kunden die Wahrscheinlichkeit einer Abwanderung am h\u00f6chsten ist. Diese Vorhersage nennt sich <strong>customer churn prediction<\/strong>. Die Relevanz der Treffischerheit dieser Vorhersage ist in der Grafik dargestellt: Ein Kunde, dessen Abwanderung vorhergesehen wurde, kann m\u00f6glicherweise durch entsprechende Anreize oder Hilfestellung gehalten werden. Eine Kunde, dessen Abwanderung nicht vorhergesehen wurde, ist i.d.R. f\u00fcr das Unternehmen verloren.<\/p>\n<p>Oft l\u00e4sst sich aus dem Verhalten der Kunden bereits vor der K\u00fcndigung ablesen, wie zufrieden sie mit dem Produkt sind. Wir wollen daher im Folgenden versuchen, mit Hilfe von Driverless AI, die Unzufriedenheit der einzelnen Kunden &#8211; und damit die Wahrscheinlichkeit einer Abwanderung &#8211; aus einem Datensatz abzuleiten.<\/p>\n<p>&nbsp;<\/p>\n<h3>Datenbasis<\/h3>\n<p>Bei Data Mining geht es um automatisierte Datenauswertung. Meistens werden die Daten durch mehrere verschiedene Machine Learning Algorithmen ausgewertet und visualisiert. Um ein passendes Machine Learning Modell zu erstellen werden viele Daten ben\u00f6tigt, an denen das System lernen kann. Bei diesem Vorgehen ist das &#8222;supervised learning&#8220; verbreitet, es so viel hei\u00dft wie &#8222;\u00fcberwachtes lernen&#8220;. Hierbei werden die Daten, die gelabelt sein m\u00fcssen, in eine Trainingsgruppe und eine Kontrollgruppe aufgeteilt. Im ersten Schritt wird der Algorithmus mit den Trainingsdaten trainiert. Dabei sind alle Features der Daten f\u00fcr den Algorithmus bekannt. So kann er sich ein Bild machen, aus welchen Zusammenh\u00e4ngen welche Schlussfolgerungen gezogen werden k\u00f6nnen. Im zweiten Schritt wird der Algorithmus mit den Kontroll- \/Testdaten\u00a0\u00a0gepr\u00fcft. An dieser Stelle sind die zu schlussfolgernde Features ausgeblendet und der Algorithmus muss diese anhand seiner &#8222;Erfahrung&#8220; vorhersagen. Diese Vorhersagen werden mit den tats\u00e4chlichen Ergebnissen verglichen. So kann die Wahrscheinlichkeit einer richtigen Vorhersage bestimmt werden, sie beschreibt wie gut ein Machine Learning Algorithmus ist.<\/p>\n<p>Das Teilen der Daten in Trainings- und Testdaten muss ebenfalls sinnvoll erfolgen. Es m\u00fcssen m\u00f6glichst alle verschiedene Konstellationen in beiden Gruppen vertreten sein. W\u00e4ren zum Beispiel in der Trainingsgruppe nur Nutzer*innen, die von dem Produkt abgewandert sind, kann der Algorithmus nur mit sehr kleiner Wahrscheinlichkeit oder garnicht vorhersagen, welche Nutzer bleiben w\u00fcrden. Er kennt keine Datenzusammensetzungen von Nutzer*innen, die er als Beispiel zum Verbleib bei dem Produkt nehmen kann, er kennt nur Abwanderung. Die Aufteilung und Trainings- und Testdaten ist so wichtig, damit der Algorithmus nicht auf einen Datensatz &#8222;overfitted&#8220; ist, also zu sehr angepasst ist. W\u00fcrde man alle Daten sowohl als Trainings als auch als Testdaten verwenden, lernt der Algorithmus nur die F\u00e4lle in den Daten &#8222;auswendig&#8220;, anstatt einen allgemeinen L\u00f6sungsansatz zu finden. Verwendet man diesen &#8222;overfitted&#8220; Algorithmus auf neue Daten w\u00fcrde er sehr schlechte Ergebnisse liefern.<\/p>\n<p>Relevant ist auch die Qualit\u00e4t von den Daten. Es ist notwendig die Rohdaten zu bereinigen. Sie d\u00fcrfen keine Ausrei\u00dfer, keine L\u00fccken, keine Dopplungen, keine Unregelm\u00e4\u00dfigkeiten, keine falsch gemessenen oder abgelaufenen Daten enthalten. Anderenfalls k\u00f6nnte sich der Algorithmus z.B. zu sehr auf einen Ausrei\u00dfer fokussieren und so keine zuverl\u00e4ssigen Ergebnisse liefern. Ebenfalls m\u00fcssen die Daten auf den Usecase passen. Will man eine churn prediction f\u00fcr Telefonvertr\u00e4ge machen, sind zum Beispiel Daten wie allgemeine Kundeninformationen, demographische Daten oder Vertragsdaten relevant. Daten wie z.B. das Wetter oder die Farbe der Autos der Kund*innen sollte auf die Abwanderung bei einem Telefonvertrag jedoch keinen Einfluss haben und verbessern somit den Datensatz nicht. Demnach ist nicht immer die Menge der Features ausschlaggebend f\u00fcr einen guten Datensatz, sondern eine m\u00f6glichst hohe Anzahl an auf den Usecase passenden Features.<\/p>\n<p>Zusammenfassend l\u00e4sst sich sagen, dass bei Data Mining die Qualit\u00e4t der Analyseergebnisse mit der Qualit\u00e4t der verwendeten Daten sowie ihrer Aufteilung in Trainings- und Testdaten steht und f\u00e4llt.<\/p>\n<p>Als Basis f\u00fcr unser Experiment nutzen wir einen <a href=\"https:\/\/developer.ibm.com\/patterns\/predict-customer-churn-using-watson-studio-and-jupyter-notebooks\/\">von IBM generierten Datensatz<\/a> (<a href=\"https:\/\/raw.githubusercontent.com\/carlosfab\/dsnp2\/master\/datasets\/WA_Fn-UseC_-Telco-Customer-Churn.csv\">Download<\/a>) eines fiktiven Telekommunikationsanbieters. Dieser Datensatz beinhaltet \u00fcber 7000 Eintr\u00e4ge mit jeweils 20 Features plus Response-variable (churn). Er enth\u00e4lt mehrere demographische Daten, allgemeine Kundeninformationen und Services Informationen sowie die Abwanderung.\u00a0Diese Menge an sauberen und auf den Usecase passenden Daten ist eine gute Grundlage f\u00fcr maschinelles Lernen.<\/p>\n<p>Wir h\u00e4tten gerne mit Studierenden Daten der HTWK gearbeitet und haben daf\u00fcr bei der Datenschutzbeauftragten nachgefragt. Dabei hat sich herausgestellt, dass wir nur bereits anonymisierten Daten verwenden d\u00fcrften, wie z.B. die Daten der Evaluation. Diese Daten h\u00e4tten jedoch kein hilfreiches Beispiel zum Vorhersagen geboten, weshalb wir diese Daten nicht weiter angefragt haben.<\/p>\n<p>Telco customer churn data set:<\/p>\n<p>21 Features (inkl. ID und Churn)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1229\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/Dataset-Verteilung.png\" alt=\"\" width=\"1995\" height=\"849\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>Analysen in Driverless AI<\/h3>\n<p>Zun\u00e4chst wollen wir Driverless AI mit unseren Daten bekannt machen. In der Testversion k\u00f6nnen wir unsere Daten entweder als Datei hochladen oder einen Amazon S3 Speicher verbinden. In der Vollversion kann bspw. auch eine SQL-Datenbank, ein Azure Blob Storage oder ein Snowflake Data Warehouse angebunden werden (<a href=\"https:\/\/docs.h2o.ai\/driverless-ai\/latest-stable\/docs\/userguide\/connectors.html\">Vollst\u00e4ndige \u00dcbersicht<\/a>). Wir laden unsere Daten als csv Datei hoch.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1169 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_datasets.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Das Splitten des Datensets in Train- und Test-Set, das \u00fcblicherweise vom Anwender selbst vorgenommen wird, \u00fcbernimmt Driverless AI automatisiert. Man teilt dem Programm lediglich mit, welches Feature sp\u00e4ter vorhergesagt werden soll und wie das Gr\u00f6\u00dfenverh\u00e4ltnis von Train- und Test-Set sein soll. Driverless AI sorgt daf\u00fcr, dass auch die seltener vorkommende Auspr\u00e4gung des vorherzusagenen Features ausreichend oft im Test-Set vorkommt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1174\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_split2.png\" alt=\"\" width=\"4856\" height=\"2832\" \/><\/p>\n<p>Mit einem Klick auf &#8222;Details&#8220; kann das Datenset inspiziert werden. Man bekommt f\u00fcr jedes Attribut die Verteilung der jeweiligen Attributwerte, Informationen \u00fcber fehlende Werte und f\u00fcr numerische Features zus\u00e4tzlich statistische Kennzahlen wie Min- und Max-Wert und Mittelwert angezeigt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1168 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_dataset_details.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Nun kann unter dem &#8222;Projects&#8220; Tab ein neues Projekt angelegt werden.Wir verlinken unser zuvor erstelltes Train- bzw. Test-Set. Rechts sehen wir eine Auflistung aller Experimente, die wir im Zuge dieses Projekts durchgef\u00fchrt haben. Sind mehrere Experimente erstellt worden, lasse sich diese auf einen Blick hinsichtlich relevanter Kennzahlen vergleichen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1167 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_project_overview.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Das Erstellen eines neuen Experiments gestaltet sich sehr einfach. Nach einem Klick auf &#8222;New Experiment&#8220; sehen wir folgende Maske. Als &#8222;Target Column&#8220; w\u00e4hlen wir &#8222;Churn&#8220;. Driverless AI erkennt automatisch, dass es sich hierbei um ein Klassifikationsproblem handelt (also um die Entscheidung &#8222;Churn &#8211; Ja oder Nein&#8220;. Ein Beispiel f\u00fcr Regression w\u00e4re z.B. die Ermittlung eines optimalen Produktpreises). Zus\u00e4tzlich haben wir <a href=\"https:\/\/docs.h2o.ai\/driverless-ai\/latest-stable\/docs\/userguide\/experiment-settings.html#accuracy-time-and-interpretability-knobs\">drei Faktoren<\/a>, die wir manipulieren k\u00f6nnen: Accuracy, Time und Interpretability. Eine h\u00f6here Accuracy bedeutet in der Regel eine h\u00f6here Pr\u00e4zision der Ergebnisse. Intuitiv w\u00fcrde man hier wohl den h\u00f6chstm\u00f6glichen Wert w\u00e4hlen, allerdings entsteht dann das Risiko des sogenannten Overfittings. Der Algorithmus k\u00f6nnte also u.U. zu exakt die Trainingsdaten modellieren und w\u00fcrde Datenpunkte, die auch nur etwas von den Trainingsdaten abweichen, falsch klassifizieren. Time bezieht sich auf die Laufzeit des Experiments, die je nach verwendeten Algorithmen und L\u00e4nge der Optimierungsphase zwischen wenigen Minuten und mehreren Stunden oder sogar Tagen varriieren kann. Ein kleinerer Wert steht f\u00fcr eine k\u00fcrzere Experimentlaufzeit. Ein h\u00f6herer Wert f\u00fcr Interpretability sorgt daf\u00fcr, dass nur solche Algorithmen zum Training verwendet werden, deren Ergebnisse sich im Nachhinein auch intuitiv erkl\u00e4ren lassen. Dies spielt z.B. bei der automatisierten Bearbeitung von Kreditantr\u00e4gen oder medizinischen Use Cases eine gro\u00dfe Rolle. Sind alle Einstellungen gesetzt, kann das Experiment gestartet werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1166 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_new_experiment.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Links und rechts oben sehen wir die Experimenteinstellungen nochmal aufgelistet. Oben in der Mitte sehen wir den aktuellen Fortschritt des Experiments. Driverless AI trainiert automatisch viele verschiedene Modelle in verschiedenen Konfigurationen und Kombinationen (Ensemble Learning). Unten rechts sehen wir die ROC Kurve des aktuell best performenden Modells. Sie gibt Auskunft \u00fcber die Genauigkeit des Modells. Optimal w\u00e4re eine Kurve, die durch den Ursprung oben links verl\u00e4uft. Je n\u00e4her sie sich der gestrichelten diagonalen Linie n\u00e4hert, desto schlechter. Ein solches Modell h\u00e4tte nur eine Treffsicherheit von 50%. Der AUC (area under the curve) Wert ist das bestimmte Integral der ROC Kurve. Je n\u00e4her er an dem Wert 1 liegt, desto besser. Unten in der Mitte sehen wir eine Vorschau auf die sog. Variable Importance. Wir sehen also, welche Features die h\u00f6chste Aussagekraft in unserem aktuellen Modell haben.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1165 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_running_experiment.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Driverless AI merkt automatisch, wann keine weitere Verbesserung der Ergebnisse zu erwarten ist und bricht an diesem Punkt selbsts\u00e4ndig ab. Bei uns war das nach etwa 6 Minuten der Fall. Wir haben jetzt die M\u00f6glichkeit, Einsicht in das trainierte Modell zu erhalten. Driverless AI bietet hier eine Vielzahl an Kennzahlen und Visualisierungen an, von denen wir hier einige betrachten wollen.<\/p>\n<p>Sinn und Zweck des Experiments war ja nicht nur, ein Modell zu trainineren, das customer churn vorhersagen kann. Wir wollen auch neue Erkentnisse aus den Rohdaten gewinnen und andererseits nat\u00fcrlich auch mit unserem Domainen-Wissen \u00fcberpr\u00fcfen, ob die Ergebnisse der Analyse schl\u00fcssig sind oder ob vielleicht ein methodischer Fehler begangen wurde. Ein erster guter Anhaltspunkt ist hier die sogenannte Feature Importance. Diese ist normiert auf den Bereich 0 bis 1 und sagt vereinfacht gesagt Folgendes aus: W\u00fcrden wir unsere bin\u00e4re Entscheidung nur anhand des am h\u00f6chsten bewerteten Features festmachen, w\u00fcrden wir im Vergleich zu den anderen Features am seltesten falsch liegen. Hier hei\u00dft das also: Wollen wir eine ganz grobe Unterteilung der Kunden hinsichtlich der Gefahr einer K\u00fcndigung machen, w\u00e4re das Contract Feature am aussagekr\u00e4ftigsten. Zur Erinnerung: Das Contract Feature sagt aus, ob ein Monat-zu-Monat, ein 1-Jahres- oder ein 2-Jahres-Vertrag abgeschlossen wurde.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1053\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_feature_importance.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Jetzt interessiert nat\u00fcrlich, welche der drei Merkmalsauspr\u00e4gungen h\u00e4ufig mit einer K\u00fcndigung einhergeht. Hierf\u00fcr bietet Driverless AI sog. <a href=\"https:\/\/christophm.github.io\/interpretable-ml-book\/pdp.html\">Partial Dependence Plots<\/a> an. Wir sehen hier f\u00fcr jede Merkmalsauspr\u00e4gung des Contract Features die durchschnittliche churn prediction. Man sieht direkt, die Churn Vorhersage f\u00fcr Month-to-Month Vertr\u00e4ge ist signifikant h\u00f6her als die f\u00fcr 1-Jahres- und 2-Jahres-Vertr\u00e4ge. Wir k\u00f6nnen unsere Aussage von vorhin also pr\u00e4zisieren: Wollen wir eine ganz grobe Unterteilung der Kunden hinsichtlich der Gefahr einer K\u00fcndigung machen, l\u00e4sst sich sagen, dass Kunden mit Vertr\u00e4gen auf monatlicher Basis am ehesten zu einer K\u00fcndigung neigen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1052\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_pdp_contract.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Im Feature Importance Plot sehen wir, dass das zweit aussagekr\u00e4ftiste Attribut &#8222;tenure&#8220; war &#8211; also die Zeit, die der Kunde schon seinen Vertrag hat. Um hier den genauen Zusammenhang von Laufzeit und K\u00fcndigungswahrscheinlichkeit zu erfahren, bietet sich ein Plot der <a href=\"https:\/\/christophm.github.io\/interpretable-ml-book\/shapley.html\">Shapley Values<\/a> an. Uns interessieren an dieser Stelle nur die numerischen Features, die mit aufsteigenden Werten des Features von gelb bis rot eingef\u00e4rbt sind. Auf der y-Achse sehen wir alle Features aufgelistet. Die x-Achse zeigt den Shapley Value an, mit der 0 in der Mitte. Der Shapley Value ist ein Konzept aus der Spieltheorie und gibt vereinfacht gesagt dar\u00fcber Auskunft, wie sehr eine bestimmte Merkmalsauspr\u00e4gung eines Features am Gesamtergebnis (also dem Score) beteiligt war. Hat eine bestimmte Auspr\u00e4gung eines Features den Shapley Value 0, hat das Feature in diesem Fall die Entscheidung weder in Richtung &#8222;Churn &#8211; Ja&#8220; noch in Richtung &#8222;Churn &#8211; Nein&#8220; bewegt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1054\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_shapley_summary.png\" alt=\"\" width=\"7072\" height=\"3808\" \/><\/p>\n<p>Bei der Shapley Value Methode geht man von einem bestimmten Bias &#8211; also einer Art Tendenz &#8211; aus. In unserem Fall ist das Bias -1.4 (siehe oben links). Zur Erinnerung: Je weiter der Score (in positiver Richtung) von der 0 entfernt ist, desto eher tendiert das Modell zur Entscheidung &#8222;Churn &#8211; Ja&#8220;. Bildlich gesprochen hei\u00dft das also, dass unser Modell zun\u00e4chst einmal sehr stark Richtung &#8222;Churn &#8211; Nein&#8220; tendiert. Betrachten wir nun das tenure Feature. Wir sehen, dass je h\u00f6her der Wert des Features ist &#8211; d.h. je l\u00e4nger der Vertrag schon besteht &#8211; desto kleiner ist der Shapley Value. Ein hoher Wert von tenure beeinflusst die Entscheidung also in Richtung &#8222;Churn &#8211; Nein&#8220;. Ein niedriger Wert von tenure hat dahingegen einen sehr hohen Shapley Value und beeinflusst die Entscheidung folglich in Richtung &#8222;Churn &#8211; Ja&#8220;. Interessant ist diese Darstellung auch, da man so den &#8222;impact&#8220; der verschiedenen Features direkt gegen\u00fcber stellen kann. Wir sehen z.B., dass hohe Werte von &#8222;Monthly Charges&#8220; einen hohen Shapley Value zugeordnet bekommen haben. Hohe monatliche Ausgaben beeinflussen die Entscheidung also in Richtung &#8222;Churn &#8211; Ja&#8220;. Allerdings ist der Einfluss dieses Features deutlich geringer als der des tenure Features. Folgende These l\u00e4sst sich also aufstellen: ein Kunde, der erst vor Kurzem seinen Vertrag abgeschlossen hat und nur geringe monatliche Ausgaben hat, ist deutlich eher dazu geneigt zu k\u00fcndigen, als ein Kunde, der zwar hohe monatliche Ausgaben hat, aber daf\u00fcr schon seit Langem Kunde ist. Dies bekr\u00e4ftigt im \u00dcbrigen nochmal die Anfangsthese und zeigt, wie wichtig es ist, den Kunden langfristig an sich zu binden und einer m\u00f6glichen K\u00fcndigung fr\u00fchzeitig vorzubeugen.<\/p>\n<h3>Deployment<\/h3>\n<p>Hat man das Modell inspiziert und m\u00f6chte es nun in der Produktion einsetzen, bietet Driverless AI mehrere M\u00f6glichkeiten. Der einfachste Weg ist es, das Modell als REST Schnittstelle oder AWS Lambda Funktion zu deployen. Unser churn prediction Modell ist \u00fcber die unten stehende Adresse erreichbar. Alternativ kann bspw. eine Python Scoring Pipeline heruntergeladen werden. Weitere Informationen zum Deployment finden sich <a href=\"https:\/\/docs.h2o.ai\/driverless-ai\/latest-stable\/docs\/userguide\/deployment.html\">hier<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1317\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2022\/01\/ai_lambda_request_6.png\" alt=\"\" width=\"1768\" height=\"930\" \/><\/p>\n<pre>curl \\\r\n-X POST \\\r\n-d @kunde.json \\\r\n-H \"x-api-key: EcaW6Hk526549rRhjGj2M9TYqQF8ABVG10Bc3NsH\" \\\r\nhttps:\/\/mw7j9o1s83.execute-api.eu-central-1.amazonaws.com\/test\/score<\/pre>\n<p>Ein json file zum Testen findet sich <a href=\"https:\/\/gist.github.com\/jbkze\/e7d2a8e1afdec5b1691a9ca2fc89b12a\">hier<\/a>.<\/p>\n<h1>Prozessmodelierung<\/h1>\n<p>Ein beispielhafter Prozess zur regelm\u00e4\u00dfigen Kalibrierung und Anwendung eines Churn-Rate-Prediction-Models im Unternehmen kann wie folgt aussehen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"https:\/\/cdn.discordapp.com\/attachments\/897473940325285918\/932350944174297088\/Data_Mining1.png\" width=\"1722\" height=\"1115\" \/><\/p>\n<p>Aus dem Kundendatenmanagement werden im Rahmen eines Data-Warehousing-Prozesses regelm\u00e4\u00dfig relevante Kundendaten (Eink\u00e4ufe, Kundenkontakte, Stammdaten etc.) in ein Kundendaten-Data Warehouse \u00fcbertragen. Diese Daten werden von H20.AI genutzt, um ein Modell zur Vorhersage der Churn-Rate zu erstellen. Dieses wird turnusm\u00e4\u00dfig neu kalibriert.<\/p>\n<p>Das Modell kann dann angewendet werden, um regelm\u00e4\u00dfig Kunden zu kontaktieren, deren Churn Rate hoch ist, um ihnen Rabatte oder Boni anzubieten. Au\u00dferdem kann das Modell auch ad-hoc verwendet werden, wenn Kunden inbound Kontakt mit dem Unternehmen aufnehmen, um Ma\u00dfnahmen zur Steigerung der Kundenzufriedenheit direkt einzuleiten.<\/p>\n<h1>Quellen<\/h1>\n<ul>\n<li><a href=\"https:\/\/www.mckinsey.com\/business-functions\/marketing-and-sales\/our-insights\/b2b-commercial-analytics-what-outperformers-do\">McKinsey: B2B commercial analytics: What outperformers do, 2021<\/a><\/li>\n<li><a href=\"https:\/\/www.forbes.com\/sites\/cindygordon\/2021\/12\/28\/transforming-big-data-initiatives-into-ai-insights-board-directors-and-ceos-must-improve-their-digital-literacy\/?sh=5d11fa276ec4\">Forbes: Transforming Big Data Initiatives Into AI Insights, 2021<\/a><\/li>\n<li><a href=\"https:\/\/link.springer.com\/article\/10.1007\/s11576-008-0108-z\">Nicolas Bissantz et al., Data Mining (Datenmustererkennung), 2009<\/a><\/li>\n<li><a href=\"https:\/\/christophm.github.io\/interpretable-ml-book\/\">Interpretable Machine Learning, Christoph Molnar, 2022<\/a><\/li>\n<li><a href=\"https:\/\/link.springer.com\/book\/10.1007\/978-3-642-19721-5\">Data Mining &#8211; Concepts, Models and Techniques, Florin Gorunescu, 2011<\/a><\/li>\n<li>\n<div class=\"csl-bib-body\">\n<div class=\"csl-entry\">R and Data Mining: Examples and Case Studies, Zhao, Yanchang, 2012<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"csl-bib-body\">\n<div class=\"csl-entry\"><a href=\"https:\/\/orangedatamining.com\/docs\/\">\u201eOrange Documentation\u201c<\/a><a href=\"https:\/\/orangedatamining.com\/docs\/\">, Bioinformatics Laboratory, University of Ljubljana. Zugegriffen 17. Januar 2022.<\/a><\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"csl-bib-body\">\n<div class=\"csl-entry\">\n<div class=\"csl-bib-body\">\n<div class=\"csl-entry\"><a href=\"https:\/\/www.springboard.com\/blog\/data-science\/data-mining-python-tutorial\/.\">\u201eData Mining in Python: A Guide, \u201c<i>Springboard Blog<\/i> (blog), Michael Rundell. 2016.<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li>\n<div class=\"nova-legacy-v-person-list-item__stack-item\">\n<div class=\"nova-legacy-v-person-list-item__align\">\n<div class=\"nova-legacy-v-person-list-item__align-content\">\n<div class=\"nova-legacy-v-person-list-item__align-content\"><a href=\"https:\/\/www.researchgate.net\/publication\/258789602_A_Survey_on_Churn_Prediction_Techniques_in_Communication_Sector\">N. Kamalraj, A Survey on Churn Prediction Techniques in Communication Sector, 2013<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bedeutung von Data Mining Begriffsdefinition und Abgrenzung \u201eThe fruits of knowledge growing on the tree of data are not easy<\/p>\n","protected":false},"author":62,"featured_media":845,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-betriebliche-informationssysteme"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=801"}],"version-history":[{"count":100,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/801\/revisions"}],"predecessor-version":[{"id":1318,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/801\/revisions\/1318"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media\/845"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}