Prediction.io使ってみた

Prediction.ioっていうのは機械学習をするオープンソースサーバーです。機械学習をまったく分かってない私でもうまく使えるくらい簡単だから助かります。

なにができるのかって言うと、個別のユーザーが見た商品からおすすめ商品のリストを作るとか、関連商品リストとか、あるいは評価や人気などでランキングを作るとか。そして私はそれでButaiの関連聖地を作ってみた。

Prediction.ioサーバーの構造は大体こんな感じ:

Events --> [Event server] --(train + deploy)--> [Engine] --> Prediction
  1. ユーザーがなにかをやったら、Eventサーバーにそれを送信する、例えば「ユーザー1が商品10を見た」「ユーザー2は商品5をふぁぼった」とか
  2. それから予測エンジンを作って、イベントサーバーがもらったデータで勉強させる。
  3. そして予測エンジンにリクエストを送れば、おすすめのリストが貰えます。

Eventサーバーに送信する

http://docs.prediction.io/datacollection/eventapi/

pio eventserverを実行すれば、イベントサーバーが起動されます。 送信って言ってもただのリクエストですから、SDKなくても簡単に送信できます。 まあでもSDKがあるなら使うほうが便利ですね、公式SDKはPHP/Python/Ruby/Javaしかないけど、ButaiはCoffeeScriptで書かれたから、非公式のpredictionio-driverを使いました。

勉強させる

http://docs.prediction.io/deploy/

テンプレートを選んでエンジンを勉強させる。テンプレートにはアルゴリズムが付いてます、Butaiで使ったのはSimilar productですけど、ランキングとか作りたいなら別のテンプレートを選べばいいです。 基本的な場合はそれだけで動くはずだけど、もっと高級の機能が欲しいければ自分でそのテンプレートを改修するしかないです。 あとはpio build; pio train; pio deployで勉強させてデプロイをする。

エンジンから予測をもらう

テンプレートごとに予測エンジンに送るリクエストのフォーマットが違うけど、私が使ったSimilar productだとこんな感じのjsonを送ります。

{ "items": ["p1"], "categories":["a1"], "num": 4 }

聖地1に似てる他の聖地を四つ貰う意味です、a1って言うのは作品の番号で、この場合は偽物語です。もちろん、複数の聖地と複数の作品を同時に検索することもできます、むしろそっちのほうがエンジンの本当の力を発揮できる気がします…

というわけで、機械学習をまったくわからない私でも使えるくらい簡単だからみんなも興味があったら使ってみよう。

関連のやつ