CentOS 7에서 기계 학습을 위해 Apache PredictionIO를 설치하고 사용하는 방법

데이터 세트가 특정 크기에 도달하면 데이터 분석에 대한 기존 접근 방식을 사용할 수 없습니다. 방대한 양의 데이터를 분석하는 현대적인 대안은 기계 학습 방법을 사용하는 것입니다. 기계 학습은 빠르고 효율적인 알고리즘을 사용할 때 정확한 결과를 생성 할 수 있습니다.

Apache PredictionIO는 모든 머신 러닝 작업을위한 예측 엔진을 만드는 데 사용되는 오픈 소스 머신 러닝 서버입니다. 신속하게 구축 및 배포 할 수있는 사용자 정의 가능한 엔진 템플릿을 사용하여 실험실에서 생산에 이르기까지 기계 학습 응용 프로그램의 시간을 단축합니다. 데이터 수집 및 서빙 구성 요소를 제공하고 기본 기술을 추상화하여 개발자가 변환 구성 요소에 집중할 수있는 API를 제공합니다. PredictionIO의 엔진 서버가 웹 서비스로 배포되면 동적 쿼리에 실시간으로 응답 할 수 있습니다.

Apache PredictionIO는 서로 다른 구성 요소로 구성됩니다.

  • PredictionIO 플랫폼 : Apache Spark, Apache Hadoop, Apache HBase 및 Elasticsearch와 같은 최첨단 오픈 소스 애플리케이션 위에 구축 된 오픈 소스 머신 러닝 스택입니다.
  • 이벤트 서버 : 실시간 모드 또는 배치 모드로 웹 서버 또는 모바일 애플리케이션 서버에서 지속적으로 데이터를 수집합니다. 수집 된 데이터는 엔진을 훈련 시키거나 데이터 분석을위한 통합 된 뷰를 제공하는 데 사용될 수 있습니다. 이벤트 서버는 Apache HBase를 사용하여 데이터를 저장합니다.
  • 엔진 서버 : 엔진 서버는 실제 예측을 담당합니다. 데이터 저장소에서 학습 데이터를 읽고 예측 모델을 작성하기 위해 하나 이상의 기계 학습 알고리즘을 사용합니다. 한 번 웹 서비스로 배포 된 엔진은 REST API 또는 SDK를 사용하여 웹 또는 모바일 앱의 쿼리에 응답합니다.
  • 템플릿 갤러리 :이 갤러리는 다양한 유형의 사전 제작 된 엔진 템플릿을 제공합니다. 사용 사례와 유사한 템플릿을 선택하고 요구 사항에 따라 수정할 수 있습니다.

전제 조건

  • RAM이 8GB 이상인 Vultr CentOS 7 서버 인스턴스 테스트 및 개발 목적으로 4GB RAM과 다른 4GB 스왑 메모리가 있는 인스턴스를 선택할 수 있습니다 .
  • sudo는 사용자 .

이 학습서에서는 192.0.2.1서버의 공용 IP 주소로 사용 합니다. 모든 발생을 192.0.2.1Vultr 공개 IP 주소로 바꾸십시오.

CentOS 7 업데이트 방법 안내서를 사용하여 기본 시스템을 업데이트하십시오 . 시스템이 업데이트되면 Java 설치를 진행하십시오.

자바 설치

PredictionIO의 많은 구성 요소가 작동하려면 JDK 또는 Java Development Kit 버전 8이 필요합니다. OpenJDK와 Oracle Java를 모두 지원합니다. 이 학습서에서는 OpenJDK 버전 8을 설치합니다.

패키지가 기본 YUM 저장소에서 사용 가능하므로 OpenJDK를 쉽게 설치할 수 있습니다.

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_HOMEJRE_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_HOMEJRE_HOME자바 디렉토리의 경로에 따라 환경 변수.

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

Apache Mirror 사이트를 사용하여 PredictionIO 소스 파일 아카이브를 다운로드 하십시오 .

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.8Spark 2.1.1, Hadoop 2.7.3및에 대해 작성 ElasticSearch 5.5.2됩니다. 빌드가 완료 될 때까지 기다리십시오. 시스템 성능에 따라 완료하는 데 약 10 분이 걸립니다.

참고 : 지원되는 최신 버전의 종속성을 무료로 사용할 수 있지만 일부 기능은 사용되지 않을 수 있으므로 빌드 중에 일부 경고가 표시 될 수 있습니다. ./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을 해제하고 jreJava 설치 경로로 설정 하십시오. readlink -f $(which java)명령을 사용하여 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

또한 JAVA 8에는 필요하지 않으므로 행 번호 46과 47을 주석 처리하십시오.

# 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.shPostgreSQL 또는 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/binPredictionIO 실행 파일이 직접 실행되도록 디렉토리를 PATH 변수에 추가하십시오 .

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

이제 PredictionIO가 서버에 성공적으로 설치되었습니다.

PredictionIO 시작

단일 명령을 사용하여 Elasticsearch, HBase 및 Event 서버와 같은 PredictionIO의 모든 서비스를 시작할 수 있습니다.

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 서버의 기능을 보여주기 위해 엔진 템플릿을 구현합니다 . 이 엔진 템플릿은 전자 상거래 웹 사이트의 사용자에게 개인적인 추천을 제공합니다. 기본적으로 품절 품목 제외 또는 모델 학습 후 등록한 사용자에게 권장 사항 제공과 같은 기능이 있습니다. 또한 기본적으로 엔진 템플릿은 사용자의보기 및 구매 이벤트, 범주 및 속성이있는 항목 및 사용할 수없는 항목 목록을 가져옵니다. 엔진이 훈련되고 배포되면 사용자 ID와 권장 할 항목 수를 가진 쿼리를 보낼 수 있습니다. 생성 된 출력은 권장 항목 ID의 순위 목록입니다.

저장소를 복제하는 데 사용되는 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

pip를 사용하여 PredictionIO Python SDK를 설치하십시오.

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 명의 사용자, 6 개의 카테고리에서 50 개의 항목 및 일부 구매 및 조회 이벤트를 가져옵니다. 이벤트를 가져 왔는지 여부를 확인하려면 다음 쿼리를 실행할 수 있습니다.

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

출력에는 가져온 모든 이벤트 목록이 JSON 형식으로 표시됩니다.

이제 engine.json파일을 편집기 에서 엽니 다 . 이 파일에는 엔진 구성이 포함되어 있습니다.

nano engine.json

발생을 모두 찾아서 appName이전에 만든 앱의 실제 이름으로 값을 바꿉니다.

{
  "id": "default",
  "description": "Default settings",
  "engineFactory": "org.example.ecommercerecommendation.ECommerceRecommendationEngine",
  "datasource": {
    "params" : {
      "appName": "myecom"
    }
  },
  "algorithms": [
    {
      "name": "ecomm",
      "params": {
        "appName": "myecom",
        "unseenOnly": true,
        "seenEvents": ["buy", "view"],
        "similarEvents": ["view"],
        "rank": 10,
        "numIterations" : 20,
        "lambda": 0.01,
        "seed": 3
      }
    }
  ]
}

응용 프로그램을 빌드하십시오.

pio build --verbose

로그 메시지를 보지 않으려면 --verbose옵션을 제거하십시오 . 엔진 템플릿을 처음 빌드하는 데 몇 분이 걸립니다. 빌드가 성공적으로 완료되면 비슷한 결과가 나타납니다.

[user@vultr MyEComRecomm]$ pio build --verbose
[INFO] [Engine$] Using command '/opt/PredictionIO-0.12.0-incubating/sbt/sbt' at /home/user/MyEComRecomm to build.

...

[INFO] [Engine$] Build finished successfully.
[INFO] [Pio$] Your engine is ready for training.

지금 엔진을 훈련 시키십시오. 훈련 중에 엔진은 데이터 세트를 분석하고 제공된 알고리즘에 따라 훈련합니다.

pio train

애플리케이션을 배치하기 전에 애플리케이션 8000의 상태를 Web GUI에서 볼 수 있도록 포트를 열어야합니다 . 또한 이벤트 서버를 사용하는 웹 사이트 및 응용 프로그램은이 포트를 통해 쿼리를 보내고받습니다.

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

이제 PredictionIO 엔진을 배포 할 수 있습니다.

pio deploy

위의 명령은 엔진과 내장 웹 서버를 포트 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실제 Vultr IP 주소로 교체하십시오 .

이는 전자 상거래 권장 사항의 엔진 템플리트가 배치되어 실행 중임을 나타냅니다. u5새 터미널 세션에서 다음 쿼리를 실행 하여 엔진 템플릿을 쿼리하여 사용자에게 다섯 가지 권장 사항을 가져올 수 있습니다 .

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

user에 대해 생성 된 권장 사항이 표시 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 엔진 템플릿 을 확인하십시오 .



Leave a Comment

CentOS 7 서버에 CyberPanel을 설치하고 구성하는 방법

CentOS 7 서버에 CyberPanel을 설치하고 구성하는 방법

다른 시스템을 사용하십니까? 소개 CyberPanel은 오픈 소스이며 OpenLiteSpeed를 사용하는 최초의 제어판 중 하나입니다. 무슨 티

CentOS 7에 채팅 서버를 배포하는 방법

CentOS 7에 채팅 서버를 배포하는 방법

Lets Chat은 소규모 팀을위한 자체 호스팅 메시징 서비스를 제공하도록 설계된 오픈 소스 채팅 응용 프로그램입니다. 채팅이 NodeJS 및 MongoDB를 기반으로 함

CentOS 7에 예약 스케줄러를 설치하는 방법

CentOS 7에 예약 스케줄러를 설치하는 방법

다른 시스템을 사용하십니까? 전제 조건 Vultr CentOS 7 서버 인스턴스. sudo 사용자 1 단계 : 시스템 업데이트 먼저 시스템 서버를 업데이트하십시오.

CentOS 7에 Netdata 설치

CentOS 7에 Netdata 설치

다른 시스템을 사용하십니까? Netdata는 실시간 시스템 메트릭 모니터링 분야에서 떠오르는 별입니다. 같은 종류의 다른 도구 인 Netdata와 비교하면 :

CentOS 7에 DreamFactory 오픈 소스를 설치하는 방법

CentOS 7에 DreamFactory 오픈 소스를 설치하는 방법

DreamFactory는 모든 데이터베이스를 RESTful API 플랫폼으로 전환 할 수있는 오픈 소스 프로그램입니다. DreamFactory는 다양한 플랫폼에 배포 할 수 있습니다. 티에서

CentOS 7에 JC2-MP (Just Cause 2) 서버를 설치하는 방법

CentOS 7에 JC2-MP (Just Cause 2) 서버를 설치하는 방법

이 튜토리얼에서는 Just Cause 2 멀티 플레이어 서버를 설정하는 방법을 배웁니다. 전제 조건 시작하기 전에 시스템이 완전히 업데이트되었는지 확인하십시오

CentOS 7에서 Leanote 서버를 설정하는 방법

CentOS 7에서 Leanote 서버를 설정하는 방법

Leanote는 Golang으로 작성된 Evernote의 무료, 경량 및 오픈 소스 대안입니다. 사용자 경험을 염두에두고 Leanote는 사용자에게 재치를 제공합니다.

CentOS 7에 Starbound Server를 설치하는 방법

CentOS 7에 Starbound Server를 설치하는 방법

다른 시스템을 사용하십니까? 이 튜토리얼에서는 CentOS 7에서 Starbound 서버를 설정하는 방법을 설명하겠습니다. 전제 조건이 게임을 소유해야합니다

CentOS 8, Ubuntu 18.04, Debian 10 및 Fedora 31에 Golang 1.13을 설치하는 방법 31

CentOS 8, Ubuntu 18.04, Debian 10 및 Fedora 31에 Golang 1.13을 설치하는 방법 31

Go (Golang이라고도 함)는 Google에서 개발 한 정적으로 형식이 지정된 컴파일 된 C 유사 프로그래밍 언어입니다. 단순성과 다목적 성으로 인해 b가되었습니다.

CentOS 7에 Django를 설치하는 방법

CentOS 7에 Django를 설치하는 방법

Django는 웹 응용 프로그램을 작성하는 데 널리 사용되는 Python 프레임 워크입니다. Django를 사용하면 휠을 재발 명하지 않고도 응용 프로그램을 더 빠르게 구축 할 수 있습니다. 당신이 원하는 경우

CentOS 6에서 SA-MP San Andreas 멀티 플레이어 서버 설정

CentOS 6에서 SA-MP San Andreas 멀티 플레이어 서버 설정

다른 Vultr 튜토리얼에 오신 것을 환영합니다. 여기에서는 SAMP 서버를 설치하고 실행하는 방법에 대해 설명합니다. 이 안내서는 CentOS 6 용으로 작성된 것입니다. 전제 조건

CentOS 7 LAMP VPS에 TextPattern CMS를 설치하는 방법

CentOS 7 LAMP VPS에 TextPattern CMS를 설치하는 방법

다른 시스템을 사용하십니까? TextPattern CMS 4.6.2는 간단하고 유연하며 무료이며 오픈 소스 CMS (콘텐츠 관리 시스템)로 웹 디자이너는

CentOS 7에 Elgg 설치

CentOS 7에 Elgg 설치

다른 시스템을 사용하십니까? Elgg는 캠퍼스 소셜 네트워크와 같은 소셜 환경을 만들 수있는 오픈 소스 소셜 네트워킹 엔진입니다.

CentOS 7 개발을위한 Sails.js 설정

CentOS 7 개발을위한 Sails.js 설정

다른 시스템을 사용하십니까? 소개 Sails.js는 Ruby on Rails와 비슷한 Node.js 용 MVC 프레임 워크입니다. 그것은 현대적인 응용 프로그램을 개발할 수 있습니다

CentOS 7에 PufferPanel (무료 Minecraft 제어판)을 설치하는 방법

CentOS 7에 PufferPanel (무료 Minecraft 제어판)을 설치하는 방법

소개이 자습서에서는 Vultr VPS에 PufferPanel을 설치하십시오. PufferPanel은 사용자를 관리하기위한 무료 오픈 소스 제어판입니다.

PHP를 5에서 7로 업데이트하는 방법 (NGINX / Apache, CentOS 7)

PHP를 5에서 7로 업데이트하는 방법 (NGINX / Apache, CentOS 7)

소개이 튜토리얼은 NGINX 또는 Apache로 PHP 5 *를 7로 업데이트하는 방법을 다룹니다. 전제 조건 시작하기 전에 저장소를 추가해야합니다.

CentOS 7에 MoinMoin을 설치하는 방법

CentOS 7에 MoinMoin을 설치하는 방법

MoinMoin은 Python으로 작성된 오픈 소스 파일 시스템 기반 위키 엔진입니다. 오늘날 MoinMoin은 오픈 소스 커뮤니티에서 널리 사용됩니다. 많은 공급 업체

CentOS 7에 SonarQube를 설치하는 방법

CentOS 7에 SonarQube를 설치하는 방법

다른 시스템을 사용하십니까? SonarQube는 품질 시스템 개발을위한 오픈 소스 도구입니다. Java로 작성되었으며 여러 데이터베이스를 지원합니다. 그것은 제공

OS 선택 : CentOS, Ubuntu, Debian, FreeBSD, CoreOS 또는 Windows Server

OS 선택 : CentOS, Ubuntu, Debian, FreeBSD, CoreOS 또는 Windows Server

이 기사는 Vultr에서 템플릿으로 제공되는 서버 운영 체제에 대한 간략한 개요를 제공합니다. CentOS CentOS는 RHEL의 공개 소스 버전입니다 (Re

CentOS 7에 phpPgAdmin 설치

CentOS 7에 phpPgAdmin 설치

phpPgAdmin은 널리 사용되는 PostgreSQL 관리 도구입니다. 직관적 인 웹 인터페이스에서 PostgreSQL 데이터베이스를 관리하는 데 사용할 수 있습니다. 이 기사에서 우리는

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

저널링 파일 시스템이란 무엇이며 어떻게 작동합니까?

우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true

기술적 특이점: 인류 문명의 먼 미래?

기술적 특이점: 인류 문명의 먼 미래?

과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

26가지 빅 데이터 분석 기법에 대한 통찰: 1부

2021년 의료 분야에서 인공 지능의 영향

2021년 의료 분야에서 인공 지능의 영향

의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.