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。
參考
Quick Start - Recommendation Engine Template