Cara Memasang dan Menggunakan Apache PredictionIO untuk Pembelajaran Mesin pada CentOS 7

Pendekatan tradisional untuk analisis data tidak mungkin digunakan ketika dataset mencapai ukuran tertentu. Alternatif modern untuk menganalisis set besar data menggunakan metode pembelajaran mesin. Pembelajaran mesin mampu menghasilkan hasil yang akurat ketika menggunakan algoritma yang cepat dan efisien.

Apache PredictionIO adalah server pembelajaran mesin sumber terbuka yang digunakan untuk membuat mesin prediktif untuk tugas pembelajaran mesin apa pun. Ini mempersingkat waktu aplikasi pembelajaran mesin dari lab ke produksi dengan menggunakan templat mesin yang dapat disesuaikan yang dapat dibangun dan digunakan dengan cepat. Ini menyediakan pengumpulan data dan komponen penyajian, dan abstrak teknologi yang mendasari untuk mengekspos API yang memungkinkan pengembang untuk fokus pada komponen transformasi. Setelah server engine PredictionIO digunakan sebagai layanan web, ia dapat menanggapi permintaan dinamis secara waktu nyata.

Apache PredictionIO terdiri dari berbagai komponen.

  • Platform PredictionIO : Tumpukan pembelajaran mesin sumber terbuka yang dibangun di atas beberapa aplikasi open source canggih seperti Apache Spark, Apache Hadoop, Apache HBase, dan Elasticsearch.
  • Server Acara : Ini secara terus menerus mengumpulkan data dari server web atau server aplikasi seluler Anda dalam mode real-time atau mode batch. Data yang dikumpulkan dapat digunakan untuk melatih mesin atau untuk memberikan tampilan terpadu untuk analisis data. Server acara menggunakan Apache HBase untuk menyimpan data.
  • Server Mesin : Server mesin bertanggung jawab untuk membuat prediksi aktual. Itu membaca data pelatihan dari penyimpanan data dan menggunakan satu atau lebih algoritma pembelajaran mesin untuk membangun model prediksi. Mesin, setelah digunakan sebagai layanan web, menjawab pertanyaan yang dibuat oleh web atau aplikasi seluler menggunakan REST API atau SDK.
  • Galeri Templat : Galeri ini menawarkan berbagai jenis templat mesin yang dibuat sebelumnya. Anda dapat memilih templat yang mirip dengan use case Anda dan memodifikasinya sesuai dengan kebutuhan Anda.

Prasyarat

  • Contoh server Vultr CentOS 7 dengan setidaknya 8GB RAM. Untuk tujuan pengujian dan pengembangan, Anda dapat memilih sebuah instance dengan RAM 4GB dan memori swap 4GB lainnya .
  • Seorang pengguna sudo .

Dalam tutorial ini, kita akan menggunakan 192.0.2.1alamat IP publik dari server. Ganti semua kemunculan 192.0.2.1dengan alamat IP publik Vultr Anda.

Perbarui sistem basis Anda menggunakan panduan Cara Memperbarui CentOS 7 . Setelah sistem Anda diperbarui, lanjutkan untuk menginstal Java.

Instal Java

Banyak komponen PredictionIO membutuhkan JDK, atau Java Development Kit, versi 8 agar berfungsi. Ini mendukung OpenJDK dan Oracle Java. Dalam tutorial ini, kita akan menginstal OpenJDK versi 8.

OpenJDK dapat dengan mudah diinstal, karena paket tersedia dalam repositori YUM default.

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

Verifikasi versi Java untuk memastikannya diinstal dengan benar.

java -version

Anda akan mendapatkan hasil yang serupa.

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

Sebelum kita dapat melangkah lebih jauh, kita perlu mengatur variabel JAVA_HOMEdan JRE_HOMElingkungan. Temukan jalur absolut dari JAVA yang dapat dieksekusi di sistem Anda.

readlink -f $(which java)

Anda akan melihat output yang serupa.

[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

Sekarang, set JAVA_HOMEdan JRE_HOMEvariabel lingkungan sesuai dengan jalur direktori 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

Jalankan bash_profilefile.

source ~/.bash_profile

Sekarang Anda dapat menjalankan echo $JAVA_HOMEperintah untuk memeriksa apakah variabel lingkungan diatur.

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

Pasang PredictionIO

Apache menyediakan file sumber PredictionIO yang dapat diunduh dan dikompilasi secara lokal. Buat direktori sementara baru untuk mengunduh dan mengkompilasi file sumber.

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

Unduh arsip file sumber PredictionIO menggunakan situs Apache Mirror apa pun .

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

Ekstrak arsip dan kompilasi sumber untuk membuat distribusi PredictionIO.

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

Distribusi di atas akan dibangun terhadap versi default dari dependensi, yang Scala 2.11.8, Spark 2.1.1, Hadoop 2.7.3dan ElasticSearch 5.5.2. Tunggu pembangunan selesai, dibutuhkan sekitar sepuluh menit untuk menyelesaikan tergantung pada kinerja sistem Anda.

Catatan : Anda bebas menggunakan versi dependensi terbaru yang didukung, tetapi Anda mungkin melihat beberapa peringatan selama pembangunan karena beberapa fungsi mungkin tidak digunakan lagi. Jalankan ./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3, ganti nomor versi sesuai pilihan Anda.

Setelah pembangunan selesai, Anda akan melihat pesan berikut di bagian akhir.

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

File biner PredictionIO akan disimpan dalam PredictionIO-0.12.0-incubating.tar.gzarsip. Ekstrak arsip di /optdirektori dan berikan kepemilikan kepada pengguna saat ini.

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

Atur PIO_HOMEvariabel lingkungan.

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

Instal Ketergantungan yang Diperlukan

Buat direktori baru untuk menginstal dependensi PredictionIO seperti HBase, Sparkdan Elasticsearch.

mkdir /opt/PredictionIO-0.12.0-incubating/vendors

Unduh Scala versi 2.11.8 dan ekstrak ke vendorsdirektori.

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

Unduh Apache Hadoop versi 2.7.3 dan ekstrak ke vendorsdirektori.

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 adalah mesin pemrosesan default untuk PredictionIO. Unduh Spark versi 2.1.1 dan ekstrak ke vendorsdirektori.

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

Unduh Elasticsearch versi 5.5.2 dan ekstrak ke vendorsdirektori.

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

Terakhir, unduh HBase versi 1.2.6 dan ekstrak ke vendorsdirektori.

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

Buka hbase-site.xmlfile konfigurasi untuk mengkonfigurasi HBase agar berfungsi di lingkungan mandiri.

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

Temukan blok konfigurasi kosong dan ganti dengan konfigurasi berikut.

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

Direktori data akan dibuat secara otomatis oleh HBase. Edit file lingkungan HBase untuk mengatur JAVA_HOMEpath.

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

Batalkan nomor baris 27 dan setel JAVA_HOMEke jalur jre, instalasi Java Anda. Anda dapat menemukan path ke JAVA yang dapat dieksekusi menggunakan readlink -f $(which java)perintah.

# 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

Juga, komentari nomor baris 46 dan 47 karena tidak diperlukan untuk 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"

Konfigurasikan Lingkungan PredictionIO

Konfigurasi default dalam file lingkungan PredictionIO pio-env.shmengasumsikan bahwa kita menggunakan PostgreSQL atau MySQL. Karena kami telah menggunakan HBase dan Elasticsearch, kami perlu memodifikasi hampir setiap konfigurasi dalam file. Yang terbaik untuk mengambil cadangan file yang ada dan membuat file lingkungan PredictionIO baru.

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

Sekarang buat file baru untuk konfigurasi lingkungan PredictionIO.

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

Populasikan file dengan konfigurasi berikut.

# 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

Simpan file dan keluar dari editor.

Buka file konfigurasi Elasticsearch.

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

Batalkan komentar pada baris dan setel nama cluster persis sama dengan yang disediakan dalam file lingkungan PredictionIO. Nama cluster diatur ke piodalam konfigurasi di atas.

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

Sekarang tambahkan $PIO_HOME/bindirektori ke dalam variabel PATH sehingga executable PredictionIO dieksekusi secara langsung.

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

Pada titik ini, PredictionIO berhasil diinstal di server Anda.

Mulai PrediksiIO

Anda dapat memulai semua layanan di PredictionIO seperti Elasticsearch, HBase dan server Acara menggunakan satu perintah.

pio-start-all

Anda akan melihat output berikut.

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

Gunakan perintah berikut untuk memeriksa status server PredictionIO.

pio status

Anda akan melihat output berikut.

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

Seperti yang dapat kita lihat dalam pesan di atas, sistem kami siap digunakan untuk mengimplementasikan templat mesin dan memperkirakan data.

Menerapkan Templat Mesin

Beberapa templat mesin yang siap pakai tersedia di Galeri Template PredictionIO yang dapat dengan mudah dipasang di server PredictionIO. Anda bebas menelusuri daftar templat mesin untuk menemukan templat yang dekat dengan kebutuhan Anda atau Anda dapat menulis mesin sendiri.

Dalam tutorial ini, kami akan menerapkan E-Commerce Recommendationtemplat mesin untuk menunjukkan fungsionalitas server PredictionIO menggunakan beberapa data sampel. Templat mesin ini memberikan beberapa rekomendasi pribadi kepada pengguna di situs web e-commerce. Secara default, ia memiliki fitur seperti mengecualikan stok barang habis atau memberikan rekomendasi kepada pengguna yang mendaftar setelah model dilatih. Selain itu, secara default, templat mesin mengambil tampilan pengguna dan membeli acara, item dengan kategori dan properti, serta daftar item yang tidak tersedia. Setelah mesin dilatih dan digunakan, Anda dapat mengirim kueri dengan id pengguna dan jumlah item yang akan direkomendasikan. Output yang dihasilkan akan menjadi daftar peringkat id barang yang direkomendasikan.

Instal Git, karena akan digunakan untuk mengkloning repositori.

cd ~    
sudo yum -y install git

Kloning templat mesin E-Commerce Recommender pada sistem Anda.

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

Buat aplikasi baru untuk mesin template Rekomendasi E-Commerce. Setiap aplikasi di PredictionIO digunakan untuk menyimpan data untuk situs web yang terpisah. Jika Anda memiliki beberapa situs web, maka Anda dapat membuat beberapa aplikasi untuk menyimpan data setiap situs web ke dalam aplikasi yang berbeda. Anda bebas memilih nama apa pun untuk aplikasi Anda.

cd MyEComRecomm/
pio app new myecom

Anda akan melihat output berikut.

[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

Output di atas juga berisi kunci akses yang akan digunakan untuk mengotentikasi saat mengirim data input ke server acara.

Anda selalu dapat menemukan kunci akses bersama dengan daftar aplikasi yang tersedia dengan menjalankan.

pio app list

Anda akan melihat output berikut yang berisi daftar aplikasi dan tombol akses.

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

Sekarang kami telah membuat aplikasi baru, kami akan menambahkan beberapa data ke dalamnya. Dalam lingkungan produksi, Anda ingin secara otomatis mengirim data ke server peristiwa dengan mengintegrasikan API server peristiwa ke dalam aplikasi. Untuk mempelajari cara kerja PredictionIO, kami akan mengimpor beberapa data sampel ke dalamnya. Mesin template menyediakan skrip Python yang dapat dengan mudah digunakan untuk mengimpor data sampel ke server acara.

Instal Python pip.

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

Instal PredictionIO Python SDK menggunakan pip.

sudo pip install predictionio

Jalankan skrip Python untuk menambahkan data sampel ke server acara.

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

Pastikan untuk mengganti kunci akses dengan kunci akses Anda yang sebenarnya. Anda akan melihat output yang serupa.

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

Skrip di atas mengimpor 10 pengguna, 50 item dalam 6 kategori dan beberapa peristiwa pembelian dan tampilan secara acak. Untuk memeriksa apakah acara diimpor atau tidak, Anda dapat menjalankan kueri berikut.

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

Output akan menampilkan daftar semua peristiwa yang diimpor dalam format JSON.

Sekarang, buka engine.jsonfile ke editor. File ini berisi konfigurasi mesin.

nano engine.json

Temukan kemunculan appNamedan ganti nilainya dengan nama sebenarnya dari aplikasi yang Anda buat sebelumnya.

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

Bangun aplikasinya.

pio build --verbose

Jika Anda tidak ingin melihat pesan log, hapus --verboseopsi. Membangun templat mesin untuk pertama kalinya akan memakan waktu beberapa menit. Anda akan melihat output yang sama ketika build berhasil selesai.

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

Latih mesinnya sekarang. Selama pelatihan, mesin menganalisis kumpulan data dan melatih dirinya sendiri sesuai dengan algoritma yang disediakan.

pio train

Sebelum kita menyebarkan aplikasi, kita perlu membuka port 8000agar status aplikasi dapat dilihat di Web GUI. Selain itu, situs web dan aplikasi yang menggunakan server acara akan mengirim dan menerima pertanyaan mereka melalui port ini.

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

Sekarang Anda dapat menggunakan mesin PredictionIO.

pio deploy

Perintah di atas akan menggunakan engine dan server web bawaan pada port 8000untuk menanggapi pertanyaan dari situs web dan aplikasi e-commerce. Anda akan melihat output berikut di akhir setelah mesin berhasil digunakan.

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

Anda dapat memverifikasi status mesin dengan membuka http://192.0.2.1:8000peramban modern apa pun. Pastikan Anda mengganti 192.0.2.1dengan alamat IP Vultr Anda yang sebenarnya.

Ini menandakan bahwa templat mesin untuk rekomendasi E-Commerce digunakan dan berjalan dengan sukses. Anda dapat meminta templat mesin untuk mengambil lima rekomendasi bagi pengguna u5dengan menjalankan kueri berikut dalam sesi terminal baru.

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

Anda akan melihat rekomendasi yang dihasilkan untuk pengguna 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}]}

Membungkus

Selamat, Apache PredictionIO telah berhasil digunakan di server Anda. Anda sekarang dapat menggunakan API dari server acara untuk mengimpor data ke mesin untuk memprediksi rekomendasi bagi pengguna. Jika mau, Anda bisa menggunakan beberapa templat lain dari galeri templat. Pastikan untuk memeriksa templat mesin Universal Recommender yang dapat digunakan di hampir semua kasus penggunaan termasuk e-commerce, berita atau video.



Leave a Comment

Cara Memasang Graylog Server pada CentOS 7

Cara Memasang Graylog Server pada CentOS 7

Menggunakan Sistem yang Berbeda? Graylog server adalah perangkat lunak manajemen log sumber terbuka siap pakai perusahaan. Ia mengumpulkan log dari berbagai sumber dan menganalisis

Atur Akun Pengguna khusus SFTP di CentOS 7

Atur Akun Pengguna khusus SFTP di CentOS 7

Pada kesempatan tertentu, Administrator Sistem mungkin perlu membuat akun pengguna dan membatasi akses mereka untuk hanya mengelola file mereka sendiri melalui sFTP, tetapi tidak

Cara Memasang Chamilo 1.11.8 pada CentOS 7

Cara Memasang Chamilo 1.11.8 pada CentOS 7

Menggunakan Sistem yang Berbeda? Chamilo adalah sistem manajemen pembelajaran (LMS) gratis dan open source yang banyak digunakan untuk pendidikan online dan kolaborasi tim

Menginstal Komunitas Odoo 9 di CentOS 7

Menginstal Komunitas Odoo 9 di CentOS 7

Odoo, sebelumnya dikenal sebagai OpenERP, adalah platform bisnis ERP open source yang terkenal. Perusahaan dengan ukuran berapa pun dapat mengambil manfaat dari Odoo, berkat lisnya yang berlimpah

Cara Memasang CMS CMS 2.0 pada CentOS 7 LAMP VPS

Cara Memasang CMS CMS 2.0 pada CentOS 7 LAMP VPS

Menggunakan Sistem yang Berbeda? Couch CMS adalah Content Management System (CMS) sederhana dan fleksibel, gratis dan open source yang memungkinkan desainer web untuk mendesain

Cara Memasang NextCloud 9 pada CentOS 7

Cara Memasang NextCloud 9 pada CentOS 7

NextCloud, seperti namanya, adalah alternatif yang menjanjikan dari solusi hosting file sumber terbuka lainnya OwnCloud. Dalam artikel ini, saya akan menunjukkan kepada Anda ho

Menginstal Netdata di CentOS 7

Menginstal Netdata di CentOS 7

Menggunakan Sistem yang Berbeda? Netdata adalah bintang yang naik di bidang pemantauan metrik sistem waktu-nyata. Dibandingkan dengan alat lain dengan jenis yang sama, Netdata:

Cara Menginstal ERPNext Open Source ERP pada CentOS 7

Cara Menginstal ERPNext Open Source ERP pada CentOS 7

Menggunakan Sistem yang Berbeda? ERP atau Enterprise Resource Planning adalah rangkaian aplikasi perusahaan yang digunakan untuk mengelola proses bisnis inti. ERPNext adalah gratis

Menyiapkan SA-MP San Andreas Multiplayer Server pada CentOS 6

Menyiapkan SA-MP San Andreas Multiplayer Server pada CentOS 6

Selamat datang di tutorial Vultr lainnya. Di sini, Anda akan belajar cara menginstal dan menjalankan server SAMP. Panduan ini ditulis untuk CentOS 6. Prasyarat Anda akan tahu

Instal Elgg pada CentOS 7

Instal Elgg pada CentOS 7

Menggunakan Sistem yang Berbeda? Elgg adalah mesin jejaring sosial open source yang memungkinkan penciptaan lingkungan sosial seperti jejaring sosial kampus

Menginstal Bolt CMS pada CentOS 7

Menginstal Bolt CMS pada CentOS 7

Bolt adalah CMS open source yang ditulis dalam PHP. Kode sumber baut di-host di GitHub. Panduan ini akan menunjukkan kepada Anda cara menginstal Bolt CMS pada CentOS 7 Vult yang baru

Cara Memasang Bugzilla 5.0.x di CentOS 7

Cara Memasang Bugzilla 5.0.x di CentOS 7

Bugzilla adalah sistem pelacakan bug sumber bebas dan terbuka yang banyak digunakan oleh berbagai vendor untuk terus meningkatkan softwar mereka

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Menyebarkan Kubernet Dengan Kubeadm di CentOS 7

Ikhtisar Artikel ini dimaksudkan untuk membantu Anda mendapatkan kluster Kubernet dan menjalankan dengan kubeadm dalam waktu singkat. Panduan ini akan menggunakan dua server, pada

Setup Sails.js untuk Pengembangan pada CentOS 7

Setup Sails.js untuk Pengembangan pada CentOS 7

Menggunakan Sistem yang Berbeda? Pendahuluan Sails.js adalah kerangka kerja MVC untuk Node.js, mirip dengan Ruby on Rails. Itu membuat untuk mengembangkan aplikasi modern ver

Menyiapkan Server Half Life 2 Pada CentOS 6

Menyiapkan Server Half Life 2 Pada CentOS 6

Tutorial ini akan membahas proses pemasangan server game Half Life 2 pada Sistem CentOS 6. Langkah 1: Menginstal prasyarat Untuk mengatur ou

Alat Pemantauan Yang Lebih Baik Untuk Ubuntu Dan CentOS

Alat Pemantauan Yang Lebih Baik Untuk Ubuntu Dan CentOS

Pendahuluan Sistem Linux dilengkapi dengan alat pemantauan secara default seperti top, df, dan du yang membantu memonitor proses dan ruang disk. Namun sering kali, mereka ar

Cara Memasang Kolab Groupware di CentOS 7

Cara Memasang Kolab Groupware di CentOS 7

Menggunakan Sistem yang Berbeda? Kolab Groupware adalah aplikasi groupware berbasis web gratis dan open source. Fitur-fiturnya terdiri dari komunikasi email, acara

Cara Memasang Koel di CentOS 7

Cara Memasang Koel di CentOS 7

Menggunakan Sistem yang Berbeda? Koel adalah aplikasi streaming audio pribadi sederhana berbasis web yang ditulis dalam Vue di sisi klien dan Laravel di sisi server. Koe

Cara Memasang GDB pada CentOS 6

Cara Memasang GDB pada CentOS 6

GDB adalah debugger untuk C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada, dan Modula-2. CentOS didasarkan pada RHEL (Red Hat Enterprise Linux). Salah satu th

Menginstal Akaunting di CentOS 7

Menginstal Akaunting di CentOS 7

Menggunakan Sistem yang Berbeda? Akaunting adalah perangkat lunak akuntansi sumber terbuka dan gratis yang dirancang untuk usaha kecil dan freelancer. Itu dibangun kecerdasan

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Pembaruan Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Masalah Daripada Menyelesaikan

Baru-baru ini Apple merilis macOS Catalina 10.15.4 pembaruan suplemen untuk memperbaiki masalah tetapi tampaknya pembaruan menyebabkan lebih banyak masalah yang mengarah ke bricking mesin mac. Baca artikel ini untuk mempelajari lebih lanjut