So installieren und verwenden Sie Apache PredictionIO für maschinelles Lernen unter CentOS 7

Herkömmliche Ansätze zur Datenanalyse können nicht verwendet werden, wenn Datensätze eine bestimmte Größe erreichen. Eine moderne Alternative zur Analyse der riesigen Datenmengen ist die Verwendung von Methoden des maschinellen Lernens. Maschinelles Lernen kann mit einem schnellen und effizienten Algorithmus genaue Ergebnisse liefern.

Apache PredictionIO ist ein Open-Source-Server für maschinelles Lernen, mit dem Predictive Engines für jede maschinelle Lernaufgabe erstellt werden. Durch die Verwendung anpassbarer Engine-Vorlagen, die schnell erstellt und bereitgestellt werden können, verkürzt sich die Zeit für maschinelles Lernen vom Labor bis zur Produktion. Es bietet die Datenerfassungs- und Bereitstellungskomponenten und abstrahiert die zugrunde liegende Technologie, um eine API bereitzustellen, mit der sich Entwickler auf Transformationskomponenten konzentrieren können. Sobald der Engine-Server von PredictionIO als Webdienst bereitgestellt ist, kann er in Echtzeit auf dynamische Abfragen antworten.

Apache PredictionIO besteht aus verschiedenen Komponenten.

  • PredictionIO-Plattform : Ein Open-Source-Stack für maschinelles Lernen, der auf einer hochmodernen Open-Source-Anwendung wie Apache Spark, Apache Hadoop, Apache HBase und Elasticsearch basiert.
  • Ereignisserver : Hiermit werden kontinuierlich Daten von Ihrem Webserver oder Server für mobile Anwendungen im Echtzeitmodus oder im Stapelmodus erfasst. Die gesammelten Daten können verwendet werden, um den Motor zu trainieren oder eine einheitliche Ansicht für die Datenanalyse bereitzustellen. Der Ereignisserver verwendet Apache HBase zum Speichern der Daten.
  • Engine Server : Der Engine Server ist für die eigentliche Vorhersage verantwortlich. Es liest die Trainingsdaten aus dem Datenspeicher und verwendet einen oder mehrere Algorithmen für maschinelles Lernen zum Erstellen der Vorhersagemodelle. Eine Engine, die einmal als Webdienst bereitgestellt wurde, beantwortet die von einem Web oder einer mobilen App mithilfe der REST-API oder des SDK gestellten Fragen.
  • Vorlagengalerie : Diese Galerie bietet verschiedene Arten von vorgefertigten Engine-Vorlagen. Sie können eine Vorlage auswählen, die Ihrem Anwendungsfall ähnelt, und sie Ihren Anforderungen entsprechend ändern.

Voraussetzungen

  • Eine Vultr CentOS 7-Serverinstanz mit mindestens 8 GB RAM. Zu Test- und Entwicklungszwecken können Sie eine Instanz mit 4 GB RAM und einem weiteren 4 GB Swap-Speicher auswählen .
  • Ein Sudo-Benutzer .

In diesem Tutorial verwenden wir 192.0.2.1als öffentliche IP-Adresse des Servers. Ersetzen Sie alle Vorkommen von 192.0.2.1durch Ihre öffentliche Vultr-IP-Adresse.

Aktualisieren Sie Ihr Basissystem mithilfe der Anleitung zum Aktualisieren von CentOS 7 . Fahren Sie nach der Aktualisierung Ihres Systems mit der Installation von Java fort.

Installieren Sie Java

Viele der Komponenten von PredictionIO erfordern JDK oder Java Development Kit, Version 8, um zu funktionieren. Es unterstützt sowohl OpenJDK als auch Oracle Java. In diesem Tutorial installieren wir OpenJDK Version 8.

OpenJDK kann einfach installiert werden, da das Paket im Standard-YUM-Repository verfügbar ist.

sudo yum -y install java-1.8.0-openjdk-devel

Überprüfen Sie die Java-Version, um sicherzustellen, dass sie korrekt installiert wurde.

java -version

Sie erhalten eine ähnliche Ausgabe.

[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Bevor wir fortfahren können, müssen wir die Variablen JAVA_HOMEund JRE_HOMEumgebungsvariablen einrichten . Finden Sie den absoluten Pfad der ausführbaren JAVA-Datei in Ihrem System.

readlink -f $(which java)

Sie sehen eine ähnliche Ausgabe.

[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java

Nun setzen JAVA_HOMEund JRE_HOMEUmgebungsvariable nach dem Pfad des Java - Verzeichnis.

echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre" >> ~/.bash_profile

Führen Sie die bash_profileDatei aus.

source ~/.bash_profile

Jetzt können Sie den echo $JAVA_HOMEBefehl ausführen, um zu überprüfen, ob die Umgebungsvariable festgelegt ist.

[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64

Installieren Sie PredictionIO

Apache bietet PredictionIO-Quelldateien, die lokal heruntergeladen und kompiliert werden können. Erstellen Sie ein neues temporäres Verzeichnis, um die Quelldatei herunterzuladen und zu kompilieren.

mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles

Laden Sie das PredictionIO-Quelldateiarchiv von einer beliebigen Apache Mirror-Site herunter .

wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz

Extrahieren Sie das Archiv und kompilieren Sie die Quelle, um eine Distribution von PredictionIO zu erstellen.

tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh

Die obige Verteilung wird gegenüber den Standardversionen der Abhängigkeiten aufgebaut werden, die Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3und ElasticSearch 5.5.2. Warten Sie, bis der Build abgeschlossen ist. Je nach Leistung Ihres Systems dauert der Abschluss etwa zehn Minuten.

Hinweis : Es steht Ihnen frei, die neueste unterstützte Version der Abhängigkeiten zu verwenden. Während des Builds werden jedoch möglicherweise einige Warnungen angezeigt, da einige Funktionen möglicherweise veraltet sind. Führen Sie es aus ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3und ersetzen Sie die Versionsnummer entsprechend Ihrer Wahl.

Sobald der Build erfolgreich abgeschlossen wurde, wird am Ende die folgende Meldung angezeigt.

...
PredictionIO-0.12.0-incubating/python/pypio/__init__.py
PredictionIO-0.12.0-incubating/python/pypio/utils.py
PredictionIO-0.12.0-incubating/python/pypio/shell.py
PredictionIO binary distribution created at PredictionIO-0.12.0-incubating.tar.gz

Die PredictionIO-Binärdateien werden im PredictionIO-0.12.0-incubating.tar.gzArchiv gespeichert . Extrahieren Sie das Archiv im /optVerzeichnis und geben Sie dem aktuellen Benutzer den Besitz.

sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating

Legen Sie die PIO_HOMEUmgebungsvariable fest.

echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile

Installieren Sie die erforderlichen Abhängigkeiten

Erstellen Sie ein neues Verzeichnis zu installieren PredictionIO Abhängigkeiten wie HBase, Sparkund Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Laden Sie Scala Version 2.11.8 herunter und extrahieren Sie es in das vendorsVerzeichnis.

wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
tar xf scala-2.11.8.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors

Laden Sie Apache Hadoop Version 2.7.3 herunter und extrahieren Sie es in das vendorsVerzeichnis.

wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar xf hadoop-2.7.3.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

Apache Spark ist die Standardverarbeitungs-Engine für PredictionIO. Laden Sie Spark Version 2.1.1 herunter und extrahieren Sie es in das vendorsVerzeichnis.

wget https://archive.apache.org/dist/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz
tar xf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors

Laden Sie Elasticsearch Version 5.5.2 herunter und extrahieren Sie es in das vendorsVerzeichnis.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
tar xf elasticsearch-5.5.2.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

Laden Sie abschließend HBase Version 1.2.6 herunter und extrahieren Sie es in das vendorsVerzeichnis.

wget https://archive.apache.org/dist/hbase/stable/hbase-1.2.6-bin.tar.gz
tar xf hbase-1.2.6-bin.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors

Öffnen Sie die hbase-site.xmlKonfigurationsdatei, um HBase für die Arbeit in einer eigenständigen Umgebung zu konfigurieren.

nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml

Suchen Sie den leeren Konfigurationsblock und ersetzen Sie ihn durch die folgende Konfiguration.

<configuration>
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/data</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/zookeeper</value>
  </property>
</configuration>

Das Datenverzeichnis wird automatisch von HBase erstellt. Bearbeiten Sie die HBase-Umgebungsdatei, um den JAVA_HOMEPfad festzulegen .

nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh

Kommentieren Sie Zeile 27 aus und setzen Sie JAVA_HOMEden Pfad jreIhrer Java-Installation. Den Pfad zur ausführbaren JAVA-Datei finden Sie mit dem readlink -f $(which java)Befehl.

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre

Kommentieren Sie auch die Zeilennummern 46 und 47 aus, da diese für JAVA 8 nicht erforderlich sind.

# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

Konfigurieren Sie die PredictionIO-Umgebung

Die Standardkonfiguration in der PredictionIO-Umgebungsdatei pio-env.shsetzt voraus, dass wir PostgreSQL oder MySQL verwenden. Da wir HBase und Elasticsearch verwendet haben, müssen wir fast jede Konfiguration in der Datei ändern. Am besten erstellen Sie eine Sicherungskopie der vorhandenen Datei und erstellen eine neue PredictionIO-Umgebungsdatei.

mv /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh.bak

Erstellen Sie nun eine neue Datei für die PredictionIO-Umgebungskonfiguration.

nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh

Füllen Sie die Datei mit der folgenden Konfiguration.

# PredictionIO Main Configuration
#
# This section controls core behavior of PredictionIO. It is very likely that
# you need to change these to fit your site.

# SPARK_HOME: Apache Spark is a hard dependency and must be configured.
SPARK_HOME=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7

# POSTGRES_JDBC_DRIVER=$PIO_HOME/lib/postgresql-42.0.0.jar
# MYSQL_JDBC_DRIVER=$PIO_HOME/lib/mysql-connector-java-5.1.41.jar

# ES_CONF_DIR: You must configure this if you have advanced configuration for
#              your Elasticsearch setup.
ES_CONF_DIR=$PIO_HOME/vendors/elasticsearch-5.5.2/config

# HADOOP_CONF_DIR: You must configure this if you intend to run PredictionIO
#                  with Hadoop 2.
HADOOP_CONF_DIR=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7/conf

# HBASE_CONF_DIR: You must configure this if you intend to run PredictionIO
#                 with HBase on a remote cluster.
HBASE_CONF_DIR=$PIO_HOME/vendors/hbase-1.2.6/conf

# Filesystem paths where PredictionIO uses as block storage.
PIO_FS_BASEDIR=$HOME/.pio_store
PIO_FS_ENGINESDIR=$PIO_FS_BASEDIR/engines
PIO_FS_TMPDIR=$PIO_FS_BASEDIR/tmp

# PredictionIO Storage Configuration
#
# This section controls programs that make use of PredictionIO's built-in
# storage facilities. Default values are shown below.
#
# For more information on storage configuration please refer to
# http://predictionio.incubator.apache.org/system/anotherdatastore/

# Storage Repositories

# Default is to use PostgreSQL
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH

PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE

PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS

# Storage Data Sources

# PostgreSQL Default Settings
# Please change "pio" to your database name in PIO_STORAGE_SOURCES_PGSQL_URL
# Please change PIO_STORAGE_SOURCES_PGSQL_USERNAME and
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD accordingly
# PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio
# PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio

# MySQL Example
# PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://localhost/pio
# PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio

# Elasticsearch Example
PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200
PIO_STORAGE_SOURCES_ELASTICSEARCH_SCHEMES=http
PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=pio
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-5.5.2

# Optional basic HTTP auth
# PIO_STORAGE_SOURCES_ELASTICSEARCH_USERNAME=my-name
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PASSWORD=my-secret
# Elasticsearch 1.x Example
# PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
# PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=<elasticsearch_cluster_name>
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-1.7.6

# Local File System Example
PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs
PIO_STORAGE_SOURCES_LOCALFS_PATH=$PIO_FS_BASEDIR/models

# HBase Example
PIO_STORAGE_SOURCES_HBASE_TYPE=hbase
PIO_STORAGE_SOURCES_HBASE_HOME=$PIO_HOME/vendors/hbase-1.2.6

# AWS S3 Example
# PIO_STORAGE_SOURCES_S3_TYPE=s3
# PIO_STORAGE_SOURCES_S3_BUCKET_NAME=pio_bucket
# PIO_STORAGE_SOURCES_S3_BASE_PATH=pio_model

Speichern Sie die Datei und beenden Sie den Editor.

Öffnen Sie die Elasticsearch-Konfigurationsdatei.

nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml

Kommentieren Sie die Zeile aus und setzen Sie den Clusternamen auf den gleichen Namen wie in der PredictionIO-Umgebungsdatei. Der Clustername ist pioin der obigen Konfiguration festgelegt.

# Use a descriptive name for your cluster:
#
cluster.name: pio

Fügen Sie nun das $PIO_HOME/binVerzeichnis zur Variablen PATH hinzu, damit die ausführbaren PredictionIO-Dateien direkt ausgeführt werden.

echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile

Zu diesem Zeitpunkt ist PredictionIO erfolgreich auf Ihrem Server installiert.

PredictionIO starten

Sie können alle Dienste in PredictionIO wie Elasticsearch, HBase und Event Server mit einem einzigen Befehl starten.

pio-start-all

Sie sehen die folgende Ausgabe.

[user@vultr ~]$ pio-start-all
Starting Elasticsearch...
Starting HBase...
starting master, logging to /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/bin/../logs/hbase-user-master-vultr.guest.out
Waiting 10 seconds for Storage Repositories to fully initialize...
Starting PredictionIO Event Server...

Verwenden Sie den folgenden Befehl, um den Status des PredictionIO-Servers zu überprüfen.

pio status

Sie sehen die folgende Ausgabe.

[user@vultr ~]$ pio status
[INFO] [Management$] Inspecting PredictionIO...
[INFO] [Management$] PredictionIO 0.12.0-incubating is installed at /opt/PredictionIO-0.12.0-incubating
[INFO] [Management$] Inspecting Apache Spark...
[INFO] [Management$] Apache Spark is installed at /opt/PredictionIO-0.12.0-incubating/vendors/spark-2.1.1-bin-hadoop2.7
[INFO] [Management$] Apache Spark 2.1.1 detected (meets minimum requirement of 1.3.0)
[INFO] [Management$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)...
[INFO] [Storage$] Verifying Model Data Backend (Source: LOCALFS)...
[INFO] [Storage$] Verifying Event Data Backend (Source: HBASE)...
[INFO] [Storage$] Test writing to Event Store (App Id 0)...
[INFO] [HBLEvents] The namespace pio_event doesn't exist yet. Creating now...
[INFO] [HBLEvents] The table pio_event:events_0 doesn't exist yet. Creating now...
[INFO] [HBLEvents] Removing table pio_event:events_0...
[INFO] [Management$] Your system is all ready to go.

Wie wir in den obigen Meldungen sehen können, ist unser System bereit, eine Engine-Vorlage zu implementieren und Daten vorherzusagen.

Implementieren einer Engine-Vorlage

In der PredictionIO- Vorlagengalerie stehen mehrere gebrauchsfertige Engine-Vorlagen zur Verfügung, die einfach auf dem PredictionIO-Server installiert werden können. Sie können die Liste der Engine-Vorlagen durchsuchen, um diejenige zu finden, die Ihren Anforderungen entspricht, oder Sie können Ihre eigene Engine schreiben.

In diesem Tutorial implementieren wir die E-Commerce RecommendationEngine-Vorlage, um die Funktionalität des PredictionIO-Servers anhand einiger Beispieldaten zu demonstrieren. Diese Engine-Vorlage bietet einem Benutzer auf einer E-Commerce-Website eine persönliche Empfehlung. Standardmäßig verfügt es über Funktionen wie das Ausschließen nicht vorrätiger Artikel oder das Bereitstellen von Empfehlungen an einen Benutzer, der sich nach dem Training des Modells anmeldet. Außerdem übernimmt die Engine-Vorlage standardmäßig die Ansicht eines Benutzers und kauft Ereignisse, Elemente mit Kategorien und Eigenschaften sowie eine Liste nicht verfügbarer Elemente. Sobald die Engine geschult und bereitgestellt wurde, können Sie eine Abfrage mit der Benutzer-ID und der Anzahl der zu empfehlenden Elemente senden. Die generierte Ausgabe ist eine Rangliste der empfohlenen Artikel-IDs.

Installieren Sie Git, da es zum Klonen des Repositorys verwendet wird.

cd ~    
sudo yum -y install git

Klonen Sie die E-Commerce Recommender-Engine-Vorlage auf Ihrem System.

git clone https://github.com/apache/incubator-predictionio-template-ecom-recommender.git MyEComRecomm  

Erstellen Sie eine neue Anwendung für die E-Commerce-Empfehlungsvorlagen-Engine. Jede Anwendung in PredictionIO wird verwendet, um die Daten für eine separate Website zu speichern. Wenn Sie mehrere Websites haben, können Sie mehrere Apps erstellen, um die Daten jeder Website in einer anderen Anwendung zu speichern. Sie können einen beliebigen Namen für Ihre Bewerbung wählen.

cd MyEComRecomm/
pio app new myecom

Sie sehen die folgende Ausgabe.

[user@vultr MyEComRecomm]$ pio app new myecom
[INFO] [HBLEvents] The table pio_event:events_1 doesn't exist yet. Creating now...
[INFO] [App$] Initialized Event Store for this app ID: 1.
[INFO] [Pio$] Created a new app:
[INFO] [Pio$]       Name: myecom
[INFO] [Pio$]         ID: 1
[INFO] [Pio$] Access Key: a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t

Die obige Ausgabe enthält auch den Zugriffsschlüssel, der zur Authentifizierung beim Senden der Eingabedaten an den Ereignisserver verwendet wird.

Sie können den Zugriffsschlüssel immer zusammen mit der Liste der verfügbaren Anwendungen finden, indem Sie ihn ausführen.

pio app list

Die folgende Ausgabe enthält eine Liste der Anwendungen und den Zugriffsschlüssel.

[user@vultr MyEComRecomm]$ pio app list
[INFO] [Pio$]                 Name |   ID |                                                       Access Key | Allowed Event(s)
[INFO] [Pio$]               myecom |    1 | a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t | (all)
[INFO] [Pio$] Finished listing 1 app(s).

Nachdem wir eine neue Anwendung erstellt haben, werden wir einige Daten hinzufügen. In der Produktionsumgebung möchten Sie die Daten automatisch an den Ereignisserver senden, indem Sie die Ereignisserver-API in die Anwendung integrieren. Um zu erfahren, wie PredictionIO funktioniert, werden einige Beispieldaten importiert. Die Template-Engine bietet ein Python-Skript, mit dem die Beispieldaten einfach in den Ereignisserver importiert werden können.

Installieren Sie Python pip.

sudo yum -y install python-pip
sudo pip install --upgrade pip

Installieren Sie das PredictionIO Python SDK mit pip.

sudo pip install predictionio

Führen Sie das Python-Skript aus, um die Beispieldaten zum Ereignisserver hinzuzufügen.

python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t

Stellen Sie sicher, dass Sie den Zugangsschlüssel durch Ihren tatsächlichen Zugangsschlüssel ersetzen. Sie sehen eine ähnliche Ausgabe.

[user@vultr MyEComRecomm]$ python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Namespace(access_key='a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t', url='http://localhost:7070')
{u'status': u'alive'}
Importing data...
('Set user', 'u1')
('Set user', 'u2')

...

('User', 'u10', 'buys item', 'i30')
('User', 'u10', 'views item', 'i40')
('User', 'u10', 'buys item', 'i40')
204 events are imported.

Das obige Skript importiert 10 Benutzer, 50 Artikel in 6 Kategorien und einige zufällige Kauf- und Ansichtsereignisse. Um zu überprüfen, ob die Ereignisse importiert wurden oder nicht, können Sie die folgende Abfrage ausführen.

curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"

Die Ausgabe zeigt Ihnen die Liste aller importierten Ereignisse im JSON-Format.

Öffnen Sie nun die engine.jsonDatei im Editor. Diese Datei enthält die Konfiguration der Engine.

nano engine.json

Suchen Sie beide Vorkommen von appNameund ersetzen Sie den Wert durch den tatsächlichen Namen der App, die Sie zuvor erstellt haben.

{
  "id": "default",
  "description": "Default settings",
  "engineFactory": "org.example.ecommercerecommendation.ECommerceRecommendationEngine",
  "datasource": {
    "params" : {
      "appName": "myecom"
    }
  },
  "algorithms": [
    {
      "name": "ecomm",
      "params": {
        "appName": "myecom",
        "unseenOnly": true,
        "seenEvents": ["buy", "view"],
        "similarEvents": ["view"],
        "rank": 10,
        "numIterations" : 20,
        "lambda": 0.01,
        "seed": 3
      }
    }
  ]
}

Erstellen Sie die Anwendung.

pio build --verbose

Wenn Sie die Protokollmeldungen nicht sehen möchten, entfernen Sie die --verboseOption. Das erstmalige Erstellen der Engine-Vorlage dauert einige Minuten. Sie sehen eine ähnliche Ausgabe, wenn der Build erfolgreich abgeschlossen wurde.

[user@vultr MyEComRecomm]$ pio build --verbose
[INFO] [Engine$] Using command '/opt/PredictionIO-0.12.0-incubating/sbt/sbt' at /home/user/MyEComRecomm to build.

...

[INFO] [Engine$] Build finished successfully.
[INFO] [Pio$] Your engine is ready for training.

Trainieren Sie jetzt den Motor. Während des Trainings analysiert der Motor den Datensatz und trainiert sich gemäß dem bereitgestellten Algorithmus.

pio train

Bevor wir die Anwendung bereitstellen, müssen wir den Port öffnen, 8000damit der Status der Anwendung auf der Web-GUI angezeigt werden kann. Außerdem senden und empfangen die Websites und Anwendungen, die den Ereignisserver verwenden, ihre Anfragen über diesen Port.

sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload

Jetzt können Sie die PredictionIO-Engine bereitstellen.

pio deploy

Mit dem obigen Befehl werden die Engine und der integrierte Webserver am Port bereitgestellt, 8000um auf die Anfragen von E-Commerce-Websites und -Anwendungen zu antworten. Die folgende Ausgabe wird am Ende angezeigt, sobald die Engine erfolgreich bereitgestellt wurde.

[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.

Sie können den Status der Engine überprüfen, http://192.0.2.1:8000indem Sie einen modernen Browser verwenden. 192.0.2.1Stellen Sie sicher, dass Sie durch Ihre tatsächliche Vultr-IP-Adresse ersetzen .

Dies bedeutet, dass die Engine-Vorlage für die E-Commerce-Empfehlung bereitgestellt wird und erfolgreich ausgeführt wird. Sie können die Engine-Vorlage abfragen, um fünf Empfehlungen für den Benutzer abzurufen, u5indem Sie die folgende Abfrage in einer neuen Terminalsitzung ausführen.

curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json

Sie sehen die generierten Empfehlungen für den Benutzer u5.

[user@vultr ~]$ curl -H "Content-Type: application/json" \
> -d '{ "user": "u5", "num": 5 }' \
> http://localhost:8000/queries.json
{"itemScores":[{"item":"i25","score":0.9985169366745619},{"item":"i10","score":0.996613946803819},{"item":"i27","score":0.996613946803819},{"item":"i17","score":0.9962796867639341},{"item":"i8","score":0.9955868705972656}]}

Einpacken

Herzlichen Glückwunsch, Apache PredictionIO wurde erfolgreich auf Ihrem Server bereitgestellt. Sie können jetzt die API des Ereignisservers verwenden, um die Daten in die Engine zu importieren und die Empfehlungen für den Benutzer vorherzusagen. Wenn Sie möchten, können Sie einige andere Vorlagen aus der Vorlagengalerie verwenden. Lesen Sie unbedingt die Vorlage für die Universal Recommender- Engine, die in fast allen Anwendungsfällen verwendet werden kann, einschließlich E-Commerce, Nachrichten oder Videos.



Leave a Comment

So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS

So installieren Sie MODX Revolution auf einem CentOS 7 LAMP VPS

Verwenden Sie ein anderes System? MODX Revolution ist ein schnelles, flexibles, skalierbares, kostenloses und Open-Source-Content-Management-System (CMS) für Unternehmen, das i

Richten Sie mit OpenVPN Ihr eigenes privates Netzwerk ein

Richten Sie mit OpenVPN Ihr eigenes privates Netzwerk ein

Vultr bietet Ihnen eine hervorragende Konnektivität für private Netzwerke für Server, die am selben Standort ausgeführt werden. Aber manchmal möchten Sie zwei Server in verschiedenen Ländern

So installieren und konfigurieren Sie CyberPanel auf Ihrem CentOS 7-Server

So installieren und konfigurieren Sie CyberPanel auf Ihrem CentOS 7-Server

Verwenden Sie ein anderes System? Einführung CyberPanel ist eines der ersten Control Panels auf dem Markt, das sowohl Open Source als auch OpenLiteSpeed ​​verwendet. Was ist das?

Installieren Sie eSpeak unter CentOS 7

Installieren Sie eSpeak unter CentOS 7

Verwenden Sie ein anderes System? ESpeak kann TTS-Audiodateien (Text-to-Speech) generieren. Diese können aus vielen Gründen nützlich sein, z. B. um Ihr eigenes Turin zu erstellen

So installieren Sie Thelia 2.3 unter CentOS 7

So installieren Sie Thelia 2.3 unter CentOS 7

Verwenden Sie ein anderes System? Thelia ist ein Open-Source-Tool zum Erstellen von E-Business-Websites und zum Verwalten von Online-Inhalten, die in PHP geschrieben wurden. Thelia Quellcode i

So installieren Sie Cockpit unter CentOS 7

So installieren Sie Cockpit unter CentOS 7

Cockpit ist ein kostenloses Open Source-Programm für die Linux-Serververwaltung. Es ist sehr leicht und hat eine schöne, einfach zu bedienende Weboberfläche. Es erlaubt System

So richten Sie ein GitHub Style Wiki mit Gollum unter CentOS 7 ein

So richten Sie ein GitHub Style Wiki mit Gollum unter CentOS 7 ein

Gollum ist die Git-basierte Wiki-Software, die als Backend des GitHub-Wikis verwendet wird. Durch die Bereitstellung von Gollum können Sie ein GitHub-ähnliches Wiki-System auf Ihnen hosten

So stellen Sie Google BBR unter CentOS 7 bereit

So stellen Sie Google BBR unter CentOS 7 bereit

BBR (Bottleneck Bandwidth and RTT) ist ein neuer Algorithmus zur Überlastungskontrolle, der von Google zum Linux-Kernel-TCP-Stack hinzugefügt wird. Mit BBR an Ort und Stelle,

So installieren Sie YOURLS unter CentOS 7

So installieren Sie YOURLS unter CentOS 7

YOURLS (Your Own URL Shortener) ist eine Open-Source-Anwendung zur URL-Verkürzung und Datenanalyse. In diesem Artikel werden wir den Installationsprozess behandeln

Richten Sie Nginx-RTMP unter CentOS 7 ein

Richten Sie Nginx-RTMP unter CentOS 7 ein

Verwenden Sie ein anderes System? RTMP eignet sich hervorragend für die Bereitstellung von Live-Inhalten. Wenn RTMP mit FFmpeg gekoppelt ist, können Streams in verschiedene Qualitäten konvertiert werden. Vultr i

So installieren Sie LimeSurvey unter CentOS 7

So installieren Sie LimeSurvey unter CentOS 7

LimeSurvey ist ein kostenloses und Open-Source-Online-Umfragetool, das häufig zum Veröffentlichen von Online-Umfragen und zum Sammeln von Umfrage-Feedback verwendet wird. In diesem Artikel werde ich

Installieren Sie Java SE unter CentOS

Installieren Sie Java SE unter CentOS

Einführung Java ist eine beliebte Softwareplattform, mit der Sie Java-Anwendungen und -Applets in verschiedenen Hardwareumgebungen entwickeln und ausführen können. Es gibt

Installieren von Netdata unter CentOS 7

Installieren von Netdata unter CentOS 7

Verwenden Sie ein anderes System? Netdata ist ein aufstrebender Stern im Bereich der Echtzeitüberwachung von Systemmetriken. Im Vergleich zu anderen Tools der gleichen Art bietet Netdata:

So installieren Sie Just Cause 2 (JC2-MP) Server unter CentOS 7

So installieren Sie Just Cause 2 (JC2-MP) Server unter CentOS 7

In diesem Tutorial erfahren Sie, wie Sie einen Just Cause 2-Multiplayer-Server einrichten. Voraussetzungen Bitte stellen Sie sicher, dass das System vollständig aktualisiert ist, bevor Sie beginnen

So installieren Sie Starbound Server unter CentOS 7

So installieren Sie Starbound Server unter CentOS 7

Verwenden Sie ein anderes System? In diesem Tutorial werde ich erklären, wie ein Starbound-Server unter CentOS 7 eingerichtet wird. Voraussetzungen Sie müssen dieses Spiel besitzen

Installieren und Konfigurieren von ZNC unter CentOS 7

Installieren und Konfigurieren von ZNC unter CentOS 7

ZNC ist ein kostenloser Open-Source-IRC-Bouncer, der permanent mit einem Netzwerk verbunden bleibt, sodass Clients Nachrichten empfangen können, die gesendet werden, während sie offline sind. Thi

So installieren Sie Django unter CentOS 7

So installieren Sie Django unter CentOS 7

Django ist ein beliebtes Python-Framework zum Schreiben von Webanwendungen. Mit Django können Sie Anwendungen schneller erstellen, ohne das Rad neu zu erfinden. Wenn du willst

So richten Sie den ionCube Loader unter CentOS 7 ein

So richten Sie den ionCube Loader unter CentOS 7 ein

ionCube Loader ist eine PHP-Erweiterung, mit der ein Webserver PHP-Dateien ausführen kann, die mit ionCube Encoder codiert wurden und für deren Ausführung erforderlich sind

So installieren Sie PufferPanel (kostenlose Minecraft-Systemsteuerung) unter CentOS 7

So installieren Sie PufferPanel (kostenlose Minecraft-Systemsteuerung) unter CentOS 7

Einführung Installieren Sie in diesem Tutorial PufferPanel auf unserem Vultr VPS. PufferPanel ist ein Open Source-Bedienfeld, das Sie kostenlos verwalten können

So installieren Sie BoltWire CMS unter CentOS 7

So installieren Sie BoltWire CMS unter CentOS 7

Verwenden Sie ein anderes System? Einführung BoltWire ist ein kostenloses und leichtes Content-Management-System, das in PHP geschrieben wurde. Im Vergleich zu den meisten anderen Content Managern

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.