Qgelm

Neue Algorithmen für relationales Lernen: Was Deep Learning nicht beherrscht

Originalartikel

Backup

<html> <header class=„article-header“><h1 class=„articleheading“>Neue Algorithmen f&#252;r relationales Lernen: Was Deep Learning nicht beherrscht</h1><div class=„publish-info“> Alexander Uhlig, S&#246;ren Nikolaus</div></header><figure class=„aufmacherbild“><img src=„https://heise.cloudimg.io/width/700/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/shutterstock_1478949875.jpg-7d29f5fa71b99d76.jpeg“ srcset=„https://heise.cloudimg.io/width/700/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/shutterstock_1478949875.jpg-7d29f5fa71b99d76.jpeg 700w, https://heise.cloudimg.io/width/1050/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/shutterstock_1478949875.jpg-7d29f5fa71b99d76.jpeg 1050w, https://heise.cloudimg.io/width/1500/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/shutterstock_1478949875.jpg-7d29f5fa71b99d76.jpeg 1500w, https://heise.cloudimg.io/width/2300/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/shutterstock_1478949875.jpg-7d29f5fa71b99d76.jpeg 2300w“ alt=„“ class=„img-responsive“ referrerpolicy=„no-referrer“ /><figcaption class=„akwa-caption“>(Bild:&#160;issaro prakalung/Shutterstock.com)</figcaption></figure><p><strong>Feature Learning macht relationale Daten f&#252;r Machine Learning nutzbar. Hierdurch erschlie&#223;t sich Unternehmen ein riesiger Datenschatz mit Gesch&#228;ftspotenzial.</strong></p><p>Die Idee, Daten in relationalen Strukturen zu speichern, reicht bis in die 1970er-Jahre zur&#252;ck. Heute bilden relationale Daten das R&#252;ckgrat eines jeden modernen Unternehmens. In Datenbanken t&#252;rmen sich Berge von Unternehmensdaten, die eine zentrale Rolle darin spielen k&#246;nnen, das von den Verantwortlichen erkannte KI-Defizit aufzuholen. Doch bei aller Innovationsfreude gilt es zu bedenken: Aus relationalen Daten mit Machine Learning (ML) Werte zu sch&#246;pfen ist bisher nur unter enormen Anstrengungen m&#246;glich. Das ist ein Umstand, der selbst gro&#223;en Unternehmen den Zugang zum Machine Learning und zu Gesch&#228;ftsanwendungen mit K&#252;nstlicher Intelligenz (KI) versperrt.</p><p>Der Schl&#252;ssel liegt im Forschungsfeld des relationalen Lernens, das in der Praxis noch kaum eine Rolle spielt. Eine neue Klasse an Algorithmen verspricht hier Abhilfe. Sie &#252;bertr&#228;gt das zentrale Konzept des Feature Learnings aus dem Deep Learning auf relationale Datenstrukturen und macht Unternehmensdaten f&#252;r moderne Algorithmen im Machine Learning nutzbar.</p><div class=„a-boxtarget a-boxcontent a-inline-textboxcontent a-inline-textboxcontent–horizontal-layout“ data-collapse-target=„“><figure class=„a-inline-textboximage-container“><img alt=„“ src=„https://heise.cloudimg.io/width/4000/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/imgs/71/2/8/9/8/5/2/3/shutterstock_1161966886-c893e738e55765fb.jpeg“ srcset=„https://heise.cloudimg.io/width/8000/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/imgs/71/2/8/9/8/5/2/3/shutterstock_1161966886-c893e738e55765fb.jpeg 2x“ class=„c1“ referrerpolicy=„no-referrer“ /></figure><div class=„a-inline-textboxcontent-container“><p class=„a-inline-textboxsynopsis“>Dieser Beitrag ist Teil einer Artikelserie, zu der heise Developer junge Entwickler:innen einl&#228;dt &#8211; um &#252;ber aktuelle Trends, Entwicklungen und pers&#246;nliche Erfahrungen zu informieren. Die Reihe „Young Professionals“ erscheint im monatlichen Rhythmus. Bist du selbst ein „Young Professional“ und willst einen (ersten) Artikel schreiben? Schicke deinen Vorschlag an die Redaktion: developer@heise.de. Wir stehen dir beim Schreiben zur Seite.</p><ul class=„a-inline-textboxlist“><li class=„a-inline-textboxitem“><a class=„a-inline-textboxtext“ href=„https://www.heise.de/hintergrund/Alpine-js-Das-Schweizer-Taschenmesser-fuer-dynamische-Weboberflaechen-6177628.html“ title=„Alpine.js: Das Schweizer Taschenmesser f&#252;r dynamische Weboberfl&#228;chen“><strong>Alpine.js: Das Schweizer Taschenmesser f&#252;r dynamische Weboberfl&#228;chen [1]</strong></a></li><li class=„a-inline-textboxitem“><a class=„a-inline-textboxtext“ href=„https://www.heise.de/hintergrund/Developer-Experience-Glueckliche-Entwickler-schreiben-besseren-Code-6150890.html“ title=„Developer Experience: Gl&#252;ckliche Entwickler schreiben besseren Code“><strong>Developer Experience: Gl&#252;ckliche Entwickler schreiben besseren Code [2]</strong></a></li><li class=„a-inline-textboxitem“><a class=„a-inline-textboxtext“ href=„https://www.heise.de/hintergrund/Ethik-und-Kuenstliche-Intelligenz-ein-neuer-Umgang-mit-KI-Systemen-6056059.html“ title=„Ethik und K&#252;nstliche Intelligenz: Ein neuer Umgang mit KI-Systemen“><strong>Ethik und K&#252;nstliche Intelligenz: Ein neuer Umgang mit KI-Systemen [3]</strong></a></li><li class=„a-inline-textboxitem“><a class=„a-inline-textboxtext“ href=„https://www.heise.de/developer/young-professionals-6065678.html“ title=„Alle Beitr&#228;ge der Serie finden sich in der Rubrik“><strong>Alle Beitr&#228;ge der Serie finden sich in der Rubrik „Young Professionals“ [4]</strong></a></li></ul></div></div><p>Data Scientists stehen in ihrem Projektalltag oft vor einer klassischen Aufgabe: Auf der Grundlage relationaler Ursprungsdaten aus einer Datenbank wie MySQL sollen sie ein <a href=„https://de.wikipedia.org/wiki/Pr%C3%A4diktive_Analytik“ rel=„external noopener“ target=„_blank“><strong>Machine-Learning-Modell zur pr&#228;diktiven Analytik [5]</strong></a> entwickeln. Daraus resultierende Modelle kommen branchen&#252;bergreifend zum Einsatz und k&#246;nnen f&#252;r die unterschiedlichsten Anwendungen ausgelegt sein, etwa zur Prognose von Kundenabwanderung bei Finanzdienstleistern, Verkaufs- und Bedarfsprognosen im Einzelhandel oder zur pr&#228;diktiven Instandhaltung in der verarbeitenden Industrie.</p><p>Das gemeinsame Problem beim Entwickeln von Prognosemodellen auf relationalen Daten ist, dass diese Daten nicht als Eingangswerte f&#252;r ML-Modelle geeignet sind. Data Scientists m&#252;ssen bis zu 90 Prozent ihrer Zeit f&#252;r manuelle Arbeitsschritte aufbringen, um die relationalen <a href=„https://arxiv.org/abs/1206.5538“ rel=„external noopener“ target=„_blank“><strong>Ursprungsdaten in eine Repr&#228;sentation zu &#252;berf&#252;hren [6]</strong></a>, die zur Verwendung in <a href=„https://xgboost.ai/“ rel=„external noopener“ target=„_blank“><strong>Modellen wie XGBoost [7]</strong></a> geeignet ist.</p><p class=„indent rteabs–indent“>Die Entwicklung von Features ist zeitaufwendig, kompliziert und erfordert tiefes Fachwissen. Angewandtes maschinelles Lernen ist Feature Engineering.</p><p>&#8211; Andrew Ng, <a href=„https://www.microsoft.com/en-us/research/wp-content/uploads/2013/01/andrew-ng_machinelearning.pdf“ rel=„external noopener“ target=„_blank“><strong>Deep Learning [8]</strong></a></p><p>Feature Learning verspricht, diese Arbeitsschritte zu automatisieren und relationale Daten damit im Rahmen von Machine Learning direkt nutzbar zu machen. Die Erfahrungen aus dem Data-Science-Alltag der Autoren zeigen, dass die Methode es erlaubt, fehleranf&#228;llige sowie zeitaufwendige manuelle Schritte zu vermeiden und dabei zu besseren ML-Modellen f&#252;hrt.</p><h3 class=„subheading“ id=„nav_was_ist0“>Was ist relationales Lernen?</h3><p>Zum Training eines Prognosemodells mittels &#252;berwachten Lernens ben&#246;tigen Data Scientists einen Datensatz mit ausgewiesener Zielvariable. In vielen Lehrbuch-Beispielen oder Data-Science-Wettbewerben besteht der Datensatz lediglich <a href=„https://en.wikipedia.org/wiki/Flat-file_database“ rel=„external noopener“ target=„_blank“><strong>aus einer flachen Tabelle [9]</strong></a>. Diese Tabelle bildet die <a href=„https://de.wikipedia.org/wiki/Grundgesamtheit“ rel=„external noopener“ target=„_blank“><strong>Grundgesamtheit (Statistical Population) des Modells [10]</strong></a>. Jede Zeile dieser Tabelle entspricht einer unabh&#228;ngigen Beobachtung, der eine Zielvariable &#8211; auch Ausgabewert genannt &#8211; und eine feste Anzahl mess- und beobachtbarer Attribute zuzuordnen sind (s. Abb. 1).</p><p>Diese Attribute bezeichnen Data Scientists als Features, sie bilden die Eingabewerte des Modells. Eine Immobilienpreisprognose veranschaulicht den Zusammenhang zwischen Zielvariable und Features: Die Zielvariable ist hier der Wert des Objekts und ein m&#246;gliches Feature ist die Quadratmeterzahl, die zu jeder Immobilie zur Verf&#252;gung steht.</p><p>In der Trainingsphase lernt der Algorithmus die Parameter des Modells und damit einen generalisierten, funktionalen Zusammenhang zwischen Eingabe- und Ausgabedaten. Angewandt auf neue Eingabedaten l&#228;sst sich das erlernte Modell anschlie&#223;end zur Prognose noch unbekannter Ausgabedaten nutzen.</p><figure class=„a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„343“ src=„https://heise.cloudimg.io/width/525/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/1-caeb919820d28d3b.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/1-caeb919820d28d3b.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/1-caeb919820d28d3b.png 1008w, https://heise.cloudimg.io/width/1050/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/1-caeb919820d28d3b.png 2x“ width=„525“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Beispiel f&#252;r eine Populationstabelle (Abb. 1)(Bild:&#160;getML)</figcaption></figure><p>Doch liegen in vielen Anwendungsf&#228;llen die Eingabedaten nicht ausschlie&#223;lich in Form einer flachen Tabelle vor. Gerade innerhalb von Unternehmensanwendungen ist es effizienter, die im Prozess anfallenden Informationen in relationalen Datenstrukturen zu organisieren. Statistiken belegen eine weite Verbreitung: Sieben der zehn beliebtesten Datenbanken sind laut dem DB-Engine Ranking relational. Teilen sich die Eingabewerte eines Prognosemodells auf untereinander in Beziehung stehende Tabellen auf, handelt es sich um eine Anwendung aus einem Teilgebiet des statistischen relationalen Lernens.</p><p>Neben der Populationstabelle gibt es aus Sicht des relationalen Lernens eine weitere Klasse an Tabellen im relationalen Datenschema: periphere Tabellen, die in ihren Zeilen Beobachtungen weiterer Attribute enthalten. Periphere Tabellen k&#246;nnen in m:n-Beziehungen zur Populationstabelle stehen. Entsprechend steht eine Zeile aus der Populationstabelle in einer 1:n-Beziehung zu Zeilen der peripheren Tabelle. Beim relationalen Lernen ist es &#252;blich, dass f&#252;r jede Beobachtungszeile der Populationstabelle eine unterschiedliche Anzahl an zugeh&#246;rigen Zeilen in den peripheren Tabellen anf&#228;llt (s. Abb. 2).</p><p>Da eine Datenbank in der Praxis oft eine Vielzahl von Tabellen enth&#228;lt, f&#252;hren die Beziehungen zwischen den Tabellen zu Komplexit&#228;t. Visualisiert ergeben sich bekannte Stern- oder Schneeflockenschemata. Ein Beispiel ist eine Kundenabwanderungsprognose: Die Zielvariable kodiert, ob ein Kunde in einem bestimmten Zeitraum eine weitere Bestellung t&#228;tigt. Eine periphere Tabelle k&#246;nnte nun f&#252;r jede Kundennummer eine variierende Anzahl weiterer Beobachtungen enthalten, beispielsweise vergangene Eink&#228;ufe oder digitale Kundenaktivit&#228;ten.</p><p>Doch wie &#228;ndert sich die Arbeitsweise von Data Scientists, sobald ihnen f&#252;r die Entwicklung eines Prognosemodells Trainingsdaten mit relationalen Strukturen vorliegen? Was m&#252;ssen sie tun, um dennoch ein Prognosemodell entwickeln zu k&#246;nnen?</p><h3 class=„subheading“ id=„nav_wie_machine1“>Wie Machine Learning mit relationalen Daten bislang funktioniert</h3><p>Mangels zeitgem&#228;&#223;er selbstlernender Algorithmen, die relationale Eingabedaten verarbeiten, bleibt ihnen keine andere Option als die vorliegenden relationalen Daten im ersten Schritt in eine kompatible Repr&#228;sentation zu &#252;berf&#252;hren. Doch wieso werden die peripheren Tabellen nicht einfach weggelassen? Das w&#228;re die mit Abstand ung&#252;nstigste Herangehensweise. Gerade in diesen Tabellen sind meist Informationen enthalten, die in einem starken Bezug zur Zielvariable stehen, wie die im Beispiel zur Kundenabwanderung genannten historischen Transaktionen eines Kunden. St&#252;nden dem Machine-Learning-Modell in der Trainingsphase diese Informationen nicht zur Verf&#252;gung, s&#228;nke die Prognoseg&#252;te des resultierenden Modells.</p><figure class=„a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„404“ src=„https://heise.cloudimg.io/width/696/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/2-7a26999b46dc123d.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/2-7a26999b46dc123d.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/2-7a26999b46dc123d.png 1008w, https://heise.cloudimg.io/width/1392/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/2-7a26999b46dc123d.png 2x“ width=„696“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Feature Engineering auf relationalen Daten findet in der Regel in Programmiersprachen wie SQL, Python oder R statt (Abb. 2).(Bild:&#160;getML)</figcaption></figure><p>Sind den Data Scientists alle f&#252;r die Prognose relevanten Informationen bekannt, k&#246;nnen sie die relationale Beziehung zwischen der Populationstabelle und der peripheren Tabelle durch skalare Featurewerte ersetzen. Diese Werte k&#246;nnen sie anschlie&#223;end an das Prognosemodell &#252;bergeben. Das Aufl&#246;sen dieser 1:n-Beziehungen zwischen einer Beobachtung in der Populationstabelle und den peripheren Tabellen hei&#223;t Feature Engineering. Hierf&#252;r programmieren Data Scientists Aggregationsfunktionen samt Nebenbedingungen.</p><p>Die Herausforderung im Feature Engineering liegt in der Identifikation der relevanten Aggregationen und Nebenbedingungen. Bezogen auf das Beispiel der Kundenabwanderung entspricht ein Feature beispielsweise der

COUNT

-Aggregation &#252;ber alle von einem Kunden get&#228;tigten Eink&#228;ufe in den letzten 90 Tagen. Stattdessen k&#228;me auch die

SUM

-Aggregation &#252;ber den Warenwert der jeweiligen Eink&#228;ufe der vergangenen 45 Tage infrage. Das sind zwei relativ einfache Features aus nahezu endlosen Kombinationsm&#246;glichkeiten von Aggregationsfunktionen und beliebig komplexen Nebenbedingungen. Welches der m&#246;glichen Features die prognoserelevanten Informationen liefert, ist im Voraus nicht klar und bislang weitgehend h&#228;ndisch auszuprobieren (s. Abb. 3).</p><figure class=„a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„275“ src=„https://heise.cloudimg.io/width/525/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/3-e57f4e7c1b2a2503.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/3-e57f4e7c1b2a2503.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/3-e57f4e7c1b2a2503.png 1008w, https://heise.cloudimg.io/width/1050/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/3-e57f4e7c1b2a2503.png 2x“ width=„525“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Der Prozess des Feature Engineerings (Abb. 3)(Bild:&#160;getML)</figcaption></figure><p>In der Praxis entpuppt sich Feature Engineering als zeitaufwendiger Prozess: Es erfordert eine enge Zusammenarbeit zwischen Fachexperten mit Prozesswissen und Data Scientists mit Methodenwissen, um prognoserelevante Einflussfaktoren zu identifizieren, sie in eine Logik zu &#252;berf&#252;hren und auf Basis dieser Logik anschlie&#223;end die Features zu extrahieren. Gute Prognosemodelle erfordern h&#228;ufig eine dreistellige Anzahl an Features, die jeweils bis zu einigen hundert Zeilen Code umfassen k&#246;nnen. Dem Feature Engineering kommt in Machine-Learning-Projekten eine gro&#223;e Bedeutung zu. Die verwendeten Features sind ma&#223;geblich f&#252;r die Prognoseg&#252;te..</p><p class=„indent rteabs–indent“>Letztendlich sind einige Machine-Learning-Projekte erfolgreich und einige scheitern. Was macht den Unterschied aus? Der mit Abstand wichtigste Faktor sind die verwendeten Features.</p><p>- Pedro Domingos, <a href=„https://dl.acm.org/doi/10.1145/2347736.2347755“ rel=„external noopener“ target=„_blank“><strong>Useful Things to Know About Machine Learning [11]</strong></a></p><p>Das Training des Prognosemodells ist mittels AutoML-Anwendungen zwar weitgehend automatisierbar, doch h&#228;ngt die Prognoseg&#252;te in erster Linie von den willk&#252;rlichen Annahmen ab, die die Teams im Feature-Engineering-Prozess treffen.</p><p>Zudem ist es oft nicht zu vermeiden, dass die Bedeutung einzelner Features im Verlauf der Modellanwendung sinkt oder neue Features relevant werden. Dieses Ph&#228;nomen hei&#223;t auch Feature Drift. Also bedarf es einer kontinuierlichen &#220;berwachung und Anpassung der Features sowie regelm&#228;&#223;iger Trainings des darauf aufbauenden Modells.</p><h3 class=„subheading“ id=„nav_mit_feature2“>Mit Feature Learning relationale Daten in Trainingsdaten verwandeln</h3><p>Festzuhalten ist, dass gegenw&#228;rtig die Qualit&#228;t einer Machine-Learning-Anwendung auf relationalen Daten von willk&#252;rlichen Entscheidungen hinsichtlich der gew&#228;hlten Aggregationsfunktionen und Nebenbedingungen abh&#228;ngt, die Menschen im Rahmen des Feature-Engineering-Prozesses getroffen haben (s. Abb. 3).</p><p>Feature Learning bezeichnet einen Ansatz, bei dem ein statischer Algorithmus die Features auf der Grundlage der Trainingsdaten erlernt. Auf nicht-relationalen Daten findet das Feature Learning bereits erfolgreich statt: Seit 2012 stellt Deep Learning die Automatisierung von Feature Engineering in dem Feld der Computer Vision in zahlreichen Anwendungen unter Beweis.</p><p>So kamen im ImageNet-Wettbewerb zur Objekterkennung in Bildern bis 2011 ausschlie&#223;lich von Experten manuell entwickelte Features zum Einsatz. Mit der praktischen Verf&#252;gbarkeit immer tieferer neuronaler Netze &#228;nderte sich das schlagartig: <a href=„https://www.wired.com/story/fei-fei-li-artificial-intelligence-humanity/“ rel=„external noopener“ target=„_blank“><strong>So sank die Fehlerrate der Algorithmen [12]</strong></a> von &#252;ber 25 Prozent (Support Vector Machines mit manuellen Features) auf unter drei Prozent (neuronale Netze mit Feature Learning). Feature Learning trug einen Gro&#223;teil zu diesem Erfolg bei. Das l&#228;sst sich erahnen, wenn man einen genaueren Blick auf die Architektur eines neuronalen Netzwerks wirft: So stehen &#252;ber 99 Prozent aller Berechnungen innerhalb moderner Convolutional Neural Networks (CNN) mit dem Erlernen spezifischer Feature-Repr&#228;sentationen in Verbindung. Die erlernten Features liefern die Grundlage, um ohne extern zugef&#252;hrtes Expertenwissen in der Aufgabenstellung der Objekterkennung eine &#252;bermenschliche Trefferquote zu erreichen.</p><figure class=„a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„552“ src=„https://heise.cloudimg.io/width/696/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/4-577a0f43ba367b6c.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/4-577a0f43ba367b6c.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/4-577a0f43ba367b6c.png 1008w, https://heise.cloudimg.io/width/1392/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/4-577a0f43ba367b6c.png 2x“ width=„696“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Inputdaten variierender L&#228;nge sind inkompatibel mit neuronalen Netzen und anderen Modellen (Abb. 4)(Bild:&#160;getML)</figcaption></figure><p>Aus zahlreichen Gr&#252;nden ist es nicht m&#246;glich, Architekturen, die sich im Feature Learning auf unstrukturierten Daten wie beispielsweise Bildern bew&#228;hrt haben, auf relationale Datenstrukturen zu &#252;bertragen. Versucht man beispielsweise Convolutional Neural Networks auf relationalen Daten zur Anwendung zu bringen, misslingt das im ersten Schritt: CNNs erwarten eine konstante Anzahl an Eingangswerten (s. Abb. 4).</p><h3 class=„subheading“ id=„nav_ein_neues3“>Ein neues ML-Framework f&#252;r relationales Lernen</h3><p>Mit dem ML-Framework getML verfolgt das gleichnamige Unternehmen der Autoren das Ziel, relationales Lernen f&#252;r Data Scientist nutzbar zu machen. Hierzu stellt getML vier neue Feature-Learning-Algorithmen zur Verf&#252;gung. Diese Algorithmen erlernen optimale Features im Rahmen einer &#252;berwachten Suche auf der Grundlage eines abstrakten Datenmodells, das die relationalen Beziehungen zwischen Tabellen abbildet. Die gelernten Features k&#246;nnen nach dieser Aufbereitung auch als Eingabewerte f&#252;r Prognosemodelle dienen. Eine wichtige Anforderung kam dabei aus der Praxis: Die Algorithmen sollten ohne gr&#246;&#223;eren Konfigurationsaufwand stabile und hochwertige Features liefern.</p><p>Nach ersten Versuchen wurde dem Entwicklungsteam klar, dass baumbasierte Ans&#228;tze die vielversprechendste Option darstellen. <a href=„https://www.wired.com/story/fei-fei-li-artificial-intelligence-humanity/“ rel=„external noopener“ target=„_blank“><strong>Auf strukturierte Daten angewandt sind Entscheidungsb&#228;ume neuronalen Netzen vielfach &#252;berlegen [13]</strong></a>, und ihre Entwicklung ist durchaus bemerkenswert. In der Praxis bed&#252;rfen baumbasierte Modelle aufgrund ihrer geringeren Komplexit&#228;t eines reduzierten Konfigurationsaufwands, ben&#246;tigen weniger Trainingsdaten und eine geringere Rechenzeit. All das sind Aspekte, die im Projektalltag eine gewichtige Rolle spielen. Alle Feature-Learning-Ans&#228;tze, die getML entwickelt hat, sind baumbasierte Ensemblemethoden. Wobei <a href=„https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#multirel“ rel=„external noopener“ target=„_blank“><strong>ausgehend von Multirel [14]</strong></a> &#8211; einer effizienten Implementierung eines <a href=„https://link.springer.com/chapter/10.1007/978-3-540-48247-5_46“ rel=„external noopener“ target=„_blank“><strong>Multi-Relational Decision Trees [15]</strong></a> bis hin zu <a href=„https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#relboost“ rel=„external noopener“ target=„_blank“><strong>Relboost [16]</strong></a> &#8211; einer Generalisierung des <a href=„https://en.wikipedia.org/wiki/Gradient_boosting“ rel=„external noopener“ target=„_blank“><strong>Gradient-Boosting-Ansatzes f&#252;r relationale Daten [17]</strong></a> &#8211; jeder Ansatz andere Qualit&#228;ten besitzt. Das betrifft ihre <a href=„https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#algorithms“ rel=„external noopener“ target=„_blank“><strong>Skalierbarkeit, Interpretierbarkeit oder ihre Eignung hinsichtlich bestimmter Datenstrukturen [18]</strong></a>. Abbildung 5.1 zeigt beispielhaft den Multirel-Algorithmus.</p><figure class=„a-u-inline-left a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„417“ src=„https://heise.cloudimg.io/width/696/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._5_-_Feature_Learning-a8c1ce64bcbb3a6e.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._5_-_Feature_Learning-a8c1ce64bcbb3a6e.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._5_-_Feature_Learning-a8c1ce64bcbb3a6e.png 1008w, https://heise.cloudimg.io/width/1392/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._5_-_Feature_Learning-a8c1ce64bcbb3a6e.png 2x“ width=„696“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Vereinfacht dargestellt: Erlernen eines Features mit dem Multirel-Algorithmus (Abb. 5)(Bild:&#160;getML)</figcaption></figure><p>Die gr&#246;&#223;te Herausforderung in der Entwicklungsphase von getML war eine effiziente Implementierung der Feature-Learning-Algorithmen: Um Features zu lernen, sind potenziell Milliarden an Kombinationen aus Aggregationsfunktion und Nebenbedingungen zu evaluieren. Zur Bew&#228;ltigung dieser Menge an Informationen nutzen getMLs Algorithmen einen Trick: Sie <a href=„https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html?highlight=incremental%20updates#multirel“ rel=„external noopener“ target=„_blank“><strong>aktualisieren die Verlustfunktion im Laufe des Suchprozesses inkrementell [19]</strong></a>, um unn&#246;tige Rechenoperationen zu vermeiden. Im Folgenden bestand das Problem aber nun darin, dass keine existierende Datenbank-Engine Datenstrukturen und Caching-Strategien bot, die solche inkrementellen Aktualisierungen in akzeptabler Geschwindigkeit erlaubten. Das f&#252;hrte zu der Entscheidung, die Algorithmen samt einer auf ihre Bed&#252;rfnisse zugeschnittenen In-Memory-Datenbank in C++ von Grund auf neu zu entwickeln.</p><figure class=„a-u-inline-right a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„342“ src=„https://heise.cloudimg.io/width/696/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._6_-_End-to-end-0b0d8e8fec8889ed.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._6_-_End-to-end-0b0d8e8fec8889ed.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._6_-_End-to-end-0b0d8e8fec8889ed.png 1008w, https://heise.cloudimg.io/width/1392/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/Abb._6_-_End-to-end-0b0d8e8fec8889ed.png 2x“ width=„696“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Machine Learning auf relationalen Daten mit getML: Prozessperspektive. 1. Feature-Learning-Schritt, 2. Prognose-Schritt (Abb. 6).(Bild:&#160;getML)</figcaption></figure><p>Der von getML verwendete Ansatz betrachtet das Prognoseproblem als Ganzes. Er l&#228;sst sich als zweistufiger Prozess auffassen (s. Abb 6):</p><ol class=„rtelist rtelist–ordered“><li>getMLs Feature-Learning-Modelle lernen aus relationalen Daten eine kompatible Repr&#228;sentation (Feature-Learning-Schritt)</li><li>Die gelernte Repr&#228;sentation dient als Input f&#252;r State-of-the-Art Machine-Learning-Modelle wie XGBoost, auf deren Basis die eigentlichen Prognosen geschehen (Prognose-Schritt)</li></ol><p>Im Gegensatz zum manuellen Feature Engineering stellt das Feature Learning bereits f&#252;r die erste Stufe eine automatisierte, algorithmische L&#246;sung dar. Das hat nicht nur Folgen f&#252;r die Effizienz, sondern auch f&#252;r die G&#252;te der resultierenden Modelle: So l&#228;sst sich zeigen, dass Feature Learning sowohl <a href=„https://github.com/getml/getml-demo#benchmarks“ rel=„external noopener“ target=„_blank“><strong>manuellem Feature Engineering als auch bisherigen relationalen Lernans&#228;tzen in vielen Anwendungsf&#228;llen &#252;berlegen [20]</strong></a> ist.</p><h3 class=„subheading“ id=„nav_einf&#252;hrung_in4“>Einf&#252;hrung in relationales Lernen f&#252;r Praktiker</h3><p>Eine typische Aufgabe von Data Scientists ist es, Kreditinstitute bei Entscheidungen &#252;ber die Vergabe von Krediten an Bestandskunden zu unterst&#252;tzen. Daf&#252;r entwickeln sie ein Prognosemodell, das die Ausfallwahrscheinlichkeit eines gew&#228;hrten Kredits vorhersagen kann. Eine vereinfachte Datengrundlage f&#252;r die Vergabeentscheidung w&#252;rde in etwa wie in Abbildung 7 aussehen.</p><p>Die Information &#252;ber den Kreditausfall ist die kategoriale Zielvariable. Zur Erinnerung: Die Tabelle mit Beobachtungen der Zielvariable stellt die Population des Prognosemodells dar (Tabelle

population

, Abb. 7.1). Da die <a href=„https://github.com/getml/getml-demo#benchmarks“ rel=„external noopener“ target=„_blank“><strong>Information &#252;ber einen Kreditausfall nominalskaliert [21]</strong></a> ist, handelt es sich um ein <a href=„https://de.wikipedia.org/wiki/Klassifikationsverfahren“ rel=„external noopener“ target=„_blank“><strong>Klassifikationsproblem [22]</strong></a>. Das Kreditinstitut hat im Rahmen der Gesch&#228;ftsbeziehung weitere Daten zur Verf&#252;gung, die f&#252;r die Prognose eines Kreditausfalls relevant sind: dazu geh&#246;ren die Transaktionen, die sich in der Vergangenheit im Rahmen der bestehenden Kundenbeziehung beobachten lie&#223;en (Tabelle

trans

, Abb. 7.2). Um die Darstellung kurz zu halten, beschr&#228;nkt sich das Beispiel hier auf die Beziehung zwischen

population

und

trans

(Listing 1).</p><figure class=„a-inline-image a-u-inline“><div><img alt=„“ class=„legacy-img“ height=„524“ src=„https://heise.cloudimg.io/width/696/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/7-0ad35c7ce32b9c24.png“ srcset=„https://heise.cloudimg.io/width/336/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/7-0ad35c7ce32b9c24.png 336w, https://heise.cloudimg.io/width/1008/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/7-0ad35c7ce32b9c24.png 1008w, https://heise.cloudimg.io/width/1392/q70.png-lossy-70.webp-lossy-70.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/7-0ad35c7ce32b9c24.png 2x“ width=„696“ referrerpolicy=„no-referrer“ /></div><figcaption class=„a-caption“>Das Datenmodell als Basis zur Kreditvergabeentscheidung (Abb. 7).(Bild:&#160;getML)</figcaption></figure><h3 class=„subheading“ id=„nav_projekt_setup5“>Projekt-Setup und Daten-Annotationen</h3><pre class=„rtetx–listing listing“>

import getmlgetml.set_project("young_devs")population_train, population_test, _, trans, _ = getml.datasets.load_loans()

</pre><p>Listing 1: Projekt anlegen und Daten laden</p><p>Wie beschrieben besteht die Herausforderung beim relationalen Lernen darin, 1:n-Beziehungen zwischen der Populationstabelle und peripheren Tabellen aufzul&#246;sen. Im Kreditvergabebeispiel bedeutet das, mehrere mit einem Kundenkonto assoziierte Transaktionen (aus

trans

) zu einem Wert zu b&#252;ndeln, der anschlie&#223;end in die Prognose der Kreditausfallwahrscheinlichkeit einflie&#223;t.</p><p>Aus technischer Sicht l&#228;sst sich das B&#252;ndeln mehrerer Zeilen aus peripheren Tabellen durch das Anwenden von Aggregationsfunktionen umsetzen; ein Beispiel w&#228;re der Durchschnitt aller Kontost&#228;nde der Vergangenheit. Diese Aggregationsfunktionen werden in der Regel nicht global, sondern unter der Ber&#252;cksichtigung von Nebenbedingungen angewandt. Listing 2 zeigt beispielhaft ein h&#228;ndisch erzeugtes Feature auf Basis der durchschnittlichen Kontost&#228;nde 90 Tage vor Kreditbeantragung. Ein Feature, wie es typischerweise im Prozess des Feature Engineerings geschrieben wird, schaut aus wie im folgenden Listing 2.</p><pre class=„rtetx–listing listing“><code>SELECT AVG(trans.balance)FROM populationINNER JOIN trans ON population.account_id = trans.account_idWHERE trans.date &lt;= population.date_loan AND trans.date &gt;= population.date_loan - 90;</code></pre><p>Listing 2: Eine SQL-Query mit einem h&#228;ndisch geschriebenen Feature</p><p>Doch woher wissen Data Scientists, dass sich der bestm&#246;gliche Erkl&#228;rungsgehalt f&#252;r ein Modell aus den vergangenen 90 Tagen speist und nicht beispielsweise aus 167,23 Tagen? Der Prozess l&#228;uft &#8211; wie im Feature Engineering &#8211; h&#228;ndisch ab, daher sind sowohl die Auswahl der Spalte, der Aggregationsfunktion als auch die Gestaltung der Nebenbedingung willk&#252;rliche Entscheidungen mit ungewissem Ausgang. Feature Learning erm&#246;glicht das algorithmische Erlernen der entsprechenden Aggregationen und auch Nebenbedingungen.</p><p>Um Features aus relationalen Datenstrukturen lernen zu k&#246;nnen, ist es n&#246;tig, dem Algorithmus Informationen mitzuteilen, die &#252;ber die blo&#223;en Datentypen hinaus gehen. Im getML-Framework <a href=„https://docs.getml.com/latest/user_guide/annotating_data/annotating_data.html“ rel=„external noopener“ target=„_blank“><strong>gibt es hierf&#252;r das Konzept der Rollen [23]</strong></a>. Eine Rolle l&#228;sst sich als Datentyp mit zus&#228;tzlichen Metadaten betrachten und definiert, wie der Feature-Learning-Algorithmus eine Spalte zu verwenden hat. Dabei kommen etwa bestimmte Aggregationen wie <code>AVG</code> bei kategorischen Spalten nicht zur Anwendung, zum Erlernen von Nebenbedingungen zieht der Algorithmus sie jedoch immer heran. F&#252;r die Tabelle <code>trans</code> (s. Abb. 7.2) hei&#223;t das beispielsweise:</p><ul class=„rtelist rtelist–unordered“><li>Dem Volumen einer Transaktion (<code>amount</code>) ist die Rolle numerical zugewiesen &#8211; auf diese Spalte sind numerische Aggregationen (<code>SUM, AVG, &#8230;</code>) anwendbar.</li><li>Dem Transaktionstypen (<code>type</code>) kommt die Rolle categorical zu &#8211; auf diese Spalte sind keine numerischen Aggregationen anwendbar, sie l&#228;sst sich aber zur Bildung von Nebenbedingungen und f&#252;r bestimmte Aggregationen wie <code>COUNT</code> heranziehen.</li></ul><h3 class=„subheading“ id=„nav_den6“>Den relationalen Suchraum definieren</h3><p>Neben den konkreten Daten und den Annotationen ben&#246;tigt ein Feature-Learning-Algorithmus eine weitere Information: das abstrakte Datenmodell, das die Beziehungen zwischen den einzelnen Tabellen beschreibt und so den relationalen Suchraum definiert.</p><p>Die <a href=„https://docs.getml.com/latest/api_reference/dataframe.html“ rel=„external noopener“ target=„_blank“><strong>Python-API von getML bietet hierf&#252;r mehrere M&#246;glichkeiten [24]</strong></a>. In diesem Beispiel nutzen wir die

StarSchema

-Klasse, die es erlaubt, mit wenigen Zeilen Code ein Sternschema zu modellieren. Die API enth&#228;lt au&#223;erdem

TimeSeries

zur Modellierung von Zeitreihen und ein allgemeines

DataModel

, das es erlaubt, relationale Probleme beliebiger Komplexit&#228;t (wie Schneeflockenschemata) zu modellieren (Listing 3).</p><pre class=„rtetx–listing listing“><code>schema=getml.data.StarSchema( train=population_train, test=population_test, alias=„population“,)schema.join( trans, on=„account_id“, time_stamps=(„date_loan“, „date“),)</code></pre><p>Listing 3: Definition des abstrakten Datenmodells</p><p><code>StarSchema</code> erh&#228;lt als Parameter die Populationstabelle (im Beispiel bereits aufgeteilt in Trainings- und Testdaten: <code>population_train</code>, <code>population_test</code>), sowie einen Alias (<code>population</code>), der es erlaubt, abstrakt &#8211; unabh&#228;ngig vom Split &#8211; auf die Population zu referenzieren. Anschlie&#223;end gilt es, die peripheren Tabellen &#8211; die Zacken des Sterns &#8211; via <code>join</code> zum Schema hinzuzuf&#252;gen und so mit der Populationstabelle &#8211; dem Zentrum des Sterns &#8211; in Beziehung zu bringen. Hierzu wird <code>join</code> ein Join Key &#252;bergeben (<code>on</code>). Au&#223;erdem ist es m&#246;glich <code>join</code> als zus&#228;tzliche Restriktion Zeitstempel zu &#252;bergeben (<code>time_stamps</code>), um die Plausibilit&#228;t des Modells sicherzustellen.</p><p>F&#252;r den konkreten Fall hei&#223;t das, dass nur solche Transaktionen Ber&#252;cksichtigung finden, die vor den Kreditvergaben durchgef&#252;hrt wurden (<code>date &lt;= date_loan</code>). Zu beachten ist hier auch, dass die Algorithmen Joins im abstrakten Datenmodell nach dem Prinzip der Lazy Evaluation ausf&#252;hren: an diesem Punkt finden also noch keine konkreten Operationen statt. Erst, wenn die Feature-Learning-Algorithmen Feature-Repr&#228;sentationen lernen, materialisieren die Algorithmen die im abstrakten Datenmodell beschriebenen Joins.</p><h3 class=„subheading“ id=„nav_relationales7“>Relationales Lernen findet in der Pipeline statt</h3><pre class=„rtetx–listing listing“><code>multirel = getml.feature_learning.Multirel( loss_function=getml.feature_learning.loss_functions.CrossEntropyLoss,)xgboost = getml.predictors.XGBoostClassifier()pipe = getml.pipeline.Pipeline( data_model=schema.data_model, feature_learners=multirel, predictors=xgboost,)</code></pre><p>Listing 4: Zusammenf&#252;gen der Komponenten in der Pipeline</p><p>Zuletzt sind die Modelle zu definieren, die in dem mehrstufigen Lernproblem zur Anwendung kommen sollen: erstens ein Feature-Learning-Algorithmus (hier <code>Multirel</code>), zweitens ein Prognose-Algorithmus &#8211; hier <code>XGBoost</code> (Listing 4).</p><p>Nun haben die Data Scientists alle Zutaten beisammen, um &#8211; ausgehend vom Problem in relationaler Form &#8211; eine End-to-End-Pipeline aufzubauen. Eine solche Pipeline bildet das Prognoseproblem vollumf&#228;nglich ab. An sie k&#246;nnen Data Scientists anschlie&#223;end das Datenmodell aus dem <code>StarSchema</code> (<code>data_model</code>), das Feature-Learning-Modell (<code>feature_learners</code>), sowie das Prognosemodell (<code>predictors</code>) &#252;bergeben (Listing 5).</p><pre class=„rtetx–listing listing“>

pipe.fit(population_table=population_train, peripheral_tables={"trans": trans})

</pre><p>Listing 5: Trainieren der Pipeline</p><p>Im n&#228;chsten Schritt gilt es, mit

fit

die konkreten Daten an die Pipeline zu &#252;bergeben. Der Methodenaufruf startet das Sch&#228;tzen der Modelle. Im Rahmen von

fit

erlernt die Pipeline, basierend auf den Trainingsdaten, in einem ersten Schritt die Logik hinter den Features. Hierf&#252;r traversieren die Algorithmen die im abstrakten Datenmodell beschriebenen Pfade und l&#246;sen die Joins st&#252;ckweise auf. Aus den nun materialisierten Daten ziehen die Algorithmen in der Folge wiederholt Stichproben und erlernen auf deren Basis die Logik eines Features. Zum Erlernen weiterer Features <a href=„https://en.wikipedia.org/wiki/Ensemble_learning“ rel=„external noopener“ target=„_blank“><strong>kommen Ensemblemethoden zum Einsatz [25]</strong></a>. Nach dem Erlernen der Features transformiert die Pipeline die gelernte Logik in konkrete Featurewerte.</p><p>Sie dienen im zweiten Schritt dem Prognosealgorithmus (XGBoost) als Eingangsdaten. Mit einer gesch&#228;tzten Pipeline (nach

fit

) ist es m&#246;glich, Prognosen auf ungesehene Daten vorzunehmen (

predict

), die Prognoseg&#252;te des Modells zu bestimmen (

score

) oder die Featurewerte zu materialisieren (

transform

). Letzteres erlaubt es, eigene Modelle zur Prognose (<a href=„https://scikit-learn.org/stable/“ rel=„external noopener“ target=„_blank“><strong>beispielsweise aus scikit-learn [26]</strong></a>) zu verwenden. M&#246;glich ist hier aber prinzipiell die Nutzung eines jeden Modells, f&#252;r das eine Python-API verf&#252;gbar ist.</p><h3 class=„subheading“ id=„nav_mit_feature8“>Mit Feature Learning zum Durchbruch</h3><p>Die Data Scientists des Kreditinstituts k&#246;nnen mithilfe der Pipeline schlie&#223;lich die Kreditausfallwahrscheinlichkeit potenzieller Kreditnehmer auf Basis der Transaktionshistorie einzelner Kunden berechnen. Hierf&#252;r m&#252;ssen sie lediglich neue Daten an <code>predict</code> &#252;bergeben. Das Besondere: Die Data Scientists m&#252;ssen selbst keine Transformationen an den Daten vornehmen, kein Feature manuell erstellen, keine Zeile SQL schreiben. Sie m&#252;ssen lediglich die Rohdaten und die verf&#252;gbaren Metainformationen &#8211; Datenmodell und Annotationen &#8211; an die API &#252;bergeben. Eine typische Anforderung in der Praxis ist die M&#246;glichkeit, die gelernte Logik hinter einem Feature zu untersuchen.</p><div class=„a-boxtarget a-boxcontent a-inline-textboxcontent a-inline-textboxcontent-container“ data-collapse-target=„“><p>Das vorgestellte Beispiel sowie &#252;ber zwanzig weitere Beispiele sind in getMLs Demo-Repository auf Github verf&#252;gbar. Die getML-Engine steht als Free Trial <a href=„https://getml.com“ rel=„external noopener“ target=„_blank“><strong>auf der Website von getML zum Download bereit [27]</strong></a>. Auf Try GetML lassen sich alle <a href=„https://try.getml.com“ rel=„external noopener“ target=„_blank“><strong>Beispiel-Notebooks interaktiv in einer JupyterLab-Umgebung [28]</strong></a> im Browser ausf&#252;hren.</p></div><p>Dadurch ist es m&#246;glich, die Gesch&#228;ftslogik eines Features zu validieren. Das getML-Framework bietet die M&#246;glichkeit, Features, aber auch ganze Pipelines, in verschiedene SQL-Dialekte zu transpilieren und beispielsweise auf einem Spark-Cluster auszuf&#252;hren. Listing 6 zeigt exemplarisch die transpilierte Logik eines von Multirel auf Basis der Beziehung zwischen <code>population</code> und <code>trans</code> gelernten Features: Das Minimum des Kontostandes unter Ber&#252;cksichtigung bestimmter Transaktionsarten und -zeitpunkte.</p><pre class=„rtetx–listing listing“>

CREATE TABLE feature_1_61 ASSELECT MIN(trans.balance) AS feature_1_61FROM populationINNER JOIN trans ON population.account_id = trans.account_idWHERE (trans.date &lt;= population.date_loan)  AND (((trans.operation NOT IN ('VYBER')         OR trans.operation IS NULL)        AND (trans.amount &gt; 18278.000000))       OR ((trans.operation IN ('VYBER'))           AND (population.date_loan - trans.date &gt; 7557120.000000)           AND (trans.balance &gt; 28786.000000))       OR ((trans.operation IN ('VYBER'))           AND (population.date_loan - trans.date &gt; 7557120.000000)           AND (trans.balance &lt;= 28786.000000                OR trans.balance IS NULL)           AND (trans.balance &lt;= 1681.000000))       OR ((trans.operation IN ('VYBER'))           AND (population.date_loan - trans.date &lt;= 7557120.000000)))GROUP BY population.account_id;

</pre><p>Listing 6: Ein von Multirel gelerntes Feature als SQL-Query &#8211; „VYBER“ klassifiziert Bargeldabhebungen</p><p>Das Beispiel zeigt einen typischen Anwendungsfall des relationalen Lernens &#8211; die Kreditvergabeentscheidung einer Bank &#8211; in einer vereinfachten Form. Data Scientists haben die M&#246;glichkeit Feature-Learning-Algorithmen zur Entwicklung von beliebigen Prognosemodellen auf relationalen Daten oder Zeitreihen einzusetzen &#8211; unabh&#228;ngig von der Industrie oder dem Anwendungsfall. Feature Learning birgt das Potenzial, durch eine algorithmische Ende-zu-Ende-Automatisierung eine zentrale Rolle innerhalb unternehmerischer ML-Anwendungen einzunehmen.</p><div class=„a-boxtarget a-boxcontent a-inline-textboxcontent“ data-collapse-target=„“><figure class=„a-inline-textboximage-container“><img alt=„Alexander Uhlig, getML“ src=„https://heise.cloudimg.io/width/1597/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/portrait-alex-483a85ddcfa00029.jpeg“ srcset=„https://heise.cloudimg.io/width/3194/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/portrait-alex-483a85ddcfa00029.jpeg 2x“ class=„c1“ referrerpolicy=„no-referrer“ /></figure><div class=„a-inline-textboxcontent-container“><p>Alexander Uhlig</p><p>ist einer der Gr&#252;nder von getML. Er studierte Physik (M.Sc.) in Leipzig und arbeitete nach seinem Studium in dem VW Data:Lab, einer KI-Abteilung innerhalb der Volkswagen AG. Seit 2017 entwickelt er mit seinem Team das Machine-Learning-Framework getML und brachte es in zahlreichen Kundenprojekten erfolgreich zur Anwendung.</p></div></div><div class=„a-boxtarget a-boxcontent a-inline-textboxcontent“ data-collapse-target=„“><figure class=„a-inline-textboximage-container“><img alt=„S&#246;ren Nikolaus, getML“ src=„https://heise.cloudimg.io/width/1188/q50.png-lossy-50.webp-lossy-50.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/portrait-soeren-e04131fa59166b6c.jpg“ srcset=„https://heise.cloudimg.io/width/2376/q30.png-lossy-30.webp-lossy-30.foil1/_www-heise-de_/imgs/18/3/4/4/3/5/0/9/portrait-soeren-e04131fa59166b6c.jpg 2x“ class=„c1“ referrerpolicy=„no-referrer“ /></figure><div class=„a-inline-textboxcontent-container“><p>S&#246;ren Nikolaus</p><p>arbeitet seit 2020 als Data Scientist Developer Advocate und Entwickler bei getML. Er vermittelt zwischen Kunden, Nutzern und getMLs Entwicklungsteam. Er studierte Volkswirtschaftslehre (M.Sc.) in Leipzig.</p></div></div><p>() </p><hr /><p><strong>URL dieses Artikels:</strong><br /><small>

https://www.heise.de/-6655369

</small></p><p><strong>Links in diesem Artikel:</strong><br /><small>

<strong>[1]</strong>&#160;https://www.heise.de/hintergrund/Alpine-js-Das-Schweizer-Taschenmesser-fuer-dynamische-Weboberflaechen-6177628.html

</small><br /><small>

<strong>[2]</strong>&#160;https://www.heise.de/hintergrund/Developer-Experience-Glueckliche-Entwickler-schreiben-besseren-Code-6150890.html

</small><br /><small>

<strong>[3]</strong>&#160;https://www.heise.de/hintergrund/Ethik-und-Kuenstliche-Intelligenz-ein-neuer-Umgang-mit-KI-Systemen-6056059.html

</small><br /><small>

<strong>[4]</strong>&#160;https://www.heise.de/developer/young-professionals-6065678.html

</small><br /><small>

<strong>[5]</strong>&#160;https://de.wikipedia.org/wiki/Pr%C3%A4diktive_Analytik

</small><br /><small>

<strong>[6]</strong>&#160;https://arxiv.org/abs/1206.5538

</small><br /><small>

<strong>[7]</strong>&#160;https://xgboost.ai/

</small><br /><small>

<strong>[8]</strong>&#160;https://www.microsoft.com/en-us/research/wp-content/uploads/2013/01/andrew-ng_machinelearning.pdf

</small><br /><small>

<strong>[9]</strong>&#160;https://en.wikipedia.org/wiki/Flat-file_database

</small><br /><small>

<strong>[10]</strong>&#160;https://de.wikipedia.org/wiki/Grundgesamtheit

</small><br /><small>

<strong>[11]</strong>&#160;https://dl.acm.org/doi/10.1145/2347736.2347755

</small><br /><small>

<strong>[12]</strong>&#160;https://www.wired.com/story/fei-fei-li-artificial-intelligence-humanity/

</small><br /><small>

<strong>[13]</strong>&#160;https://www.wired.com/story/fei-fei-li-artificial-intelligence-humanity/

</small><br /><small>

<strong>[14]</strong>&#160;https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#multirel

</small><br /><small>

<strong>[15]</strong>&#160;https://link.springer.com/chapter/10.1007/978-3-540-48247-5_46

</small><br /><small>

<strong>[16]</strong>&#160;https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#relboost

</small><br /><small>

<strong>[17]</strong>&#160;https://en.wikipedia.org/wiki/Gradient_boosting

</small><br /><small>

<strong>[18]</strong>&#160;https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html#algorithms

</small><br /><small>

<strong>[19]</strong>&#160;https://docs.getml.com/latest/user_guide/feature_engineering/feature_engineering.html?highlight=incremental%20updates#multirel

</small><br /><small>

<strong>[20]</strong>&#160;https://github.com/getml/getml-demo#benchmarks

</small><br /><small>

<strong>[21]</strong>&#160;https://github.com/getml/getml-demo#benchmarks

</small><br /><small>

<strong>[22]</strong>&#160;https://de.wikipedia.org/wiki/Klassifikationsverfahren

</small><br /><small>

<strong>[23]</strong>&#160;https://docs.getml.com/latest/user_guide/annotating_data/annotating_data.html

</small><br /><small>

<strong>[24]</strong>&#160;https://docs.getml.com/latest/api_reference/dataframe.html

</small><br /><small>

<strong>[25]</strong>&#160;https://en.wikipedia.org/wiki/Ensemble_learning

</small><br /><small>

<strong>[26]</strong>&#160;https://scikit-learn.org/stable/

</small><br /><small>

<strong>[27]</strong>&#160;https://getml.com

</small><br /><small>

<strong>[28]</strong>&#160;https://try.getml.com

</small><br /><small>

<strong>[29]</strong>&#160;mailto:sih@ix.de

</small><br /></p><p class=„printversion__copyright“><em>Copyright &#169; 2022 Heise Medien</em></p> </html>

Cookies helfen bei der Bereitstellung von Inhalten. Diese Website verwendet Cookies. Mit der Nutzung der Website erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Computer gespeichert werden. Außerdem bestätigen Sie, dass Sie unsere Datenschutzerklärung gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information