Cómo instalar y usar Apache PredictionIO para Machine Learning en CentOS 7

Los enfoques tradicionales para el análisis de datos son imposibles de usar cuando los conjuntos de datos alcanzan un cierto tamaño. Una alternativa moderna para analizar los enormes conjuntos de datos es utilizar métodos de aprendizaje automático. El aprendizaje automático puede producir resultados precisos cuando se utiliza un algoritmo rápido y eficiente.

Apache PredictionIO es un servidor de aprendizaje automático de código abierto que se utiliza para crear motores predictivos para cualquier tarea de aprendizaje automático. Acorta el tiempo de aplicación de aprendizaje automático desde el laboratorio hasta la producción mediante el uso de plantillas de motor personalizables que se pueden construir e implementar rápidamente. Proporciona la recopilación de datos y los componentes de servicio, y resume la tecnología subyacente para exponer una API que permite a los desarrolladores centrarse en los componentes de transformación. Una vez que el servidor del motor de PredictionIO se implementa como un servicio web, puede responder a consultas dinámicas en tiempo real.

Apache PredictionIO consta de diferentes componentes.

  • Plataforma PredictionIO : una pila de aprendizaje automático de código abierto construida sobre la parte superior de algunas aplicaciones de código abierto de última generación como Apache Spark, Apache Hadoop, Apache HBase y Elasticsearch.
  • Servidor de eventos : esto recopila continuamente datos de su servidor web o servidor de aplicaciones móviles en modo en tiempo real o modo por lotes. Los datos recopilados se pueden usar para entrenar el motor o para proporcionar una vista unificada para el análisis de datos. El servidor de eventos utiliza Apache HBase para almacenar los datos.
  • Servidor del motor : El servidor del motor es responsable de hacer la predicción real. Lee los datos de entrenamiento del almacén de datos y utiliza uno o más algoritmos de aprendizaje automático para construir los modelos predictivos. Un motor, una vez implementado como un servicio web, responde a las consultas realizadas por una aplicación web o móvil utilizando REST API o SDK.
  • Galería de plantillas : esta galería ofrece varios tipos de plantillas de motor preconstruidas. Puede elegir una plantilla que sea similar a su caso de uso y modificarla según sus requisitos.

Prerrequisitos

En este tutorial, lo utilizaremos 192.0.2.1como la dirección IP pública del servidor. Reemplace todas las apariciones de 192.0.2.1con su dirección IP pública de Vultr.

Actualice su sistema base utilizando la guía Cómo actualizar CentOS 7 . Una vez que su sistema ha sido actualizado, proceda a instalar Java.

Instalar Java

Muchos de los componentes de PredictionIO requieren JDK, o Java Development Kit, versión 8 para funcionar. Es compatible con OpenJDK y Oracle Java. En este tutorial, instalaremos OpenJDK versión 8.

OpenJDK se puede instalar fácilmente, ya que el paquete está disponible en el repositorio predeterminado de YUM.

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

Verifique la versión de Java para asegurarse de que se instaló correctamente.

java -version

Obtendrá una salida similar.

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

Antes de que podamos seguir adelante, tendremos que configurar los JAVA_HOMEy las JRE_HOMEvariables de entorno. Encuentre la ruta absoluta del ejecutable JAVA en su sistema.

readlink -f $(which java)

Verá una salida similar.

[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

Ahora, ajuste JAVA_HOMEy JRE_HOMEvariable de entorno de acuerdo con la ruta del directorio de 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

Ejecuta el bash_profilearchivo.

source ~/.bash_profile

Ahora puede ejecutar el echo $JAVA_HOMEcomando para verificar si la variable de entorno está configurada.

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

Instalar PredictionIO

Apache proporciona archivos de origen de PredictionIO que se pueden descargar y compilar localmente. Cree un nuevo directorio temporal para descargar y compilar el archivo fuente.

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

Descargue el archivo de origen de PredictionIO utilizando cualquier sitio de Apache Mirror .

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

Extraiga el archivo y compile la fuente para crear una distribución de PredictionIO.

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

Esta distribución será construido en contra de las versiones predeterminadas de las dependencias, que son Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3y ElasticSearch 5.5.2. Espere a que finalice la compilación, tardará alrededor de diez minutos en completarse dependiendo del rendimiento de su sistema.

Nota : Puede utilizar la última versión compatible de las dependencias, pero puede ver algunas advertencias durante la compilación ya que algunas funciones pueden quedar obsoletas. Ejecute ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, reemplazando el número de versión según su elección.

Una vez que la compilación finalice correctamente, verá el siguiente mensaje al final.

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

Los archivos binarios PredictionIO se guardarán en el PredictionIO-0.12.0-incubating.tar.gzarchivo. Extraiga el archivo en el /optdirectorio y proporcione la propiedad al usuario actual.

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

Establecer la PIO_HOMEvariable de entorno.

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

Instalar dependencias requeridas

Cree un nuevo directorio para instalar las dependencias de PredictionIO como HBase, Sparky Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Descargue Scala versión 2.11.8 y extráigala en el vendorsdirectorio.

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

Descargue Apache Hadoop versión 2.7.3 y extráigalo en el vendorsdirectorio.

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 es el motor de procesamiento predeterminado para PredictionIO. Descargue Spark versión 2.1.1 y extráigalo en el vendorsdirectorio.

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

Descargue Elasticsearch versión 5.5.2 y extráigalo en el vendorsdirectorio.

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

Finalmente, descargue HBase versión 1.2.6 y extráigalo en el vendorsdirectorio.

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

Abra el hbase-site.xmlarchivo de configuración para configurar HBase para que funcione en un entorno independiente.

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

Encuentre el bloque de configuración vacío y reemplácelo con la siguiente configuración.

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

El directorio de datos será creado automáticamente por HBase. Edite el archivo de entorno HBase para establecer la JAVA_HOMEruta.

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

Elimine el comentario de la línea número 27 y establezca JAVA_HOMEla ruta de jresu instalación Java. Puede encontrar la ruta al ejecutable JAVA con el readlink -f $(which java)comando

# 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

Además, comente los números de línea 46 y 47, ya que no son necesarios para 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"

Configurar el entorno PredictionIO

La configuración predeterminada en el archivo de entorno PredictionIO pio-env.shsupone que estamos utilizando PostgreSQL o MySQL. Como hemos usado HBase y Elasticsearch, necesitaremos modificar casi todas las configuraciones en el archivo. Es mejor hacer una copia de seguridad del archivo existente y crear un nuevo archivo de entorno PredictionIO.

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

Ahora cree un nuevo archivo para la configuración del entorno PredictionIO.

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

Rellene el archivo con la siguiente configuración.

# 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

Guarde el archivo y salga del editor.

Abra el archivo de configuración de Elasticsearch.

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

Elimine el comentario de la línea y configure el nombre del clúster exactamente igual al que se proporciona en el archivo de entorno PredictionIO. El nombre del clúster se establece pioen la configuración anterior.

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

Ahora agregue el $PIO_HOME/bindirectorio a la variable PATH para que los ejecutables de PredictionIO se ejecuten directamente.

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

En este punto, PredictionIO se ha instalado correctamente en su servidor.

Iniciando PredictionIO

Puede iniciar todos los servicios en PredictionIO, como Elasticsearch, HBase y Event server, utilizando un solo comando.

pio-start-all

Verá el siguiente resultado.

[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 el siguiente comando para verificar el estado del servidor PredictionIO.

pio status

Verá el siguiente resultado.

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

Como podemos ver en los mensajes anteriores, nuestro sistema está listo para usar para implementar una plantilla de motor y predecir datos.

Implementación de una plantilla de motor

Varias plantillas de motor listas para usar están disponibles en la Galería de plantillas de PredictionIO, que se pueden instalar fácilmente en el servidor de PredictionIO. Puede navegar libremente por la lista de plantillas de motor para encontrar la que esté más cerca de sus requisitos o puede escribir su propio motor.

En este tutorial, implementaremos la E-Commerce Recommendationplantilla del motor para demostrar la funcionalidad del servidor PredictionIO utilizando algunos datos de muestra. Esta plantilla de motor proporciona algunas recomendaciones personales a un usuario en un sitio web de comercio electrónico. De manera predeterminada, tiene características tales como excluir artículos agotados o proporcionar recomendaciones a un usuario que se registra después de que el modelo esté capacitado. Además, de forma predeterminada, la plantilla del motor toma la vista de un usuario y compra eventos, artículos con categorías y propiedades y una lista de artículos no disponibles. Una vez que el motor ha sido entrenado y desplegado, puede enviar una consulta con la identificación de usuario y la cantidad de elementos que se recomendarán. La salida generada será una lista clasificada de ID de elementos recomendados.

Instale Git, ya que se usará para clonar el repositorio.

cd ~    
sudo yum -y install git

Clone la plantilla del motor de recomendaciones de comercio electrónico en su sistema.

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

Cree una nueva aplicación para el motor de plantillas de recomendación de comercio electrónico. Cada aplicación en PredictionIO se usa para almacenar los datos para un sitio web separado. Si tiene varios sitios web, puede crear múltiples aplicaciones para almacenar los datos de cada sitio web en una aplicación diferente. Usted es libre de elegir cualquier nombre para su aplicación.

cd MyEComRecomm/
pio app new myecom

Verá el siguiente resultado.

[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

La salida anterior también contiene la clave de acceso que se usará para autenticar cuando se envían los datos de entrada al servidor de eventos.

Siempre puede encontrar la clave de acceso junto con la lista de aplicaciones disponibles ejecutando.

pio app list

Verá el siguiente resultado que contiene una lista de aplicaciones y la clave de acceso.

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

Ahora que hemos creado una nueva aplicación, le agregaremos algunos datos. En el entorno de producción, desearía enviar automáticamente los datos al servidor de eventos integrando la API del servidor de eventos en la aplicación. Para aprender cómo funciona PredictionIO, importaremos algunos datos de muestra. El motor de plantillas proporciona un script de Python que se puede usar fácilmente para importar los datos de muestra al servidor de eventos.

Instalar Python pip.

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

Instale PredictionIO Python SDK usando pip.

sudo pip install predictionio

Ejecute el script Python para agregar los datos de muestra al servidor de eventos.

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

Asegúrese de reemplazar la clave de acceso con su clave de acceso real. Verá una salida similar.

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

El script anterior importa 10 usuarios, 50 artículos en 6 categorías y algunos eventos aleatorios de compra y vistas. Para verificar si los eventos se importan o no, puede ejecutar la siguiente consulta.

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

La salida le mostrará la lista de todos los eventos importados en formato JSON.

Ahora, abra el engine.jsonarchivo en el editor. Este archivo contiene la configuración del motor.

nano engine.json

Encuentre las ocurrencias appNamey reemplace el valor con el nombre real de la aplicación que creó anteriormente.

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

Compila la aplicación.

pio build --verbose

Si no desea ver los mensajes de registro, elimine la --verboseopción. Crear la plantilla del motor por primera vez tomará unos minutos. Verá una salida similar cuando la compilación finalice correctamente.

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

Entrena el motor ahora. Durante el entrenamiento, el motor analiza el conjunto de datos y se entrena según el algoritmo proporcionado.

pio train

Antes de implementar la aplicación, tendremos que abrir el puerto 8000para que el estado de la aplicación se pueda ver en la GUI web. Además, los sitios web y las aplicaciones que utilizan el servidor de eventos enviarán y recibirán sus consultas a través de este puerto.

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

Ahora puede implementar el motor PredictionIO.

pio deploy

El comando anterior desplegará el motor y el servidor web incorporado en el puerto 8000para responder a las consultas de los sitios web y aplicaciones de comercio electrónico. Verá la siguiente salida al final una vez que el motor se implemente correctamente.

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

Puede verificar el estado del motor accediendo a http://192.0.2.1:8000cualquier navegador moderno. Asegúrese de reemplazar 192.0.2.1con su dirección IP Vultr real.

Esto significa que la plantilla del motor para la recomendación de comercio electrónico está implementada y ejecutándose con éxito. Puede consultar la plantilla del motor para obtener cinco recomendaciones para el usuario u5ejecutando la siguiente consulta en una nueva sesión de terminal.

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

Verá las recomendaciones generadas para el usuario 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}]}

Terminando

Felicitaciones, Apache PredictionIO se ha implementado con éxito en su servidor. Ahora puede usar la API del servidor de eventos para importar los datos al motor para predecir las recomendaciones para el usuario. Si lo desea, puede usar algunas otras plantillas de la galería de plantillas. Asegúrese de consultar la plantilla del motor de Universal Recommended que se puede utilizar en casi todos los casos de uso, incluidos el comercio electrónico, las noticias o los videos.



Leave a Comment

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Configure su propia red privada con OpenVPN

Configure su propia red privada con OpenVPN

Vultr le ofrece una increíble conectividad de red privada para servidores que se ejecutan en la misma ubicación. Pero a veces quieres dos servidores en diferentes países.

How to Install and Configure CyberPanel on Your CentOS 7 Server

How to Install and Configure CyberPanel on Your CentOS 7 Server

Using a Different System? Introduction CyberPanel is one of the first control panels on the market that is both open source and uses OpenLiteSpeed. What thi

Install eSpeak on CentOS 7

Install eSpeak on CentOS 7

Using a Different System? ESpeak can generate text-to-speech (TTS) audio files. These can be useful for many reasons, such as creating your own Turin

Cómo instalar Thelia 2.3 en CentOS 7

Cómo instalar Thelia 2.3 en CentOS 7

¿Usando un sistema diferente? Thelia es una herramienta de código abierto para crear sitios web de comercio electrónico y administrar contenido en línea, escrito en PHP. Código fuente de Thelia i

Monitoree sus dispositivos usando LibreNMS en CentOS 7

Monitoree sus dispositivos usando LibreNMS en CentOS 7

¿Usando un sistema diferente? LibreNMS es un completo sistema de monitoreo de red de código abierto. Utiliza SNMP para obtener los datos de diferentes dispositivos. Una variedad

Cómo instalar Cacti 1.1 en CentOS 7

Cómo instalar Cacti 1.1 en CentOS 7

Cacti es una herramienta de gráficos y monitoreo de red de código abierto y libre escrita en PHP. Con la ayuda de RRDtool (herramienta de base de datos Round-Robin), Cacti se puede usar t

Cómo usar Sudo en Debian, CentOS y FreeBSD

Cómo usar Sudo en Debian, CentOS y FreeBSD

Usar un usuario sudo para acceder a un servidor y ejecutar comandos a nivel raíz es una práctica muy común entre Linux y Unix Systems Administrator. El uso de un sud

Cómo supervisar de forma segura los servidores remotos con Zabbix en CentOS 7

Cómo supervisar de forma segura los servidores remotos con Zabbix en CentOS 7

¿Usando un sistema diferente? Zabbix es un software gratuito y de código abierto listo para empresas que se utiliza para monitorear la disponibilidad de sistemas y componentes de red.

Cómo instalar MODX CMS y Nginx en CentOS 7

Cómo instalar MODX CMS y Nginx en CentOS 7

MODX es un sistema de gestión de contenido gratuito y de código abierto escrito en PHP. Utiliza MySQL o MariaDB para almacenar su base de datos. MODX está diseñado para el negocio i

Cómo instalar YOURLS en CentOS 7

Cómo instalar YOURLS en CentOS 7

YOURLS (Your Own URL Shortener) es una aplicación de análisis de datos y acortamiento de URL de código abierto. En este artículo, cubriremos el proceso de instalación

Setup Nginx-RTMP on CentOS 7

Setup Nginx-RTMP on CentOS 7

Using a Different System? RTMP is great for serving live content. When RTMP is paired with FFmpeg, streams can be converted into various qualities. Vultr i

Cómo instalar LimeSurvey en CentOS 7

Cómo instalar LimeSurvey en CentOS 7

LimeSurvey es una herramienta de encuestas en línea gratuita y de código abierto que se utiliza ampliamente para publicar encuestas en línea y para recopilar comentarios de encuestas. En este artículo, voy a

Cómo instalar Vanilla Forum en CentOS 7

Cómo instalar Vanilla Forum en CentOS 7

¿Usando un sistema diferente? Vanilla forum es una aplicación de foro de código abierto escrita en PHP. Es totalmente personalizable, fácil de usar y admite dispositivos externos.

Instalación de Netdata en CentOS 7

Instalación de Netdata en CentOS 7

¿Usando un sistema diferente? Netdata es una estrella en ascenso en el campo del monitoreo de métricas del sistema en tiempo real. En comparación con otras herramientas del mismo tipo, Netdata:

Cómo instalar el servidor Just Cause 2 (JC2-MP) en CentOS 7

Cómo instalar el servidor Just Cause 2 (JC2-MP) en CentOS 7

En este tutorial, aprende bien cómo configurar un servidor multijugador Just Cause 2. Requisitos previos Asegúrese de que el sistema esté completamente actualizado antes de comenzar

Cómo instalar Starbound Server en CentOS 7

Cómo instalar Starbound Server en CentOS 7

¿Usando un sistema diferente? En este tutorial, explicaré cómo configurar un servidor Starbound en CentOS 7. Requisitos previos Necesitas tener este juego contigo

Instalación y configuración de ZNC en CentOS 7

Instalación y configuración de ZNC en CentOS 7

ZNC es un enlace IRC gratuito y de código abierto que permanece permanentemente conectado a una red para que los clientes puedan recibir mensajes enviados mientras están desconectados. Thi

ZPanel y Sentora en CentOS 6 x64

ZPanel y Sentora en CentOS 6 x64

ZPanel, un panel de control de alojamiento web popular, se bifurcó en 2014 a un nuevo proyecto llamado Sentora. Aprende a instalar Sentora en tu servidor con este tutorial.

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Cómo instalar Vtiger CRM Open Source Edition en CentOS 7

Aprende cómo instalar Vtiger CRM, una aplicación de gestión de relaciones con el cliente, en CentOS 7 para aumentar tus ventas y mejorar el servicio al cliente.

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Cómo instalar el servidor Counter-Strike 1.6 en Linux

Esta guía completa le mostrará cómo configurar un servidor Counter-Strike 1.6 en Linux, optimizando el rendimiento y la seguridad para el mejor juego. Aprende los pasos más recientes aquí.

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.