Jak zainstalować i używać Apache PredictionIO do uczenia maszynowego w CentOS 7

Tradycyjne podejście do analizy danych jest niemożliwe do zastosowania, gdy zbiory danych osiągną określony rozmiar. Nowoczesną alternatywą dla analizy ogromnych zestawów danych jest stosowanie metod uczenia maszynowego. Uczenie maszynowe jest w stanie uzyskać dokładne wyniki przy użyciu szybkiego i wydajnego algorytmu.

Apache PredictionIO to serwer uczenia maszynowego typu open source, służący do tworzenia mechanizmów predykcyjnych dla każdego zadania uczenia maszynowego. Skraca czas aplikacji uczenia maszynowego z laboratorium do produkcji dzięki zastosowaniu dostosowywanych szablonów silnika, które można szybko zbudować i wdrożyć. Udostępnia komponenty do gromadzenia danych i udostępniania oraz streszcza technologię leżącą u podstaw interfejsu API, który umożliwia programistom skupienie się na komponentach transformacji. Gdy silnik silnika PredictionIO zostanie wdrożony jako usługa sieciowa, może on odpowiadać na zapytania dynamiczne w czasie rzeczywistym.

Prognozy ApacheIO składają się z różnych komponentów.

  • Platforma PredictionIO : stos uczenia maszynowego typu open source oparty na najnowocześniejszych aplikacjach typu open source, takich jak Apache Spark, Apache Hadoop, Apache HBase i Elasticsearch.
  • Serwer zdarzeń : stale gromadzi dane z serwera WWW lub serwera aplikacji mobilnych w trybie czasu rzeczywistego lub wsadowym. Zebrane dane można wykorzystać do wyszkolenia silnika lub zapewnienia ujednoliconego widoku do analizy danych. Serwer zdarzeń używa Apache HBase do przechowywania danych.
  • Serwer silnika : serwer silnika jest odpowiedzialny za wykonanie rzeczywistej prognozy. Odczytuje dane szkoleniowe ze składnicy danych i wykorzystuje jeden lub więcej algorytmów uczenia maszynowego do budowy modeli predykcyjnych. Silnik, po wdrożeniu jako usługa internetowa, odpowiada na zapytania wykonane przez aplikację internetową lub mobilną przy użyciu interfejsu API REST lub zestawu SDK.
  • Galeria szablonów : ta galeria oferuje różne typy gotowych szablonów silnika. Możesz wybrać szablon podobny do przypadku użycia i zmodyfikować go zgodnie z własnymi wymaganiami.

Wymagania wstępne

  • Instancja serwera Vultr CentOS 7 z co najmniej 8 GB pamięci RAM. Do celów testowania i programowania można wybrać instancję z 4 GB pamięci RAM i inną pamięcią wymiany 4 GB .
  • Użytkownik sudo .

W tym samouczku użyjemy 192.0.2.1jako publicznego adresu IP serwera. Zamień wszystkie wystąpienia na 192.0.2.1swój publiczny adres IP Vultr.

Zaktualizuj system podstawowy za pomocą przewodnika Jak zaktualizować CentOS 7 . Po zaktualizowaniu systemu przejdź do instalacji Java.

Zainstaluj Javę

Wiele komponentów PredictionIO wymaga do działania JDK lub Java Development Kit, wersja 8. Obsługuje zarówno OpenJDK, jak i Oracle Java. W tym samouczku zainstalujemy wersję 8 OpenJDK.

OpenJDK można łatwo zainstalować, ponieważ pakiet jest dostępny w domyślnym repozytorium YUM.

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

Sprawdź wersję Java, aby upewnić się, że została poprawnie zainstalowana.

java -version

Otrzymasz podobny wynik.

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

Zanim przejdziemy dalej, musimy skonfigurować zmienne środowiskowe JAVA_HOMEi JRE_HOME. Znajdź absolutną ścieżkę pliku wykonywalnego JAVA w swoim systemie.

readlink -f $(which java)

Zobaczysz podobne wyjście.

[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

Teraz ustaw JAVA_HOMEi JRE_HOMEzmienna w zależności od ścieżki katalogu 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

Uruchom bash_profileplik.

source ~/.bash_profile

Teraz możesz uruchomić echo $JAVA_HOMEpolecenie, aby sprawdzić, czy zmienna środowiskowa jest ustawiona.

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

Zainstaluj PredictionIO

Apache zapewnia pliki źródłowe PredictionIO, które można pobrać i skompilować lokalnie. Utwórz nowy katalog tymczasowy, aby pobrać i skompilować plik źródłowy.

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

Pobierz archiwum plików źródłowych PredictionIO, korzystając z dowolnej witryny Apache Mirror .

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

Wyodrębnij archiwum i skompiluj źródło, aby utworzyć dystrybucję PredictionIO.

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

Powyższy podział zostanie zbudowana na wersji domyślnych zależności, które są Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3i ElasticSearch 5.5.2. Poczekaj na zakończenie kompilacji, ukończenie zajmie około dziesięciu minut, w zależności od wydajności systemu.

Uwaga : Możesz używać najnowszej obsługiwanej wersji zależności, ale podczas kompilacji możesz zobaczyć ostrzeżenia, ponieważ niektóre funkcje mogą być przestarzałe. Uruchom ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, zastępując numer wersji zgodnie z twoim wyborem.

Po pomyślnym zakończeniu kompilacji na końcu zobaczysz następujący komunikat.

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

Pliki binarne PredictionIO zostaną zapisane w PredictionIO-0.12.0-incubating.tar.gzarchiwum. Wypakuj archiwum do /optkatalogu i przekaż własność bieżącemu użytkownikowi.

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

Ustaw PIO_HOMEzmienną środowiskową.

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

Zainstaluj wymagane zależności

Utwórz nowy katalog, aby zainstalować PredictionIO Zależności takich jak HBase, Sparki Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Pobierz Scala w wersji 2.11.8 i wypakuj ją do vendorskatalogu.

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

Pobierz Apache Hadoop w wersji 2.7.3 i wypakuj go do vendorskatalogu.

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 to domyślny silnik przetwarzania dla PredictionIO. Pobierz Spark w wersji 2.1.1 i wypakuj go do vendorskatalogu.

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

Pobierz Elasticsearch w wersji 5.5.2 i wypakuj go do vendorskatalogu.

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

Na koniec pobierz HBase w wersji 1.2.6 i wypakuj ją do vendorskatalogu.

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

Otwórz hbase-site.xmlplik konfiguracyjny, aby skonfigurować HBase do pracy w autonomicznym środowisku.

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

Znajdź pusty blok konfiguracji i zastąp go następującą konfiguracją.

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

Katalog danych zostanie utworzony automatycznie przez HBase. Edytuj plik środowiska HBase, aby ustawić JAVA_HOMEścieżkę.

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

Odkomentuj wiersz 27 i ustaw JAVA_HOMEścieżkę jreinstalacji Java. Ścieżkę do pliku wykonywalnego JAVA można znaleźć za pomocą readlink -f $(which java)polecenia.

# 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

Ponadto skomentuj numery linii 46 i 47, ponieważ nie są one wymagane dla 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"

Skonfiguruj środowisko PredictionIO

Domyślna konfiguracja w pliku środowiska PredictionIO pio-env.shzakłada, że ​​korzystamy z PostgreSQL lub MySQL. Ponieważ korzystaliśmy z HBase i Elasticsearch, będziemy musieli zmodyfikować prawie każdą konfigurację w pliku. Najlepiej zrobić kopię zapasową istniejącego pliku i utworzyć nowy plik środowiska PredictionIO.

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

Teraz utwórz nowy plik do konfiguracji środowiska PredictionIO.

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

Wypełnij plik następującą konfiguracją.

# 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

Zapisz plik i wyjdź z edytora.

Otwórz plik konfiguracyjny Elasticsearch.

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

Usuń komentarz z wiersza i ustaw dokładnie nazwę klastra podaną w pliku środowiska PredictionIO. Nazwa klastra jest ustawiona piona powyższą konfigurację.

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

Teraz dodaj $PIO_HOME/binkatalog do zmiennej PATH, aby pliki wykonywalne PredictionIO były wykonywane bezpośrednio.

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

W tym momencie PredictionIO zostało pomyślnie zainstalowane na twoim serwerze.

Rozpoczęcie przewidywaniaIO

Możesz uruchomić wszystkie usługi w PredictionIO, takie jak Elasticsearch, HBase i serwer zdarzeń, za pomocą jednego polecenia.

pio-start-all

Zobaczysz następujące dane wyjściowe.

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

Użyj następującego polecenia, aby sprawdzić status serwera PredictionIO.

pio status

Zobaczysz następujące dane wyjściowe.

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

Jak widać w powyższych komunikatach, nasz system jest gotowy do użycia w celu wdrożenia szablonu silnika i przewidywania danych.

Implementowanie szablonu silnika

Kilka gotowych do użycia szablonów silnika jest dostępnych w Galerii szablonów PredictionIO, które można łatwo zainstalować na serwerze PredictionIO. Możesz swobodnie przeglądać listę szablonów wyszukiwarek, aby znaleźć ten, który jest zgodny z Twoimi wymaganiami lub możesz napisać własny silnik.

W tym samouczku zaimplementujemy E-Commerce Recommendationszablon silnika, aby zademonstrować funkcjonalność serwera PredictionIO przy użyciu przykładowych danych. Ten szablon silnika stanowi osobistą rekomendację dla użytkownika w witrynie e-commerce. Domyślnie ma takie funkcje, jak wykluczanie brakujących produktów lub przekazywanie rekomendacji użytkownikowi, który zarejestruje się po przeszkoleniu modelu. Domyślnie szablon wyszukiwarki przyjmuje widok użytkownika i kupuje zdarzenia, elementy z kategoriami i właściwościami oraz listę niedostępnych elementów. Po przeszkoleniu i wdrożeniu silnika możesz wysłać zapytanie z identyfikatorem użytkownika i liczbą zalecanych elementów. Wygenerowany wynik będzie listą rankingową zalecanych identyfikatorów produktów.

Zainstaluj Git, ponieważ będzie on używany do klonowania repozytorium.

cd ~    
sudo yum -y install git

Sklonuj szablon silnika E-Commerce Rekomendender w swoim systemie.

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

Utwórz nową aplikację dla silnika szablonu rekomendacji e-commerce. Każda aplikacja w PredictionIO służy do przechowywania danych na osobnej stronie internetowej. Jeśli masz wiele witryn, możesz utworzyć wiele aplikacji do przechowywania danych z każdej witryny w innej aplikacji. Możesz wybrać dowolną nazwę swojej aplikacji.

cd MyEComRecomm/
pio app new myecom

Zobaczysz następujące dane wyjściowe.

[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

Powyższe dane wyjściowe zawierają również klucz dostępu, który zostanie użyty do uwierzytelnienia podczas wysyłania danych wejściowych do serwera zdarzeń.

Zawsze możesz znaleźć klucz dostępu wraz z listą dostępnych aplikacji, uruchamiając.

pio app list

Zobaczysz następujące dane wyjściowe zawierające listę aplikacji i klucz dostępu.

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

Teraz, gdy stworzyliśmy nową aplikację, dodamy do niej pewne dane. W środowisku produkcyjnym należy automatycznie wysyłać dane do serwera zdarzeń, integrując interfejs API serwera zdarzeń z aplikacją. Aby dowiedzieć się, jak działa PredictionIO, zaimportujemy do niego niektóre przykładowe dane. Silnik szablonów zapewnia skrypt w języku Python, którego można łatwo użyć do zaimportowania przykładowych danych do serwera zdarzeń.

Zainstaluj pip Python.

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

Zainstaluj PredictionIO Python SDK za pomocą pip.

sudo pip install predictionio

Uruchom skrypt Python, aby dodać przykładowe dane do serwera zdarzeń.

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

Pamiętaj, aby zastąpić klucz dostępu faktycznym kluczem dostępu. Zobaczysz podobne wyjście.

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

Powyższy skrypt importuje 10 użytkowników, 50 pozycji w 6 kategoriach oraz niektóre losowe zdarzenia zakupu i wyświetleń. Aby sprawdzić, czy zdarzenia są importowane, czy nie, możesz uruchomić następujące zapytanie.

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

Dane wyjściowe pokażą listę wszystkich zaimportowanych zdarzeń w formacie JSON.

Teraz otwórz engine.jsonplik w edytorze. Ten plik zawiera konfigurację silnika.

nano engine.json

Znajdź zarówno wystąpienia, jak appNamei zastąp wartość rzeczywistą nazwą wcześniej utworzonej aplikacji.

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

Zbuduj aplikację.

pio build --verbose

Jeśli nie chcesz widzieć komunikatów dziennika, usuń --verboseopcję. Zbudowanie szablonu silnika po raz pierwszy zajmie kilka minut. Podobne wyniki zobaczysz, gdy kompilacja zakończy się pomyślnie.

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

Wytrenuj teraz silnik. Podczas szkolenia silnik analizuje zestaw danych i trenuje się zgodnie z dostarczonym algorytmem.

pio train

Przed wdrożeniem aplikacji konieczne będzie otwarcie portu, 8000aby można było wyświetlić status aplikacji w internetowym interfejsie GUI. Ponadto witryny i aplikacje korzystające z serwera zdarzeń będą wysyłać i odbierać zapytania przez ten port.

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

Teraz możesz wdrożyć silnik PredictionIO.

pio deploy

Powyższe polecenie wdroży silnik i wbudowany serwer internetowy na porcie, 8000aby odpowiadać na zapytania z witryn i aplikacji e-commerce. Po pomyślnym wdrożeniu silnika zobaczysz następujące dane wyjściowe.

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

Możesz zweryfikować status silnika, przechodząc do http://192.0.2.1:8000dowolnej nowoczesnej przeglądarki. Upewnij się, że zastąpiłeś 192.0.2.1swój rzeczywisty adres IP Vultr.

Oznacza to, że szablon silnika dla rekomendacji e-commerce został wdrożony i działa poprawnie. Możesz wysłać zapytanie do szablonu silnika, aby pobrać pięć rekomendacji dla użytkownika u5, uruchamiając następujące zapytanie w nowej sesji terminala.

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

Zobaczysz wygenerowane rekomendacje dla użytkownika 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}]}

Podsumowanie

Gratulacje, Apache PredictionIO został pomyślnie wdrożony na twoim serwerze. Możesz teraz użyć interfejsu API serwera zdarzeń, aby zaimportować dane do silnika, aby przewidzieć zalecenia dla użytkownika. Jeśli chcesz, możesz użyć innych szablonów z galerii szablonów. Koniecznie sprawdź szablon silnika Universal Rekomendender , którego można używać w prawie wszystkich przypadkach użycia, w tym w handlu elektronicznym, wiadomościach lub filmach.



Leave a Comment

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Używasz innego systemu? Anchor CMS to bardzo prosty i niezwykle lekki, darmowy i otwarty system zarządzania treścią (CMS) Blog Engine, który

Jak zaktualizować CentOS 7, Ubuntu 16.04 i Debian 8

Jak zaktualizować CentOS 7, Ubuntu 16.04 i Debian 8

Podczas konfigurowania nowego serwera Linux zaleca się aktualizację jądra systemu i innych pakietów do najnowszej stabilnej wersji. W tym artykule

Skonfiguruj klaster RethinkDB w CentOS 7

Skonfiguruj klaster RethinkDB w CentOS 7

Wprowadzenie RethinkDB to baza danych NoSQL, która przechowuje dane jako dokumenty JSON. Ma bardzo intuicyjny język zapytań i funkcje powszechnie dostępne

Skonfiguruj Magento na CentOS 6

Skonfiguruj Magento na CentOS 6

Niezależnie od tego, czy chcesz umieścić zapasy sklepów online, czy po prostu prosty sklep z akcesoriami technicznymi, Magento jest doskonałym rozwiązaniem dla eCommerce online. Ten artykuł

Jak zainstalować i skonfigurować OrientDB Community Edition na CentOS 7

Jak zainstalować i skonfigurować OrientDB Community Edition na CentOS 7

OrientDB to wielomodowy model open source NoSQL DBMS nowej generacji. Dzięki obsłudze wielu modeli danych, OrientDB może zapewnić większą funkcjonalność i elastyczność

Jak zainstalować Neos CMS na CentOS 7

Jak zainstalować Neos CMS na CentOS 7

Neos to innowacyjny system zarządzania treścią typu open source, który doskonale nadaje się do tworzenia i edytowania treści online. Z myślą o autorach i redaktorach, Neo

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Vtiger CRM to popularna aplikacja do zarządzania relacjami z klientami, która może pomóc przedsiębiorstwom zwiększyć sprzedaż, zapewnić obsługę klienta i zwiększyć zyski. ja

Jak zainstalować MaraDNS na CentOS 6

Jak zainstalować MaraDNS na CentOS 6

MaraDNS to lekki, ale solidny program serwera DNS typu open source. W porównaniu z innymi aplikacjami tego samego rodzaju, takimi jak ISC BIND, PowerDNS i djbdns

Instalowanie Netdata na CentOS 7

Instalowanie Netdata na CentOS 7

Używasz innego systemu? Netdata jest wschodzącą gwiazdą w dziedzinie monitorowania wskaźników systemowych w czasie rzeczywistym. W porównaniu z innymi narzędziami tego samego rodzaju, Netdata:

Jak zainstalować Starbound Server na CentOS 7

Jak zainstalować Starbound Server na CentOS 7

Używasz innego systemu? W tym samouczku wyjaśnię, jak skonfigurować serwer Starbound na CentOS 7. Wymagania wstępne Musisz mieć tę grę na sobie

Clustering RabbitMQ na CentOS 7

Clustering RabbitMQ na CentOS 7

RabbitMQ to broker komunikatów typu open source, który obsługuje AMQP, STOMP i inne technologie komunikacyjne. Jest szeroko stosowany w aplikacjach dla przedsiębiorstw

Skonfiguruj SA-MP San Andreas Multiplayer Server na CentOS 6

Skonfiguruj SA-MP San Andreas Multiplayer Server na CentOS 6

Witamy w innym samouczku Vultr. Tutaj dowiesz się, jak zainstalować i uruchomić serwer SAMP. Ten przewodnik został napisany dla CentOS 6. Wymagania wstępne Będziesz potrzebował

Zainstaluj Elgg na CentOS 7

Zainstaluj Elgg na CentOS 7

Używasz innego systemu? Elgg to silnik sieci społecznościowych typu open source, który umożliwia tworzenie środowisk społecznościowych, takich jak kampusowe sieci społecznościowe

Jak zainstalować serwer RStudio na CentOS 7

Jak zainstalować serwer RStudio na CentOS 7

RStudio Server to internetowa wersja RStudio, która jest serią narzędzi zaprojektowanych w celu ułatwienia kodowania przy użyciu języka programowania R. W thi

Instalowanie Bolt CMS na CentOS 7

Instalowanie Bolt CMS na CentOS 7

Bolt to open source CMS napisany w PHP. Kod źródłowy Bolts jest hostowany na GitHub. Ten przewodnik pokaże Ci, jak zainstalować Bolt CMS na nowym CentOS 7 Vult

Jak zainstalować Elasticsearch na instancji serwera Vultr CentOS 7

Jak zainstalować Elasticsearch na instancji serwera Vultr CentOS 7

Elasticsearch to popularny wyszukiwarka pełnotekstowa i silnik analityczny typu open source. Dzięki swojej wszechstronności, skalowalności i łatwości użytkowania, Elasticsearch jest szeroko rozpowszechniony

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Wdróż Kubernetes za pomocą Kubeadm na CentOS 7

Omówienie Ten artykuł ma na celu pomóc ci w szybkim uruchomieniu klastra Kubernetes z kubeadm. W tym przewodniku zostaną wdrożone dwa serwery

Sails.js należy skonfigurować do programowania w CentOS 7

Sails.js należy skonfigurować do programowania w CentOS 7

Używasz innego systemu? Wprowadzenie Sails.js to framework MVC dla Node.js, podobny do Ruby on Rails. Umożliwia tworzenie nowoczesnych aplikacji wer

Jak zainstalować PufferPanel (bezpłatny panel sterowania Minecraft) na CentOS 7

Jak zainstalować PufferPanel (bezpłatny panel sterowania Minecraft) na CentOS 7

Wprowadzenie W tym samouczku zainstaluj PufferPanel na naszym Vultr VPS. PufferPanel to otwarty, darmowy panel kontrolny do zarządzania tobą

Lepsze narzędzia monitorowania dla Ubuntu i CentOS

Lepsze narzędzia monitorowania dla Ubuntu i CentOS

Wprowadzenie Systemy Linux są domyślnie dostarczane z narzędziami do monitorowania, takimi jak top, df i du, które pomagają monitorować procesy i miejsce na dysku. Często jednak są

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.