Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Apache PredictionIO για μηχανική μάθηση στο CentOS 7

Οι παραδοσιακές προσεγγίσεις για την ανάλυση δεδομένων είναι αδύνατο να χρησιμοποιηθούν όταν τα σύνολα δεδομένων φτάνουν ένα συγκεκριμένο μέγεθος. Μια σύγχρονη εναλλακτική λύση για την ανάλυση των τεράστιων συνόλων δεδομένων είναι η χρήση μεθόδων μηχανικής εκμάθησης. Η μηχανική εκμάθηση είναι σε θέση να παράγει ακριβή αποτελέσματα όταν χρησιμοποιείται ένας γρήγορος και αποτελεσματικός αλγόριθμος.

Το Apache PredictionIO είναι ένας διακομιστής μηχανικής εκμάθησης ανοιχτού κώδικα που χρησιμοποιείται για τη δημιουργία μηχανών πρόβλεψης για οποιαδήποτε εργασία μηχανικής εκμάθησης. Μειώνει το χρόνο της εφαρμογής μηχανικής εκμάθησης από το εργαστήριο στην παραγωγή, χρησιμοποιώντας προσαρμόσιμα πρότυπα μηχανών που μπορούν να κατασκευαστούν και να αναπτυχθούν γρήγορα. Παρέχει τα στοιχεία συλλογής και εξυπηρέτησης δεδομένων και αποσπά την υποκείμενη τεχνολογία για να εκθέσει ένα API που επιτρέπει στους προγραμματιστές να επικεντρωθούν σε στοιχεία μετασχηματισμού. Μόλις ο διακομιστής μηχανής του PredictionIO αναπτυχθεί ως υπηρεσία web, μπορεί να απαντήσει σε δυναμικά ερωτήματα σε πραγματικό χρόνο.

Το Apache PredictionIO αποτελείται από διαφορετικά στοιχεία.

  • Πλατφόρμα PredictionIO : Μια στοίβα μηχανικής εκμάθησης ανοιχτού κώδικα που βασίζεται στην κορυφή ορισμένων εφαρμογών ανοιχτού κώδικα τελευταίας τεχνολογίας, όπως το Apache Spark, το Apache Hadoop, το Apache HBase και το Elasticsearch.
  • Διακομιστής συμβάντων : Αυτός συλλέγει συνεχώς δεδομένα από τον διακομιστή ιστού ή τον διακομιστή εφαρμογών για κινητά σε λειτουργία πραγματικού χρόνου ή σε λειτουργία δέσμης. Τα συγκεντρωμένα δεδομένα μπορούν να χρησιμοποιηθούν για την εκπαίδευση του κινητήρα ή για την παροχή μιας ενοποιημένης προβολής για ανάλυση δεδομένων. Ο διακομιστής συμβάντων χρησιμοποιεί το Apache HBase για την αποθήκευση των δεδομένων.
  • Διακομιστής κινητήρα : Ο διακομιστής κινητήρα είναι υπεύθυνος για την πραγματοποίηση της πραγματικής πρόβλεψης. Διαβάζει τα δεδομένα εκπαίδευσης από το χώρο αποθήκευσης δεδομένων και χρησιμοποιεί έναν ή περισσότερους αλγόριθμους μηχανικής εκμάθησης για τη δημιουργία των μοντέλων πρόβλεψης. Μια μηχανή, αφού αναπτυχθεί ως υπηρεσία ιστού, απαντά στα ερωτήματα που γίνονται από μια εφαρμογή ιστού ή για κινητά χρησιμοποιώντας REST API ή SDK.
  • Template Gallery : Αυτή η συλλογή προσφέρει διάφορους τύπους προκατασκευασμένων προτύπων μηχανών. Μπορείτε να επιλέξετε ένα πρότυπο παρόμοιο με την περίπτωση χρήσης σας και να το τροποποιήσετε σύμφωνα με τις απαιτήσεις σας.

Προαπαιτούμενα

  • Μια παρουσία διακομιστή Vultr CentOS 7 με τουλάχιστον 8 GB RAM. Για σκοπούς δοκιμής και ανάπτυξης, μπορείτε να επιλέξετε μια παρουσία με 4 GB RAM και άλλη 4 GB μνήμη εναλλαγής .
  • Ένας χρήστης sudo .

Σε αυτό το σεμινάριο, θα χρησιμοποιήσουμε 192.0.2.1ως τη δημόσια διεύθυνση IP του διακομιστή. Αντικαταστήστε όλες τις εμφανίσεις 192.0.2.1με τη δημόσια διεύθυνση IP του Vultr.

Ενημερώστε το βασικό σας σύστημα χρησιμοποιώντας τον οδηγό Πώς να ενημερώσετε το CentOS 7 . Μόλις το σύστημά σας ενημερωθεί, προχωρήστε στην εγκατάσταση Java.

Εγκαταστήστε Java

Πολλά από τα στοιχεία του PredictionIO απαιτούν JDK, ή Java Development Kit, έκδοση 8 για να λειτουργήσουν. Υποστηρίζει τόσο OpenJDK όσο και Oracle Java. Σε αυτό το σεμινάριο, θα εγκαταστήσουμε την έκδοση 8 του OpenJDK.

Το OpenJDK μπορεί να εγκατασταθεί εύκολα, καθώς το πακέτο είναι διαθέσιμο στο προεπιλεγμένο αποθετήριο YUM.

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

Επαληθεύστε την έκδοση της Java για να βεβαιωθείτε ότι εγκαταστάθηκε σωστά.

java -version

Θα έχετε παρόμοια έξοδο.

[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)

Προτού προχωρήσουμε περαιτέρω, θα χρειαστεί να ρυθμίσουμε τις μεταβλητές JAVA_HOMEκαι JRE_HOMEπεριβάλλον. Βρείτε την απόλυτη διαδρομή του εκτελέσιμου JAVA στο σύστημά σας.

readlink -f $(which java)

Θα δείτε μια παρόμοια έξοδο.

[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

Τώρα, ορίστε JAVA_HOMEκαι JRE_HOMEμεταβλητή περιβάλλοντος σύμφωνα με τη διαδρομή του καταλόγου Java.

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

Εκτελέστε το bash_profileαρχείο.

source ~/.bash_profile

Τώρα μπορείτε να εκτελέσετε την echo $JAVA_HOMEεντολή για να ελέγξετε αν έχει οριστεί η μεταβλητή περιβάλλοντος.

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

Εγκαταστήστε το PredictionIO

Το Apache παρέχει αρχεία πηγής PredictionIO τα οποία μπορούν να ληφθούν και να μεταγλωττιστούν τοπικά. Δημιουργήστε έναν νέο προσωρινό κατάλογο για λήψη και μεταγλώττιση του αρχείου προέλευσης.

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

Πραγματοποιήστε λήψη του αρχείου προέλευσης του PredictionIO χρησιμοποιώντας οποιονδήποτε ιστότοπο του Apache Mirror .

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

Εξαγάγετε το αρχείο και μεταγλωττίστε την πηγή για να δημιουργήσετε μια διανομή του PredictionIO.

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

Η παραπάνω κατανομή θα κατασκευαστεί κατά τις προεπιλεγμένες εκδόσεις των εξαρτήσεων, οι οποίες είναι Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3και ElasticSearch 5.5.2. Περιμένετε να ολοκληρωθεί η κατασκευή, θα χρειαστούν περίπου δέκα λεπτά για να ολοκληρωθεί ανάλογα με την απόδοση του συστήματός σας.

Σημείωση : Μπορείτε να χρησιμοποιήσετε την πιο πρόσφατη υποστηριζόμενη έκδοση των εξαρτήσεων, αλλά ενδέχεται να δείτε ορισμένες προειδοποιήσεις κατά τη διάρκεια της κατασκευής, καθώς ορισμένες λειτουργίες ενδέχεται να καταργηθούν. Εκτελέστε ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, αντικαθιστώντας τον αριθμό έκδοσης σύμφωνα με την επιλογή σας.

Μόλις ολοκληρωθεί επιτυχώς η κατασκευή, θα δείτε το ακόλουθο μήνυμα στο τέλος.

...
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

Τα δυαδικά αρχεία PredictionIO θα αποθηκευτούν στο PredictionIO-0.12.0-incubating.tar.gzαρχείο. Εξαγάγετε το αρχείο στον /optκατάλογο και παρέχετε την ιδιοκτησία στον τρέχοντα χρήστη.

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

Ορίστε τη PIO_HOMEμεταβλητή περιβάλλοντος.

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

Εγκαταστήστε τις απαιτούμενες εξαρτήσεις

Δημιουργήστε έναν νέο κατάλογο για να εγκαταστήσετε εξαρτήσεις PredictionIO όπως HBase, Sparkκαι Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Κατεβάστε το Scala έκδοση 2.11.8 και εξαγάγετε τον στον vendorsκατάλογο.

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

Κάντε λήψη του Apache Hadoop έκδοση 2.7.3 και εξαγάγετε τον στον vendorsκατάλογο.

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 είναι η προεπιλεγμένη μηχανή επεξεργασίας για το PredictionIO. Κατεβάστε το Spark έκδοση 2.1.1 και εξαγάγετέ το στον vendorsκατάλογο.

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

Κάντε λήψη του Elasticsearch έκδοσης 5.5.2 και εξαγάγετε τον στον vendorsκατάλογο.

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

Τέλος, κατεβάστε την έκδοση 1.2.6 του HBase και εξαγάγετε τον στον vendorsκατάλογο.

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

Ανοίξτε το hbase-site.xmlαρχείο διαμόρφωσης για να ρυθμίσετε το HBase ώστε να λειτουργεί σε αυτόνομο περιβάλλον.

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

Βρείτε το κενό μπλοκ διαμόρφωσης και αντικαταστήστε το με την ακόλουθη διαμόρφωση.

<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>

Ο κατάλογος δεδομένων θα δημιουργηθεί αυτόματα από την HBase. Επεξεργαστείτε το αρχείο περιβάλλοντος HBase για να ορίσετε τη JAVA_HOMEδιαδρομή.

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

Καταργήστε το σχόλιο αριθμό γραμμής 27 και ορίστε JAVA_HOMEτη διαδρομή του jre, την εγκατάσταση Java. Μπορείτε να βρείτε τη διαδρομή προς το εκτελέσιμο αρχείο JAVA χρησιμοποιώντας την readlink -f $(which java)εντολή.

# 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

Επίσης, σχολιάστε τους αριθμούς γραμμής 46 και 47, καθώς δεν απαιτούνται για την JAVA 8.

# 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"

Διαμορφώστε το περιβάλλον PredictionIO

Η προεπιλεγμένη ρύθμιση παραμέτρων στο αρχείο περιβάλλοντος PredictionIO pio-env.shπροϋποθέτει ότι χρησιμοποιούμε PostgreSQL ή MySQL. Καθώς έχουμε χρησιμοποιήσει το HBase και το Elasticsearch, θα χρειαστεί να τροποποιήσουμε σχεδόν κάθε διαμόρφωση του αρχείου. Είναι καλύτερο να δημιουργήσετε ένα αντίγραφο ασφαλείας του υπάρχοντος αρχείου και να δημιουργήσετε ένα νέο αρχείο περιβάλλοντος PredictionIO.

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

Now create a new file for PredictionIO environment configuration.

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

Populate the file with the following configuration.

# 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

Save the file and exit from the editor.

Open the Elasticsearch configuration file.

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

Uncomment the line and set the cluster name to exactly the same as the one provided in the PredictionIO environment file. The cluster name is set to pio in the above configuration.

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

Now add the $PIO_HOME/bin directory into the PATH variable so that the PredictionIO executables are executed directly.

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

At this point, PredictionIO is successfully installed on your server.

Starting PredictionIO

You can start all the services in PredictionIO such as Elasticsearch, HBase and Event server using a single command.

pio-start-all

You will see the following output.

[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...

Use the following command to check the status of the PredictionIO server.

pio status

You will see the following output.

[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.

As we can see in the above messages, our system is ready to use for implementing an engine template and predicting data.

Implementing an Engine Template

Several ready to use engine templates are available on the PredictionIO Template Gallery which can be easily installed on the PredictionIO server. You are free to browse through the list of engine templates to find the one that is close to your requirements or you can write your own engine.

In this tutorial, we will implement the E-Commerce Recommendation engine template to demonstrate the functionality of PredictionIO server using some sample data. This engine template provides some personal recommendation to a user in an e-commerce website. By default, it has features such as excluding out of stock items or providing recommendations to a user who signs up after the model is trained. Also, by default, the engine template takes a user's view and buy events, items with categories and properties and list of unavailable items. Once the engine has been trained and deployed, you can send a query with the user id and number of items to be recommended. The generated output will be a ranked list of recommended item ids.

Install Git, as it will be used to clone the repository.

cd ~    
sudo yum -y install git

Clone the E-Commerce Recommender engine template on your system.

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

Create a new application for the E-Commerce Recommendation template engine. Each application in PredictionIO is used to store the data for a separate website. If you have multiple websites, then you can create multiple apps to store each website's data into a different application. You are free to choose any name for your application.

cd MyEComRecomm/
pio app new myecom

You will see the following output.

[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

The output above also contains the access key which will be used to authenticate when sending the input data to the event server.

You can always find the access key along with the list of available applications by running.

pio app list

You will see the following output containing a list of applications and the access key.

[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).

Τώρα που δημιουργήσαμε μια νέα εφαρμογή, θα προσθέσουμε κάποια δεδομένα σε αυτήν. Στο περιβάλλον παραγωγής, θα θέλατε να στείλετε αυτόματα τα δεδομένα στον διακομιστή συμβάντων ενσωματώνοντας το API διακομιστή συμβάντων στην εφαρμογή. Για να μάθετε πώς λειτουργεί το PredictionIO, θα εισαγάγουμε μερικά δείγματα δεδομένων σε αυτό. Η μηχανή προτύπου παρέχει ένα σενάριο Python το οποίο μπορεί εύκολα να χρησιμοποιηθεί για την εισαγωγή του δείγματος δεδομένων στον διακομιστή συμβάντων.

Εγκαταστήστε το Python pip.

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

Εγκαταστήστε το PredictionIO Python SDK χρησιμοποιώντας pip.

sudo pip install predictionio

Εκτελέστε το σενάριο Python για να προσθέσετε τα δείγματα δεδομένων στον διακομιστή συμβάντων.

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

Φροντίστε να αντικαταστήσετε το κλειδί πρόσβασης με το πραγματικό κλειδί πρόσβασης. Θα δείτε μια παρόμοια έξοδο.

[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.

Το παραπάνω σενάριο εισάγει 10 χρήστες, 50 αντικείμενα σε 6 κατηγορίες και μερικά τυχαία συμβάντα αγοράς και προβολών. Για να ελέγξετε εάν τα συμβάντα έχουν εισαχθεί ή όχι, μπορείτε να εκτελέσετε το ακόλουθο ερώτημα.

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

Η έξοδος θα σας δείξει τη λίστα με όλα τα εισαγόμενα συμβάντα σε μορφή JSON.

Τώρα, ανοίξτε το engine.jsonαρχείο στο πρόγραμμα επεξεργασίας. Αυτό το αρχείο περιέχει τη διαμόρφωση του κινητήρα.

nano engine.json

Βρείτε και τις δύο εμφανίσεις appNameκαι αντικαταστήστε την τιμή με το πραγματικό όνομα της εφαρμογής που δημιουργήσατε νωρίτερα.

{
  "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
      }
    }
  ]
}

Κατασκευάστε την εφαρμογή.

pio build --verbose

Εάν δεν θέλετε να βλέπετε τα μηνύματα καταγραφής, καταργήστε την --verboseεπιλογή. Η κατασκευή του προτύπου κινητήρα για πρώτη φορά θα διαρκέσει λίγα λεπτά. Θα δείτε μια παρόμοια έξοδο όταν ολοκληρωθεί με επιτυχία η κατασκευή.

[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.

Εκπαιδεύστε τον κινητήρα τώρα. Κατά τη διάρκεια της εκπαίδευσης, ο κινητήρας αναλύει το σύνολο δεδομένων και εκπαιδεύεται σύμφωνα με τον παρεχόμενο αλγόριθμο.

pio train

Πριν αναπτύξουμε την εφαρμογή, θα χρειαστεί να ανοίξουμε τη θύρα, 8000έτσι ώστε η κατάσταση της εφαρμογής να μπορεί να προβληθεί στο Web GUI. Επίσης, οι ιστότοποι και οι εφαρμογές που χρησιμοποιούν τον διακομιστή συμβάντων θα στέλνουν και θα λαμβάνουν τα ερωτήματά τους μέσω αυτής της θύρας.

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

Τώρα μπορείτε να αναπτύξετε τον κινητήρα PredictionIO.

pio deploy

Η παραπάνω εντολή θα αναπτύξει τη μηχανή και τον ενσωματωμένο διακομιστή web στη θύρα 8000για να απαντήσει στα ερωτήματα από τους ιστότοπους και τις εφαρμογές ηλεκτρονικού εμπορίου. Θα δείτε την ακόλουθη έξοδο στο τέλος μόλις ο κινητήρας ενεργοποιηθεί με επιτυχία.

[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.

Μπορείτε να επαληθεύσετε την κατάσταση του κινητήρα μεταβαίνοντας στο http://192.0.2.1:8000χρησιμοποιώντας οποιοδήποτε σύγχρονο πρόγραμμα περιήγησης. Βεβαιωθείτε ότι έχετε αντικαταστήσει 192.0.2.1με την πραγματική σας διεύθυνση IP Vultr.

Αυτό σημαίνει ότι το πρότυπο κινητήρα για σύσταση ηλεκτρονικού εμπορίου έχει αναπτυχθεί και λειτουργεί με επιτυχία. Μπορείτε να υποβάλετε ερώτημα στο πρότυπο μηχανής για να λάβετε πέντε προτάσεις για τον χρήστη u5εκτελώντας το ακόλουθο ερώτημα σε μια νέα περίοδο λειτουργίας τερματικού.

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

Θα δείτε τις δημιουργημένες προτάσεις για τον χρήστη 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}]}

Τυλίγοντας

Συγχαρητήρια, το Apache PredictionIO έχει αναπτυχθεί με επιτυχία στον διακομιστή σας. Τώρα μπορείτε να χρησιμοποιήσετε το API του διακομιστή συμβάντων για να εισαγάγετε τα δεδομένα στη μηχανή για να προβλέψετε τις προτάσεις για τον χρήστη. Εάν θέλετε, μπορείτε να χρησιμοποιήσετε κάποια άλλα πρότυπα από τη συλλογή προτύπων. Βεβαιωθείτε ότι έχετε ελέγξει το πρότυπο μηχανής Universal Recommender , το οποίο μπορεί να χρησιμοποιηθεί σχεδόν σε όλες τις περιπτώσεις χρήσης, συμπεριλαμβανομένου του ηλεκτρονικού εμπορίου, ειδήσεων ή βίντεο.


Εγκαταστήστε το Plesk στο CentOS 7

Εγκαταστήστε το Plesk στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Plesk είναι ένας ιδιόκτητος πίνακας ελέγχου web host που επιτρέπει στους χρήστες να διαχειρίζονται τους προσωπικούς ή/και τους πελάτες τους ιστότοπους, βάσεις δεδομένων

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Πώς να εγκαταστήσετε το Squid Proxy στο CentOS

Το Squid είναι ένα δημοφιλές, δωρεάν πρόγραμμα Linux που σας επιτρέπει να δημιουργήσετε έναν διακομιστή μεσολάβησης web προώθησης. Σε αυτόν τον οδηγό, θα δείτε πώς να εγκαταστήσετε το Squid στο CentOS για να σας μετατρέψει

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Πώς να εγκαταστήσετε το Lighttpd (Στοίβα LLMP) στο CentOS 6

Εισαγωγή Το Lighttpd είναι ένα πιρούνι του Apache που έχει ως στόχο να είναι πολύ λιγότερο εντάσεως πόρων. Είναι ελαφρύ, εξ ου και το όνομά του, και είναι αρκετά απλό στη χρήση. Εγκατάσταση

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Τροποποίηση Icinga2 για χρήση Μοντέλου Master/Client σε CentOS 6 ή CentOS 7

Το Icinga2 είναι ένα ισχυρό σύστημα παρακολούθησης και όταν χρησιμοποιείται σε μοντέλο master-client, μπορεί να αντικαταστήσει την ανάγκη για ελέγχους παρακολούθησης που βασίζονται σε NRPE. Ο κύριος-πελάτης

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Πώς να εγκαταστήσετε το Apache Cassandra 3.11.x στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Apache Cassandra είναι ένα δωρεάν και ανοιχτού κώδικα σύστημα διαχείρισης βάσεων δεδομένων NoSQL που έχει σχεδιαστεί για να παρέχει επεκτασιμότητα, υψηλή

Πώς να εγκαταστήσετε το Microweber στο CentOS 7

Πώς να εγκαταστήσετε το Microweber στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Microweber είναι ένα ανοικτού κώδικα μεταφοράς και απόθεσης CMS και ηλεκτρονικό κατάστημα. Ο πηγαίος κώδικας Microweber φιλοξενείται στο GitHub. Αυτός ο οδηγός θα σας δείξει

Πώς να εγκαταστήσετε το Vanilla Forum στο CentOS 7

Πώς να εγκαταστήσετε το Vanilla Forum στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Vanilla forum είναι μια εφαρμογή φόρουμ ανοιχτού κώδικα γραμμένη σε PHP. Είναι πλήρως προσαρμόσιμο, εύκολο στη χρήση και υποστηρίζει εξωτερικά

Πώς να εγκαταστήσετε το Mattermost 4.1 στο CentOS 7

Πώς να εγκαταστήσετε το Mattermost 4.1 στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Mattermost είναι μια εναλλακτική λύση ανοιχτού κώδικα, που φιλοξενείται από τον εαυτό της στην υπηρεσία ανταλλαγής μηνυμάτων Slack SAAS. Με άλλα λόγια, με το Mattermost, μπορείτε περίπου

Ας κρυπτογραφήσουμε στο Plesk

Ας κρυπτογραφήσουμε στο Plesk

Ο πίνακας ελέγχου Plesk διαθέτει μια πολύ ωραία ενσωμάτωση για το Lets Encrypt. Το Lets Encrypt είναι ένας από τους μόνους παρόχους SSL που εκδίδει πιστοποιητικά πλήρως

Επιτρέπει την κρυπτογράφηση στο cPanel

Επιτρέπει την κρυπτογράφηση στο cPanel

Το Lets Encrypt είναι μια αρχή έκδοσης πιστοποιητικών αφιερωμένη στην παροχή πιστοποιητικών SSL δωρεάν. Το cPanel έχει δημιουργήσει μια τακτοποιημένη ενοποίηση για εσάς και τον πελάτη σας

Πώς να εγκαταστήσετε το Concrete5 στο CentOS 7

Πώς να εγκαταστήσετε το Concrete5 στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Concrete5 είναι ένα CMS ανοιχτού κώδικα που προσφέρει πολλές χαρακτηριστικές και χρήσιμες λειτουργίες για να βοηθήσει τους συντάκτες να παράγουν περιεχόμενο εύκολα και

Πώς να εγκαταστήσετε το Review Board στο CentOS 7

Πώς να εγκαταστήσετε το Review Board στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Το Review Board είναι ένα δωρεάν και ανοιχτού κώδικα εργαλείο για την ανασκόπηση του πηγαίου κώδικα, της τεκμηρίωσης, των εικόνων και πολλών άλλων. Είναι λογισμικό που βασίζεται στο web

Ρύθμιση ελέγχου ταυτότητας HTTP με Nginx στο CentOS 7

Ρύθμιση ελέγχου ταυτότητας HTTP με Nginx στο CentOS 7

Σε αυτόν τον οδηγό, θα μάθετε πώς να ρυθμίζετε τον έλεγχο ταυτότητας HTTP για έναν διακομιστή web Nginx που εκτελείται σε CentOS 7. Απαιτήσεις Για να ξεκινήσετε, θα χρειαστείτε

Πώς να εγκαταστήσετε το YOURLS στο CentOS 7

Πώς να εγκαταστήσετε το YOURLS στο CentOS 7

Το YOURLS (Your Own URL Shortener) είναι μια εφαρμογή συντόμευσης διευθύνσεων URL και ανάλυσης δεδομένων ανοιχτού κώδικα. Σε αυτό το άρθρο, θα καλύψουμε τη διαδικασία εγκατάστασης

Πώς να εγκαταστήσετε και να ρυθμίσετε το ArangoDB στο CentOS 7

Πώς να εγκαταστήσετε και να ρυθμίσετε το ArangoDB στο CentOS 7

Χρησιμοποιώντας ένα διαφορετικό σύστημα; Εισαγωγή Το ArangoDB είναι μια βάση δεδομένων NoSQL ανοιχτού κώδικα με ένα ευέλικτο μοντέλο δεδομένων για έγγραφα, γραφήματα και κλειδιά-τιμές. είναι

Χρήση του Etckeeper για έλεγχο έκδοσης του /etc

Χρήση του Etckeeper για έλεγχο έκδοσης του /etc

Εισαγωγή Ο κατάλογος /etc/ παίζει κρίσιμο ρόλο στον τρόπο λειτουργίας ενός συστήματος Linux. Ο λόγος για αυτό είναι επειδή σχεδόν κάθε διαμόρφωση συστήματος

Γιατί πρέπει να χρησιμοποιήσετε το SSHFS; Πώς να προσαρτήσετε ένα απομακρυσμένο σύστημα αρχείων με SSHFS στο CentOS 6

Γιατί πρέπει να χρησιμοποιήσετε το SSHFS; Πώς να προσαρτήσετε ένα απομακρυσμένο σύστημα αρχείων με SSHFS στο CentOS 6

Πολλοί διαχειριστές συστημάτων διαχειρίζονται μεγάλες ποσότητες διακομιστών. Όταν χρειάζεται πρόσβαση στα αρχεία σε διαφορετικούς διακομιστές, συνδέεστε σε καθένα ξεχωριστά περίπου

Ρύθμιση διακομιστή Half Life 2 στο CentOS 6

Ρύθμιση διακομιστή Half Life 2 στο CentOS 6

Αυτό το σεμινάριο θα καλύψει τη διαδικασία εγκατάστασης ενός διακομιστή παιχνιδιών Half Life 2 στο σύστημα CentOS 6. Βήμα 1: Εγκατάσταση των προαπαιτούμενων Για να ρυθμίσετε το ou

Πώς να εγκαταστήσετε το Laravel GitScrum στο CentOS 7

Πώς να εγκαταστήσετε το Laravel GitScrum στο CentOS 7

Το Laravel GitScrum ή GitScrum είναι ένα εργαλείο παραγωγικότητας ανοιχτού κώδικα που έχει σχεδιαστεί για να βοηθά τις ομάδες ανάπτυξης να εφαρμόσουν τη μεθοδολογία Scrum με παρόμοιο τρόπο

Πώς να εγκαταστήσετε το PowerDNS στο CentOS

Πώς να εγκαταστήσετε το PowerDNS στο CentOS

Εισαγωγή Σε αυτό το σεμινάριο Vultr, θα μάθετε πώς να εγκαταστήσετε το PowerDNS. Το PowerDNS είναι ένα πρόγραμμα για την εκτέλεση των δικών σας διακομιστών ονομάτων. Είναι πολύ χρήσιμο όταν

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα