Как установить и использовать Apache PredictionIO для машинного обучения в CentOS 7

Традиционные подходы к анализу данных невозможно использовать, когда наборы данных достигают определенного размера. Современная альтернатива анализу огромных массивов данных - использование методов машинного обучения. Машинное обучение способно давать точные результаты при использовании быстрого и эффективного алгоритма.

Apache PredictionIO - это сервер машинного обучения с открытым исходным кодом, используемый для создания прогностических механизмов для любой задачи машинного обучения. Это сокращает время применения машинного обучения от лаборатории до производства благодаря использованию настраиваемых шаблонов движка, которые можно быстро создавать и развертывать. Он обеспечивает сбор данных и обслуживающие компоненты, а также абстрагирует основную технологию для предоставления API, который позволяет разработчикам сосредоточиться на компонентах преобразования. Как только сервер ядра PredictionIO развернут как веб-служба, он может отвечать на динамические запросы в режиме реального времени.

Apache PredictionIO состоит из разных компонентов.

  • Платформа PredictionIO : Стек машинного обучения с открытым исходным кодом, построенный на основе некоторых современных приложений с открытым исходным кодом, таких как Apache Spark, Apache Hadoop, Apache HBase и Elasticsearch.
  • Сервер событий : он непрерывно собирает данные с вашего веб-сервера или сервера мобильных приложений в режиме реального времени или в пакетном режиме. Собранные данные можно использовать для обучения движка или для предоставления единого представления для анализа данных. Сервер событий использует Apache HBase для хранения данных.
  • Сервер движка: сервер движка отвечает за фактический прогноз. Он считывает данные обучения из хранилища данных и использует один или несколько алгоритмов машинного обучения для построения прогностических моделей. Механизм, когда-то развернутый как веб-служба, отвечает на запросы веб-приложения или мобильного приложения, используя REST API или SDK.
  • Галерея шаблонов : эта галерея предлагает различные типы готовых шаблонов движка. Вы можете выбрать шаблон, который похож на ваш вариант использования и изменить его в соответствии с вашими требованиями.

Предпосылки

  • Экземпляр сервера Vultr CentOS 7 с ОЗУ не менее 8 ГБ. Для целей тестирования и разработки вы можете выбрать экземпляр с 4 ГБ ОЗУ и другой 4 ГБ подкачки .
  • Пользователь 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. В этом уроке мы установим OpenJDK версии 8.

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

Наконец, скачайте HBase версию 1.2.6 и распакуйте ее в 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

Теперь создайте новый файл для конфигурации среды PredictionIO.

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

Заполните файл следующей конфигурацией.

# 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

Сохраните файл и выйдите из редактора.

Откройте файл конфигурации Elasticsearch.

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

Раскомментируйте строку и задайте для имени кластера то же имя, которое указано в файле среды PredictionIO. Имя кластера установлено pioв вышеупомянутой конфигурации.

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

Теперь добавьте $PIO_HOME/binкаталог в переменную PATH, чтобы исполняемые файлы PredictionIO выполнялись напрямую.

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

На этом этапе PredictionIO успешно установлен на вашем сервере.

Начальный прогноз

Вы можете запустить все службы в PredictionIO, такие как Elasticsearch, HBase и Event server, с помощью одной команды.

pio-start-all

Вы увидите следующий вывод.

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

Используйте следующую команду, чтобы проверить состояние сервера PredictionIO.

pio status

Вы увидите следующий вывод.

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

Как видно из приведенных выше сообщений, наша система готова к использованию для реализации шаблона движка и прогнозирования данных.

Реализация шаблона движка

Несколько готовых к использованию шаблонов движка доступны в галерее шаблонов PredictionIO, которую можно легко установить на сервере PredictionIO. Вы можете свободно просматривать список шаблонов движка, чтобы найти тот, который соответствует вашим требованиям, или вы можете написать свой собственный движок.

В этом руководстве мы реализуем E-Commerce Recommendationшаблон движка, чтобы продемонстрировать функциональность сервера PredictionIO с использованием некоторых примеров данных. Этот шаблон двигателя предоставляет некоторые личные рекомендации пользователю на веб-сайте электронной коммерции. По умолчанию у него есть такие функции, как исключение товаров, отсутствующих на складе, или предоставление рекомендаций пользователю, который зарегистрируется после обучения модели. Также по умолчанию шаблон движка принимает пользовательский вид и покупает события, предметы с категориями и свойствами и список недоступных предметов. После того, как движок обучен и развернут, вы можете отправить запрос с идентификатором пользователя и количеством рекомендуемых элементов. Сгенерированный вывод будет ранжированным списком рекомендуемых идентификаторов предметов.

Установите Git, так как он будет использован для клонирования хранилища.

cd ~    
sudo yum -y install git

Клонируйте шаблон движка E-Commerce Recommender в вашей системе.

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

Создайте новое приложение для механизма шаблонов рекомендаций по электронной торговле. Каждое приложение в PredictionIO используется для хранения данных для отдельного веб-сайта. Если у вас есть несколько веб-сайтов, вы можете создать несколько приложений для хранения данных каждого веб-сайта в другом приложении. Вы можете выбрать любое имя для своего приложения.

cd MyEComRecomm/
pio app new myecom

Вы увидите следующий вывод.

[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

Вывод выше также содержит ключ доступа, который будет использоваться для аутентификации при отправке входных данных на сервер событий.

Вы всегда можете найти ключ доступа вместе со списком доступных приложений, запустив их.

pio app list

Вы увидите следующий вывод, содержащий список приложений и ключ доступа.

[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чтобы можно было просматривать его состояние в веб-интерфейсе. Кроме того, веб-сайты и приложения, использующие сервер событий, будут отправлять и получать свои запросы через этот порт.

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

Теперь вы можете развернуть движок PredictionIO.

pio deploy

Приведенная выше команда развернет механизм и встроенный веб-сервер в порту 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, который можно использовать практически во всех случаях, включая электронную торговлю, новости или видео.



Как установить Anchor CMS на CentOS 7 LAMP VPS

Как установить Anchor CMS на CentOS 7 LAMP VPS

Используете другую систему? Anchor CMS - это сверхпростая и чрезвычайно легкая бесплатная система управления контентом (CMS) с открытым исходным кодом.

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

Как обновить CentOS 7, Ubuntu 16.04 и Debian 8

При настройке нового сервера Linux рекомендуется обновить ядро ​​системы и другие пакеты до последней стабильной версии. В этой статье

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Как установить Backdrop CMS 1.8.0 на CentOS 7 LAMP VPS

Используете другую систему? Backdrop CMS 1.8.0 - это простая и гибкая, удобная для мобильных устройств, бесплатная система с открытым исходным кодом (CMS), которая позволяет нам

Настройте Magento на CentOS 6

Настройте Magento на CentOS 6

Если вы хотите разместить свой инвентарь в Интернете или просто магазин технических аксессуаров, Magento - отличное решение для электронной коммерции в Интернете. Это статья

Как установить AirSonic на CentOS 7

Как установить AirSonic на CentOS 7

Используете другую систему? AirSonic - это бесплатный и потоковый сервер с открытым исходным кодом. В этом уроке я проведу вас через процесс развертывания

Как установить OrangeScrum на CentOS 7

Как установить OrangeScrum на CentOS 7

OrangeScrum - это бесплатный инструмент управления проектами с открытым исходным кодом, который широко используется в малом и среднем бизнесе. В этой статье я проведу вас через

Как установить и настроить OrientDB Community Edition для CentOS 7

Как установить и настроить OrientDB Community Edition для CentOS 7

OrientDB - это мультимодельная СУБД NoSQL с открытым исходным кодом нового поколения. Благодаря поддержке нескольких моделей данных OrientDB может обеспечить большую функциональность и гибкость в

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Как установить Vtiger CRM с открытым исходным кодом на CentOS 7

Vtiger CRM - это популярное приложение для управления взаимоотношениями с клиентами, которое может помочь предприятиям увеличить продажи, обеспечить обслуживание клиентов и увеличить прибыль. я

Как установить MaraDNS на CentOS 6

Как установить MaraDNS на CentOS 6

MaraDNS - это легкая, но надежная программа с открытым исходным кодом для DNS-сервера. По сравнению с другими приложениями того же типа, такими как ISC BIND, PowerDNS и djbdns

Установка Netdata в CentOS 7

Установка Netdata в CentOS 7

Используете другую систему? Netdata - восходящая звезда в области мониторинга показателей системы в режиме реального времени. По сравнению с другими инструментами того же рода, Netdata:

Как установить Starbound Server в CentOS 7

Как установить Starbound Server в CentOS 7

Используете другую систему? В этом уроке я расскажу, как настроить сервер Starbound в CentOS 7. Предварительные условия Вы должны иметь эту игру на себе

Кластеризация RabbitMQ на CentOS 7

Кластеризация RabbitMQ на CentOS 7

RabbitMQ - это брокер сообщений с открытым исходным кодом, который поддерживает AMQP, STOMP и другие коммуникационные технологии. Широко используется в корпоративных приложениях

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Настройка многопользовательского сервера SA-MP San Andreas на CentOS 6

Добро пожаловать в другой учебник Vultr. Здесь вы узнаете, как установить и запустить сервер SAMP. Это руководство было написано для CentOS 6. Предварительные условия

Установите Elgg на CentOS 7

Установите Elgg на CentOS 7

Используете другую систему? Elgg - это движок социальных сетей с открытым исходным кодом, который позволяет создавать социальные среды, такие как социальные сети кампуса и

Установка Bolt CMS на CentOS 7

Установка Bolt CMS на CentOS 7

Bolt - это CMS с открытым исходным кодом, написанная на PHP. Исходный код Bolts размещен на GitHub. Это руководство покажет вам, как установить Bolt CMS на новую CentOS 7 Vult.

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Как установить Elasticsearch на экземпляре Vultr CentOS 7 Server

Elasticsearch - популярный движок полнотекстового поиска и аналитики с открытым исходным кодом. Благодаря своей универсальности, масштабируемости и простоте использования, Elasticsearch широко используется

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Развертывание Kubernetes с помощью Kubeadm на CentOS 7

Обзор Эта статья призвана помочь вам в кратчайшие сроки запустить и запустить кластер Kubernetes с помощью kubeadm. Это руководство будет развертывать два сервера, на

Настройте Sails.js для разработки на CentOS 7

Настройте Sails.js для разработки на CentOS 7

Используете другую систему? Введение Sails.js - это инфраструктура MVC для Node.js, аналогичная Ruby on Rails. Это делает для разработки современных приложений вер

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Как установить PufferPanel (бесплатная панель управления Minecraft) на CentOS 7

Введение В этом руководстве мы будем устанавливать PufferPanel на нашем Vultr VPS. PufferPanel - это бесплатная панель управления с открытым исходным кодом для управления вами.

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

Изучение 26 методов анализа больших данных: часть 1

6 невероятных фактов о Nintendo Switch

6 невероятных фактов о Nintendo Switch

Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.

Технические обещания, которые все еще не выполнены

Технические обещания, которые все еще не выполнены

Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.

Функциональные возможности уровней эталонной архитектуры больших данных

Функциональные возможности уровней эталонной архитектуры больших данных

Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.

Как ИИ может вывести автоматизацию процессов на новый уровень?

Как ИИ может вывести автоматизацию процессов на новый уровень?

Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA: как долго она может оставаться жизнеспособным методом различения между человеком и ИИ?

CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

Технологическая сингулярность: далекое будущее человеческой цивилизации?

По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.

Телемедицина и удаленное здравоохранение: будущее уже здесь

Телемедицина и удаленное здравоохранение: будущее уже здесь

Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Вы когда-нибудь задумывались, как хакеры зарабатывают деньги?

Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Обновление дополнения к macOS Catalina 10.15.4 вызывает больше проблем, чем решает

Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше