Apache PredictionIO installimine ja kasutamine masinõppe jaoks CentOS 7-s

Traditsioonilisi andmeanalüüsi lähenemisviise on võimatu kasutada, kui andmekogumid jõuavad teatud suuruseni. Kaasaegne alternatiiv tohutute andmehulkade analüüsimisele on masinõppemeetodite kasutamine. Masinõpe suudab kiire ja tõhusa algoritmi kasutamisel anda täpseid tulemusi.

Apache PredictionIO on avatud lähtekoodiga masinõppeserver, mida kasutatakse ennustavate mootorite loomiseks mis tahes masinõppeülesande jaoks. See lühendab masinõpperakenduse aega laborist tootmiseni, kasutades kohandatavaid mootorimalle, mida saab kiiresti ehitada ja juurutada. See pakub andmete kogumise ja teenindamise komponente ning koostab aluseks oleva tehnoloogia, et paljastada API, mis võimaldab arendajatel keskenduda teisenduskomponentidele. Kui PredictionIO mootoriserver on veebiteenusena kasutusele võetud, saab see dünaamilistele päringutele reaalajas vastata.

Apache PredictionIO koosneb erinevatest komponentidest.

  • PredictionIO platvorm : avatud lähtekoodiga masinõppepinn, mis on ehitatud mõne nüüdisaegse avatud lähtekoodiga rakenduse (nt Apache Spark, Apache Hadoop, Apache HBase ja Elasticsearch) peale.
  • Sündmusserver : see kogub pidevalt andmeid teie veebiserverist või mobiilirakenduse serverist reaalajas või pakkrežiimis. Kogutud andmeid saab kasutada mootori treenimiseks või andmeanalüüsiks ühtse vaate loomiseks. Sündmusserver kasutab andmete salvestamiseks Apache HBase'i.
  • Mootori server : mootori server vastutab tegeliku prognoosi tegemise eest. See loeb koolitusandmeid andmesalvest ja kasutab ennustavate mudelite koostamiseks üht või mitut masinõppe algoritmi. Veebiteenusena kasutusele võetud mootor vastab veebi- või mobiilirakenduse päringutele REST API või SDK abil.
  • Mallide galerii : see galerii pakub erinevat tüüpi eelehitatud mootorimalle. Saate valida malli, mis sarnaneb teie kasutusjuhtumiga, ja muuta seda vastavalt oma vajadustele.

Eeltingimused

  • Vultr CentOS 7 serveri eksemplar, millel on vähemalt 8 GB muutmälu. Testimise ja arendamise eesmärgil saate valida eksemplari, millel on 4 GB muutmälu ja veel 4 GB vahetusmälu .
  • Sudo kasutaja .

Selles õpetuses kasutame 192.0.2.1serveri avaliku IP-aadressina. Asendage kõik esinemised 192.0.2.1oma Vultri avaliku IP-aadressiga.

Värskendage oma baassüsteemi, kasutades juhendit CentOS 7 värskendamine . Kui teie süsteem on värskendatud, jätkake Java installimisega.

Installige Java

Paljud PredictionIO komponendid nõuavad töötamiseks JDK või Java arenduskomplekti versiooni 8. See toetab nii OpenJDK kui ka Oracle Java. Selles õpetuses installime OpenJDK versiooni 8.

OpenJDK-d saab hõlpsasti installida, kuna pakett on saadaval YUM-i vaikehoidlas.

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

Kontrollige Java versiooni, et veenduda, et see on õigesti installitud.

java -version

Saate sarnase väljundi.

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

Enne jätkamist peame seadistama JAVA_HOMEja JRE_HOMEkeskkonnamuutujad. Leidke oma süsteemis JAVA käivitatava faili absoluutne tee.

readlink -f $(which java)

Näete sarnast väljundit.

[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

Nüüd määrake JAVA_HOMEja JRE_HOMEkeskkonnamuutuja vastavalt Java kataloogi teele.

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

Käivitage bash_profilefail.

source ~/.bash_profile

Nüüd saate käivitada echo $JAVA_HOMEkäsu, et kontrollida, kas keskkonnamuutuja on määratud.

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

Installige PredictionIO

Apache pakub PredictionIO lähtefaile, mida saab kohapeal alla laadida ja kompileerida. Looge lähtefaili allalaadimiseks ja kompileerimiseks uus ajutine kataloog.

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

Laadige mis tahes Apache Mirrori saidi abil alla PredictionIO lähtefaili arhiiv .

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

Pakkige arhiiv välja ja kompileerige allikas, et luua PredictionIO distributsioon.

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

Ülaltoodud jaotus luuakse sõltuvuste vaikeversioonide vastu, milleks on Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3ja ElasticSearch 5.5.2. Oodake, kuni ehitamine lõpeb. Olenevalt teie süsteemi jõudlusest kulub selle valmimiseks umbes kümme minutit.

Märkus . Võite vabalt kasutada sõltuvuste uusimat toetatud versiooni, kuid võite näha ehitamise ajal hoiatusi, kuna mõned funktsioonid võivad olla aegunud. Käivitage ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, asendades versiooninumbri vastavalt teie valikule.

Kui ehitamine on edukalt lõppenud, näete lõpus järgmist teadet.

...
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 binaarfailid salvestatakse PredictionIO-0.12.0-incubating.tar.gzarhiivi. Pakkige arhiiv välja /optkataloogis ja andke omandiõigus praegusele kasutajale.

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

Määrake PIO_HOMEkeskkonnamuutuja.

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

Installige nõutavad sõltuvused

Looge uus kataloog, et installida PredictionIO sõltuvusi, nagu HBase, Sparkja Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Laadige alla Scala versioon 2.11.8 ja ekstraktige see vendorskataloogi.

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

Laadige alla Apache Hadoopi versioon 2.7.3 ja ekstraktige see vendorskataloogi.

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 on PredictionIO vaiketöötlusmootor. Laadige alla Sparki versioon 2.1.1 ja ekstraktige see vendorskataloogi.

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

Laadige alla Elasticsearchi versioon 5.5.2 ja ekstraktige see vendorskataloogi.

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

Lõpuks laadige alla HBase'i versioon 1.2.6 ja ekstraktige see vendorskataloogi.

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

Avage hbase-site.xmlkonfiguratsioonifail, et konfigureerida HBase töötama eraldiseisvas keskkonnas.

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

Otsige üles tühi konfiguratsiooniplokk ja asendage see järgmise konfiguratsiooniga.

<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 loob andmekataloogi automaatselt. Tee määramiseks redigeerige HBase'i keskkonnafaili JAVA_HOME.

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

Tühjendage rea number 27 kommentaarid ja määrake oma Java installi JAVA_HOMEtee jre. JAVA käivitatava faili tee leiate readlink -f $(which java)käsu abil.

# 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

Kommenteerige ka reanumbreid 46 ja 47, kuna need pole JAVA 8 jaoks vajalikud.

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

Konfigureerige PredictionIO keskkond

PredictionIO keskkonnafaili vaikekonfiguratsioon pio-env.sheeldab, et kasutame PostgreSQL-i või MySQL-i. Kuna oleme kasutanud HBase'i ja Elasticsearchi, peame muutma peaaegu kõiki faili konfiguratsioone. Parim on teha olemasolevast failist varukoopia ja luua uus PredictionIO keskkonnafail.

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

Nüüd, kui oleme loonud uue rakenduse, lisame sellele mõned andmed. Tootmiskeskkonnas soovite andmed automaatselt sündmuste serverisse saata, integreerides rakendusse sündmuseserveri API. PredictionIO toimimise õppimiseks impordime sellesse mõned näidisandmed. Mallimootor pakub Pythoni skripti, mida saab hõlpsasti kasutada näidisandmete importimiseks sündmuste serverisse.

Installige Python pip.

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

Installige PredictionIO Python SDK, kasutades pip.

sudo pip install predictionio

Näidisandmete lisamiseks sündmuste serverisse käivitage Pythoni skript.

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

Asendage pääsuvõti kindlasti oma tegeliku juurdepääsuvõtmega. Näete sarnast väljundit.

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

Ülaltoodud skript impordib 10 kasutajat, 50 üksust 6 kategoorias ning mõned juhuslikud ostu- ja vaatamissündmused. Et kontrollida, kas sündmused on imporditud või mitte, saate käivitada järgmise päringu.

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

Väljund näitab teile kõigi JSON-vormingus imporditud sündmuste loendit.

Nüüd avage engine.jsonfail redaktoris. See fail sisaldab mootori konfiguratsiooni.

nano engine.json

Otsige üles mõlemad rakenduse esinemised appNameja asendage väärtus varem loodud rakenduse tegeliku nimega.

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

Ehitage rakendus.

pio build --verbose

Kui te ei soovi logiteateid näha, eemaldage see --verbosevalik. Mootori malli esmakordne koostamine võtab paar minutit. Näete sarnast väljundit, kui ehitamine on edukalt lõppenud.

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

Treenige kohe mootorit. Koolituse käigus analüüsib mootor andmekogumit ja treenib ennast vastavalt etteantud algoritmile.

pio train

Enne rakenduse juurutamist peame avama pordi 8000, et rakenduse olekut saaks veebi GUI-s vaadata. Samuti saadavad ja võtavad selle pordi kaudu vastu oma päringuid sündmuse serverit kasutavad veebisaidid ja rakendused.

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

Nüüd saate PredictionIO mootori juurutada.

pio deploy

Ülaltoodud käsk juurutab mootori ja sisseehitatud veebiserveri pordis, 8000et vastata e-kaubanduse veebisaitide ja rakenduste päringutele. Kui mootor on edukalt kasutusele võetud, näete lõpus järgmist väljundit.

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

Mootori olekut saate kontrollida mis http://192.0.2.1:8000tahes kaasaegse brauseriga. Asendage kindlasti 192.0.2.1oma tegeliku Vultri IP-aadressiga.

See tähendab, et e-kaubanduse soovituse mootorimall on juurutatud ja töötab edukalt. Saate teha päringu mootori malli kohta, et tuua kasutajale viis soovitust u5, käivitades uues terminali seansis järgmise päringu.

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

Näete kasutajale loodud soovitusi 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}]}

Pakkimine

Õnnitleme, Apache PredictionIO on teie serverisse edukalt juurutatud. Nüüd saate kasutada sündmuste serveri API-d andmete importimiseks mootorisse, et ennustada kasutajale soovitusi. Soovi korral võite kasutada mõnda muud malli mallide galeriist. Vaadake kindlasti Universal Recommenderi mootorimalli, mida saab kasutada peaaegu kõigil juhtudel, sealhulgas e-kaubanduses, uudistes või videotes.


Installige Plesk operatsioonisüsteemi CentOS 7

Installige Plesk operatsioonisüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Plesk on patenteeritud veebihosti juhtpaneel, mis võimaldab kasutajatel hallata oma isiklikke ja/või klientide veebisaite, andmebaase

Kuidas installida CentOS-i Squid Proxy

Kuidas installida CentOS-i Squid Proxy

Squid on populaarne tasuta Linuxi programm, mis võimaldab teil luua edastamise veebipuhverserveri. Selles juhendis näete, kuidas installida Squid CentOS-i, et teid pöörata

Lighttpd (LLMP Stack) installimine CentOS 6-sse

Lighttpd (LLMP Stack) installimine CentOS 6-sse

Sissejuhatus Lighttpd on Apache'i hark, mille eesmärk on olla palju vähem ressursimahukas. See on kerge, sellest ka oma nimi, ja seda on üsna lihtne kasutada. Installin

Staatilise võrgu ja IPv6 konfigureerimine CentOS 7-s

Staatilise võrgu ja IPv6 konfigureerimine CentOS 7-s

VULTR on hiljuti teinud nende osas muudatusi ja kõik peaks nüüd töötama hästi, kui NetworkManager on lubatud. Kui soovite keelata

Icinga2 muutmine, et kasutada CentOS 6 või CentOS 7 põhi-/kliendimudelit

Icinga2 muutmine, et kasutada CentOS 6 või CentOS 7 põhi-/kliendimudelit

Icinga2 on võimas seiresüsteem ja kui seda kasutatakse põhikliendi mudelis, võib see asendada vajaduse NRPE-põhiste seirekontrollide järele. Meister-klient

Apache Cassandra 3.11.x installimine opsüsteemi CentOS 7

Apache Cassandra 3.11.x installimine opsüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Apache Cassandra on tasuta ja avatud lähtekoodiga NoSQL-i andmebaasihaldussüsteem, mis on loodud pakkuma skaleeritavust, hig.

Kuidas installida Microweber operatsioonisüsteemi CentOS 7

Kuidas installida Microweber operatsioonisüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Microweber on avatud lähtekoodiga pukseeritav CMS-i ja veebipood. Microweberi lähtekoodi majutatakse GitHubis. See juhend näitab teile

Mattermost 4.1 installimine CentOS 7-sse

Mattermost 4.1 installimine CentOS 7-sse

Kas kasutate teistsugust süsteemi? Mattermost on avatud lähtekoodiga isehostitav alternatiiv Slack SAAS-i sõnumsideteenusele. Teisisõnu, Mattermostiga saate ca

Minecrafti serverite võrgu loomine BungeeCordi abil opsüsteemides Debian 8, Debian 9 või CentOS 7

Minecrafti serverite võrgu loomine BungeeCordi abil opsüsteemides Debian 8, Debian 9 või CentOS 7

Mida vajate Vultr VPS-i, millel on vähemalt 1 GB muutmälu. SSH-juurdepääs (juur-/administraatoriõigustega). 1. samm: BungeeCordi installimine Kõigepealt

Võimaldab Pleskis krüptida

Võimaldab Pleskis krüptida

Pleski juhtpaneelil on Lets Encrypti jaoks väga kena integratsioon. Lets Encrypt on üks ainsatest SSL-i pakkujatest, kes väljastab sertifikaate täielikult

Võimaldab krüptida cPanelil

Võimaldab krüptida cPanelil

Lets Encrypt on sertifitseerimisasutus, mis on pühendunud SSL-sertifikaatide tasuta pakkumisele. cPanel on teie ja teie kliendi jaoks loonud korraliku integratsiooni

Kuidas installida Concrete5 süsteemi CentOS 7

Kuidas installida Concrete5 süsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Concrete5 on avatud lähtekoodiga CMS, mis pakub palju eristatavaid ja kasulikke funktsioone, mis aitavad toimetajatel sisu hõlpsalt luua.

Kuidas installida CentOS 7 arvustuspaneeli

Kuidas installida CentOS 7 arvustuspaneeli

Kas kasutate teistsugust süsteemi? Review Board on tasuta avatud lähtekoodiga tööriist lähtekoodi, dokumentatsiooni, piltide ja palju muu ülevaatamiseks. See on veebipõhine tarkvara

Setup HTTP Authentication With Nginx on CentOS 7

Setup HTTP Authentication With Nginx on CentOS 7

In this guide, you will learn how to setup HTTP authentication for an Nginx web server running on CentOS 7. Requirements To get started, youll need th

Kuidas installida YOURLS süsteemi CentOS 7

Kuidas installida YOURLS süsteemi CentOS 7

YOURLS (Your Own URL Shortener) on avatud lähtekoodiga URL-i lühendamise ja andmeanalüüsi rakendus. Selles artiklis käsitleme installimisprotsessi

Kuidas installida ja konfigureerida ArangoDB CentOS 7-s

Kuidas installida ja konfigureerida ArangoDB CentOS 7-s

Kas kasutate teistsugust süsteemi? Sissejuhatus ArangoDB on avatud lähtekoodiga NoSQL-i andmebaas, millel on paindlik andmemudel dokumentide, graafikute ja võtmeväärtuste jaoks. see on

Etckeeperi kasutamine faili / etc versioonikontrolliks

Etckeeperi kasutamine faili / etc versioonikontrolliks

Sissejuhatus Kataloog /etc/ mängib Linuxi süsteemi toimimises kriitilist rolli. Selle põhjuseks on peaaegu iga süsteemi konfiguratsioon

Miks peaksite kasutama SSHFS-i? Kuidas ühendada CentOS 6-ga kaugfailisüsteem SSHFS-iga

Miks peaksite kasutama SSHFS-i? Kuidas ühendada CentOS 6-ga kaugfailisüsteem SSHFS-iga

Paljud süsteemiadministraatorid haldavad suuri servereid. Kui failidele on vaja juurde pääseda erinevatest serveritest, logige igasse eraldi sisse ca

Half Life 2 serveri seadistamine opsüsteemis CentOS 6

Half Life 2 serveri seadistamine opsüsteemis CentOS 6

See õpetus hõlmab Half Life 2 mänguserveri installimist süsteemi CentOS 6 System. 1. samm: eeltingimuste installimine Ou seadistamiseks

Kuidas installida Laravel GitScrum süsteemi CentOS 7

Kuidas installida Laravel GitScrum süsteemi CentOS 7

Laravel GitScrum ehk GitScrum on avatud lähtekoodiga produktiivsuse tööriist, mis on loodud selleks, et aidata arendusmeeskondadel rakendada Scrumi metoodikat sarnasel viisil.

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit