[PredictionIO]how to build a Recommendation engine via predictionIO Machine Learning Server

Apach PredictionIO是一個用scala語言編寫的open source,

提供RESTFul API幫助我們方便使用recommendation engine,

也有提供client SDK如Java、Python,PHP,同時也是一個可擴展的Machine Learning應用(支援Spark MLib),

並提供各種Engine模板、演算法..等,也相當容易和Spark、MLlib、Hbase、MySQL、Hadoop、Elasticsearch搭配,

簡化並加速可擴展Machine Learning基礎建置管理,透過PredictionIO我們可以從零開始並快速建立一個推薦引擎。

PredictionIO架構

PredictionIO Platform:Machine Learning堆疊,用於建構、評估和部署機器學習演算法引擎。

Event Server:Machine Learning分析處理,用來整合來自多個平台(Platform)的Event,

向PredictionIO Platform提供每個APP資料,以利進行模型的訓練和評估。

Engine:訓練模型,並且將結果以 Restful API 提供查詢(有提供多種不同的Machine Learning的引擎模板),

Engine會讀取訓練資料,並建構預測模型同時部屬為web 服務。

安裝建議參考Installing Apache PredictionIO,因為版本相容性太重要了,

我當初以為upgrade會比較輕鬆快速,透過docker拉現有的0.10.0版本準備升級,

但這過程我遇到的錯誤多到數不清,雖然最後upgrade成功,但過程幾乎和重新安裝沒啥兩樣了。

 

啟動 PredictionIO

pio-start-all

pio status

確認PredictionIO平台正常(我安裝SCALA_VERSION= 2.11.8、SPARK_VERSION=2.1.1、ELASTICSEARCH_VERSION=1.7.6、HADOOP_VERSION=2.7.3、ZOOKEEPER_VERSION=3.3.6)

 

下載推薦引擎模板

git clone https://github.com/apache/incubator-predictionio-template-recommender.git MyRecommendation
cd MyRecommendation
pio app new MyApp1

access key須保存,後面存取都會需要該key(可透過pio app list查詢)。

 

Import data

curl https://raw.githubusercontent.com/apache/spark/master/data/mllib/sample_movielens_data.txt --create-dirs -o data/sample_movielens_data.txt
python3 data/import_eventserver.py --access_key $yourkey

 

編譯引擎

pio build –verbose

順利的話,你應該會看到your engine is ready for traniing。

 

訓練模型

pio train

順利的話,你應該會看到Training completed successfullly。

 

部署推薦引擎為web 服務

pio deploy

順利的話,透過browser開啟引擎API網址,你可以看到PredictionIO相關資訊,後面我將好好來玩玩Machine Learning J。

 

參考

What is Apache PredictionIO?

PredictionIO - A Quick Intro

Quick Start - Recommendation Engine Template

Frequently Asked Questions

Installing Apache PredictionIO

Prediction IO docker recommendation engine example