Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Pendekatan tradisional untuk analisis data tidak mungkin digunakan apabila set data mencapai ukuran tertentu. Alternatif moden untuk menganalisis kumpulan data yang besar adalah menggunakan kaedah pembelajaran mesin. Pembelajaran mesin dapat menghasilkan hasil yang tepat apabila menggunakan algoritma yang pantas dan cekap.
Apache PredictionIO adalah pelayan pembelajaran mesin sumber terbuka yang digunakan untuk membuat mesin ramalan untuk setiap tugas pembelajaran mesin. Ini memendekkan waktu aplikasi pembelajaran mesin dari makmal ke produksi dengan menggunakan templat mesin yang dapat disesuaikan dan dapat dibangun dan digunakan dengan cepat. Ini menyediakan pengumpulan data dan komponen penyampaian, dan abstrak teknologi yang mendasari untuk mendedahkan API yang membolehkan pemaju fokus pada komponen transformasi. Setelah pelayan mesin PredictionIO digunakan sebagai perkhidmatan web, ia dapat menanggapi pertanyaan dinamik dalam masa nyata.
Apache PredictionIO terdiri daripada komponen yang berbeza.
Dalam tutorial ini, kami akan menggunakan 192.0.2.1
sebagai alamat IP awam pelayan. Ganti semua kejadian 192.0.2.1
dengan alamat IP awam Vultr anda.
Kemas kini sistem asas anda menggunakan panduan Cara Mengemas kini CentOS 7 . Apabila sistem anda telah dikemas kini, teruskan untuk memasang Java.
Sebilangan besar komponen PredictionIO memerlukan JDK, atau Java Development Kit, versi 8 untuk berfungsi. Ia menyokong OpenJDK dan Oracle Java. Dalam tutorial ini, kami akan memasang OpenJDK versi 8.
OpenJDK dapat dipasang dengan mudah, kerana pakej ini tersedia di repositori YUM lalai.
sudo yum -y install java-1.8.0-openjdk-devel
Sahkan versi Java untuk memastikan ia dipasang dengan betul.
java -version
Anda akan mendapat output 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 pemboleh ubah JAVA_HOME
dan JRE_HOME
persekitaran. Cari laluan mutlak JAVA yang dapat dilaksanakan dalam 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_HOME
dan JRE_HOME
pemboleh ubah persekitaran mengikut jalan 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_profile
fail.
source ~/.bash_profile
Sekarang anda boleh menjalankan echo $JAVA_HOME
perintah untuk memeriksa apakah pemboleh ubah persekitaran ditetapkan.
[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
Apache menyediakan fail sumber PredictionIO yang boleh dimuat turun dan disusun secara tempatan. Buat direktori sementara baru untuk memuat turun dan menyusun fail sumber.
mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles
Muat turun arkib fail sumber PredictionIO menggunakan mana-mana laman Apache Mirror .
wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz
Ekstrak arkib dan susun sumbernya untuk membuat sebaran PredictionIO.
tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh
Pengagihan di atas akan dibina terhadap versi lalai daripada kebergantungan, yang Scala 2.11.8
, Spark 2.1.1
, Hadoop 2.7.3
dan ElasticSearch 5.5.2
. Tunggu hingga pembinaan selesai, akan memakan masa sekitar sepuluh minit untuk diselesaikan bergantung pada prestasi sistem anda.
Catatan : Anda bebas menggunakan versi kebergantungan terbaru yang disokong, tetapi anda mungkin melihat beberapa amaran semasa pembuatan kerana 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 nombor versi mengikut pilihan anda.
Setelah binaan berjaya diselesaikan, anda akan melihat mesej berikut di 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
Fail perduaan PredictionIO akan disimpan dalam PredictionIO-0.12.0-incubating.tar.gz
arkib. Ekstrak arkib dalam /opt
direktori dan berikan hak milik kepada pengguna semasa.
sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating
Tetapkan PIO_HOME
pemboleh ubah persekitaran.
echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile
Buat direktori baru untuk memasang pergantungan PredictionIO seperti HBase
, Spark
dan Elasticsearch
.
mkdir /opt/PredictionIO-0.12.0-incubating/vendors
Muat turun Scala versi 2.11.8 dan ekstrak ke dalam vendors
direktori.
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
Muat turun Apache Hadoop versi 2.7.3 dan ekstrak ke dalam vendors
direktori.
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 pemprosesan lalai untuk PredictionIO. Muat turun Spark versi 2.1.1 dan ekstrak ke dalam vendors
direktori.
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
Muat turun Elasticsearch versi 5.5.2 dan ekstrak ke dalam vendors
direktori.
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
Akhirnya, muat turun HBase versi 1.2.6 dan ekstrak ke dalam vendors
direktori.
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.xml
fail konfigurasi untuk mengkonfigurasi HBase agar berfungsi dalam persekitaran yang berdiri sendiri.
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml
Cari blok konfigurasi yang kosong dan gantikan 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 automatik oleh HBase. Edit fail persekitaran HBase untuk menetapkan JAVA_HOME
jalan.
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh
Uncomment line number 27 dan tetapkan JAVA_HOME
ke jalan jre
, pemasangan Java anda. Anda boleh mencari jalan ke JAVA yang boleh dilaksanakan menggunakan readlink -f $(which java)
arahan.
# 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, komen nombor baris 46 dan 47 kerana ia 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"
Konfigurasi lalai dalam fail persekitaran PredictionIO pio-env.sh
mengandaikan bahawa kita menggunakan PostgreSQL atau MySQL. Oleh kerana kami telah menggunakan HBase dan Elasticsearch, kami perlu mengubah hampir setiap konfigurasi dalam fail. Sebaiknya ambil sandaran fail yang ada dan buat fail persekitaran 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 fail baru untuk konfigurasi persekitaran PredictionIO.
nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh
Tandakan fail 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 fail dan keluar dari editor.
Buka fail konfigurasi Elasticsearch.
nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml
Tanggalkan baris dan tetapkan nama kluster agar sama dengan yang disediakan dalam fail persekitaran PredictionIO. Nama kluster ditetapkan pio
dalam konfigurasi di atas.
# Use a descriptive name for your cluster:
#
cluster.name: pio
Sekarang tambahkan $PIO_HOME/bin
direktori ke dalam pemboleh ubah PATH sehingga pelaksanaan PredictionIO dijalankan secara langsung.
echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile
Pada ketika ini, PredictionIO berjaya dipasang di pelayan anda.
Anda boleh memulakan semua perkhidmatan di PredictionIO seperti pelayan Elasticsearch, HBase dan Event menggunakan satu arahan.
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 arahan berikut untuk memeriksa status pelayan 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 kita siap digunakan untuk menerapkan templat mesin dan memprediksi data.
Beberapa templat enjin yang siap digunakan terdapat di Galeri Templat PredictionIO yang boleh dipasang dengan mudah di pelayan PredictionIO. Anda bebas untuk melihat senarai templat enjin untuk mencari yang sesuai dengan keperluan anda atau anda boleh menulis mesin anda sendiri.
Dalam tutorial ini, kami akan menerapkan E-Commerce Recommendation
templat enjin untuk menunjukkan fungsi pelayan PredictionIO menggunakan beberapa contoh data. Templat enjin ini memberikan beberapa cadangan peribadi kepada pengguna di laman web e-dagang. Secara lalai, ia mempunyai ciri seperti mengecualikan item stok atau memberi cadangan kepada pengguna yang mendaftar setelah model dilatih. Juga, secara lalai, templat mesin mengambil pandangan pengguna dan membeli acara, item dengan kategori dan sifat dan senarai item yang tidak tersedia. Setelah mesin dilatih dan digunakan, anda dapat mengirim pertanyaan dengan id pengguna dan jumlah item yang akan disyorkan. Output yang dihasilkan akan menjadi senarai peringkat id item yang disyorkan.
Pasang Git, kerana ia akan digunakan untuk mengklon repositori.
cd ~
sudo yum -y install git
Klon 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 templat E-Commerce Recommendation. Setiap aplikasi di PredictionIO digunakan untuk menyimpan data untuk laman web yang terpisah. Sekiranya anda mempunyai banyak laman web, maka anda boleh membuat beberapa aplikasi untuk menyimpan data setiap laman web ke dalam aplikasi yang berbeza. Anda bebas memilih mana-mana nama 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 mengandungi kunci akses yang akan digunakan untuk mengesahkan ketika mengirim data input ke pelayan acara.
Anda sentiasa dapat mencari kunci akses bersama dengan senarai aplikasi yang tersedia dengan menjalankan.
pio app list
Anda akan melihat output berikut yang mengandungi senarai aplikasi dan kunci 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 padanya. Dalam lingkungan produksi, anda ingin mengirim data ke pelayan acara secara otomatis dengan mengintegrasikan API pelayan acara ke dalam aplikasi. Untuk mengetahui bagaimana PredictionIO berfungsi, kami akan mengimport beberapa sampel data ke dalamnya. Mesin templat menyediakan skrip Python yang dapat dengan mudah digunakan untuk mengimport data sampel ke pelayan acara.
Pasang Python pip.
sudo yum -y install python-pip
sudo pip install --upgrade pip
Pasang PredictionIO Python SDK menggunakan pip.
sudo pip install predictionio
Jalankan skrip Python untuk menambahkan data sampel ke pelayan acara.
python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Pastikan untuk mengganti kunci akses dengan kunci akses sebenar anda. 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 mengimport 10 pengguna, 50 item dalam 6 kategori dan beberapa acara pembelian dan pandangan secara rawak. Untuk memeriksa sama ada peristiwa diimport atau tidak, anda boleh menjalankan pertanyaan berikut.
curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"
Hasilnya akan menunjukkan kepada anda senarai semua peristiwa yang diimport dalam format JSON.
Sekarang, buka engine.json
fail ke editor. Fail ini mengandungi konfigurasi enjin.
nano engine.json
Cari kedua kejadian appName
dan ganti nilainya dengan nama sebenar aplikasi yang telah 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
}
}
]
}
Bina aplikasi.
pio build --verbose
Sekiranya anda tidak mahu melihat mesej log, hapus --verbose
pilihannya. Membina templat enjin untuk pertama kalinya akan memakan masa beberapa minit. Anda akan melihat output yang serupa apabila binaan berjaya diselesaikan.
[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 enjin sekarang. Semasa latihan, mesin menganalisis set data dan melatihnya sendiri mengikut algoritma yang disediakan.
pio train
Sebelum menyebarkan aplikasi, kita perlu membuka port 8000
agar status aplikasi dapat dilihat di Web GUI. Juga, laman web dan aplikasi yang menggunakan pelayan acara akan menghantar dan menerima pertanyaan mereka melalui port ini.
sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
Sekarang anda boleh menggunakan enjin PredictionIO.
pio deploy
Perintah di atas akan menggunakan enjin dan pelayan web terpasang di port 8000
untuk menjawab pertanyaan dari laman web dan aplikasi e-dagang. Anda akan melihat output berikut pada akhir apabila enjin berjaya 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 boleh mengesahkan status enjin dengan http://192.0.2.1:8000
menggunakan penyemak imbas moden. Pastikan anda mengganti 192.0.2.1
dengan alamat IP Vultr sebenar anda.
Ini menandakan bahawa templat mesin untuk cadangan E-Commerce berjaya dan berjaya dijalankan. Anda boleh meminta templat mesin untuk mengambil lima cadangan untuk pengguna u5
dengan menjalankan pertanyaan berikut dalam sesi terminal baru.
curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json
Anda akan melihat cadangan 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}]}
Tahniah, Apache PredictionIO berjaya disebarkan di pelayan anda. Anda kini boleh menggunakan API pelayan acara untuk mengimport data ke dalam mesin untuk meramalkan cadangan untuk pengguna. Sekiranya anda mahu, anda boleh menggunakan beberapa templat lain dari galeri templat. Pastikan anda melihat templat enjin Pencadangkan Sejagat yang boleh digunakan dalam hampir semua kes penggunaan termasuk e-dagang, berita atau video.
Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1
Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.
Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.
Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.
Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.
CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?
Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.
Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!
Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.
Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut