Empfehlungs-Engine – POC

Talend Cookbook: Big Data und maschinelles Lernen

Rest der Serie ansehen:

Sandbox-Einrichtung

Prädiktive Wartung im IoTRisikobewertung in EchtzeitData-Warehouse
-Optimierung

Einleitung

Nachdem Sie die virtuelle Umgebung Big Data and Machine Learning Sandbox von Talend heruntergeladen haben, ist es an der Zeit, einige praktische Anwendungsmöglichkeiten dieser Umgebung für Ihr Geschäft kennenzulernen. Im folgenden Beispiel zeigen wir Ihnen, wie wir Benutzern die für sie relevantesten Filme empfehlen. Dabei stützen wir uns auf Empfehlungen der fiktiven Website „Talend Movie Database“. Diese Empfehlungen leiten wir mithilfe der Talend-Funktionen für maschinelles Lernen aus den Bewertungen anderer Benutzer ab. In einem ersten Schritt werden Sie das Empfehlungsmodell mit einer großen Datenmenge aus Bewertungen trainieren (nicht weniger als 100.000 für die Modellerstellung), die auf der Website MovieLens erfasst wurden. Mithilfe des Modells können wir dann Filme empfehlen, die die Besucher mit größerer Wahrscheinlichkeit mögen, weil diese Filme auch früheren Besuchern – nach deren Bewertungen zu urteilen – gefallen haben.

Sandbox-Schema Empfehlungs-Engine


Highlights

Maschinelles Lernen

Mithilfe von Talend-Funktionen für maschinelles Lernen wird für Ihre Website eine Empfehlungs-Engine bereitgestellt.

Spark-Streaming / Echtzeit

Dank Spark-Streaming-Technologie erhalten Ihre Benutzer Empfehlungen in Echtzeit.

Symbol für REST-Dienst

REST-Dienst im Live-Dashboard

Ein REST-konformer Web-Dienst erfasst Benutzerbewegungen in einem Dashboard im Web.


Ausführung

Rufen Sie auf der Sandbox-Ladeseite das Portal mit dem Anwendungsbeispiel für die Empfehlungs-Engine („Recommendation Engine“) auf. Hier finden Sie eine Kurzanleitung und eine interaktive Weboberfläche.

Zugriff auf Sandbox-Webseite für Empfehlungs-Engine

Öffnen Sie Talend Studio in der Sandbox-Umgebung. Bei diesem Beispiel arbeiten wir im Ordner RecommendationEngine, der sich in der Repository-Ansicht befindet, und sehen uns Jobs in den Job-Designs Standard, Big Data Batch und Big Data Streaming an. Wenn Sie so weit sind, beginnen Sie die Demo wie folgt:

  1. Öffnen Sie im Abschnitt Standard der Job-Designs den Ordner RecommendationEngine. Führen Sie im Ordner A_Setup den Job Step_01_EnvironmentSetup aus. Mit diesem Job initialisieren Sie die Demo-Umgebung entsprechend der von Ihnen gewählten Big-Data-Plattform. Insbesondere werden hierbei Seed-Daten in HDFS geladen und die Tabellen einer NoSQL-Datenbank initialisiert.Einrichtung der Empfehlungs-Engine in der Sandbox
  2. Öffnen Sie im Abschnitt Standard der Job-Designs den Ordner RecommendationEngine. Wenn Ihnen an einer schnellen Ausführung gelegen ist, führen Sie hier den Job Step_02_TrainModel aus, der sich im Ordner B_Model befindet. Mit diesem Schritt wird ein Modell anhand von früheren Daten und mithilfe einer tALSModel-Komponente trainiert. Dieser eine Job besteht tatsächlich aus vier einzelnen Jobs der Job-Designs „Standard“ und „Big Data Batch“.Training des Empfehlungs-Engine-Modells
  3. Optional: Der Job „Step_02_TrainModel“ besteht aus vier einzelnen Jobs der Job-Designs „Standard“ und „Big Data Batch“. Wenn Sie den Prozessablauf der Empfehlungs-Engine und speziell das Training des ML-Modells genauer verfolgen und verstehen möchten, können Sie an dieser Stelle jeden Schritt des Prozesses separat ausführen. Gehen Sie dazu wie folgt vor:
    • Job 1 - Öffnen Sie unter den Standard-Jobs den Ordner RecommendationEngine und hier den Eintrag B_Model > Sub_Steps. Führen Sie den Job DeleteModel aus. Durch diesen Job werden zunächst alle ML-Modelle, die im Modell-Verzeichnis noch vorhanden sein könnten, gelöscht.
    • Job 2 - Öffnen Sie unter den Big Data Batch-Jobs den Ordner RecommendationEngine und hier den Eintrag Sub_Steps. Führen Sie den Job PrepareMovieData aus. Mit diesem Job werden die Daten der Filme bereitgestellt und die Tabellen der NoSQL-Datenbank Cassandra befüllt, die während der Echtzeit-Ausführung der Empfehlung einen schnellen Abruf ermöglichen.
    • Job 3 - Öffnen Sie unter den Big Data Batch-Jobs den Ordner RecommendationEngine und hier den Eintrag Sub_Steps. Führen Sie den Job Train aus. Dieser Job sorgt dafür, dass mit den vorbereiteten Filmdaten ein ALS-Algorithmus (ALS - Alternating Least Squares, Methode der alternierenden kleinsten Quadrate) trainiert wird, der später in der Empfehlungs-Engine dazu dient, individualisierte Filmempfehlungen zu erzeugen.
    • Job 4 - Öffnen Sie unter den Standard-Jobs den Ordner RecommendationEngine und hier den Eintrag B_Model > Sub_Steps. Führen Sie den Job StageModel aus. Hierdurch wird das erstellte und trainierte Modell in das Dateisystem HDFS kopiert, wo die Empfehlungs-Engine darauf zugreifen kann.
  4. Öffnen Sie unter den Standard-Jobs den Ordner RecommendationEngine. Führen Sie die drei im Ordner C_Services aufgelisteten Jobs aus. Hierdurch werden die API Services aktiviert, die für die Weboberfläche dieser Demo benötigt werden:

    Step_03a_MoviesService

    Filmdienst für Empfehlungs-Engine

    Step_03b_RatingsService

    Bewertungsdienst für Empfehlungs-Engine

    Step_03c_RecommendationsService

    Empfehlungsdienst für Empfehlungs-Engine

  5. Öffnen Sie unter Big Data Streaming-Jobs den Ordner RecommendationEngine. Führen Sie den Job Step_04a_RecommendationStream aus. Dieser Job liest Eingabedaten aus der Kafka-Warteschlange und sendet, auf der Basis dieser Daten, in Echtzeit Filmempfehlungen aus einer NoSQL-Cassandra-Datenbank. Diese werden dem Benutzer in der Weboberfläche angezeigt.Streaming mit der Empfehlungs-Engine
  6. Rufen Sie nun die Weboberfläche auf. Sie sind hier standardmäßig als Benutzer Charlie Chaplin angemeldet. Dieser Benutzer hat bereits einige Filme bewertet. Wählen Sie ein Genre und innerhalb dieses Genres unter Movie einen Film aus. Nun müssten Sie nach wenigen Sekunden Verarbeitungszeit Empfehlungen erhalten, die sich an den von diesem Benutzer bereits bewerteten Filmen orientieren. Demo-Webseite für Empfehlungs-Engine
    • Wenn dieser Benutzer weitere Filme bewertet, müssen Sie das Modell neu trainieren. Hierzu müssen Sie zuerst den aktuell ausgeführten Job Recommendation Stream anhalten und anschließend der Empfehlungs-Engine wie folgt ein neues Modell zur Verfügung stellen:
      • Öffnen Sie unter den Big Data Batch-Jobs den Ordner RecommendationEngine. Führen Sie den Job Step_06_RetrainModel aus. Hierdurch werden nun im Modell für maschinelles Lernen die neu hinzugekommenen Informationen für diesen Benutzer berücksichtigt.
      • Öffnen Sie unter den Standard-Jobs den Ordner RecommendationEngine. Führen Sie im Ordner B_Model > Sub_Steps den Job StageModel aus. Wie oben bereits beschrieben, wird damit das neu trainierte Modell in HDFS übertragen und so für die Empfehlungs-Engine zugänglich gemacht.
      • Starten Sie den Job Recommendation Stream erneut. Bei aktivem Job „Recommendation Stream“ navigieren Sie zurück zur Weboberfläche und wählen Sie nochmals ein neues Genre und einen neuen Film aus. Wenn zwischenzeitlich genügend Filme neu bewertet wurden, müssten jetzt auch neue Empfehlungen angezeigt werden.
  7. Um noch ein wenig zu üben, können Sie auch einen neuen Benutzer anlegen (über das Menü rechts oben auf der abgebildeten Webseite). Für diesen Benutzer sind zu Beginn noch keine Bewertungen ausgewählt. Führen Sie dann die Schritte wie oben beschrieben aus, d. h., bewerten Sie einige Filme, trainieren Sie das Modell neu und starten Sie nochmals den Job „Recommendation Stream“. Sie müssten daraufhin Empfehlungen erhalten, die auf den Bewertungen des neuen Benutzers basieren.

Fazit

In diesem Beispiel wurde demonstriert, wie sich mithilfe einer Empfehlungs-Engine Empfehlungen in Echtzeit anhand von Daten generieren lassen, die auf vorhandenen Filmbewertungen anderer Benutzer beruhen. Je mehr Informationen dabei von anderen Benutzern erhoben werden, umso wertvoller ist die Empfehlung für den aktuellen Benutzer. Hinter den Kulissen hat Talend zur Generierung der Empfehlungen auf Apache Spark Streaming und auf die Methode der alternierenden kleinsten Quadrate (Alternating Least Squares, ALS) zurückgegriffen. Für die sekundenschnelle Übertragung der Empfehlungen an das Web-Frontend wurde eine NoSQL-Datenbank wie Cassandra mit ihrer hohen Zugriffsgeschwindigkeit genutzt.

| Zuletzt aktualisiert: June 26th, 2019