To be happy as a engineer

Web開発、機械学習・・・

DatoのGraphLab Create : 機械学習ライブラリ

目次

「GraphLab Create」とは

Dato(正式には GraphLab, Inc.)という企業が運営しているpython用の機械学習ライブラリです。Courseraの機械学習のコース(以下URL)

Specialization | Coursera

の中で僕は知りました。このコースの講師はワシントン大学の教授でかつ、DatoのCEOもしてます。

python用の機械学習ライブラリといえばscikit-learnが有名ですが、初学者の僕が使った感じscikit-learnより簡単に使えます。ライブラリとして使いやすく、わかりやすく設計されている印象があります。逆に言えば拡張性や柔軟性には疑問がありますが現在の僕にはわかりません。

ライブラリの種類

Rやpandasではdataframeを使いますが、それに対応するのがSFrameというデータ型です。基本的にデータを扱う場合はこれらのデータ型に変換します。 ライブラリの種類としては基本的な機械学習手法(回帰や分類)はもちろんのこと、recommender、sentiment analysis、topic model、deep learningもサポートしています。以下のドキュメンテーションをざっと見ればどのような事ができるのかわかると思います。

GraphLab Create API Documentation — GraphLab Create API 1.8.4 documentation

僕はレコメンダーに興味があるので以下の以下でレコメンダーに関するDatoが用意しているギャラリー(実践的なチュートリアルみたいなもの)をまとめておきます。

GraphLab CreateのDocumentation, user guide, how-to, gallery

GraphLab CreateのよいところとしてDocumentなど学習を進めていく上で必要不可欠なサポートが充実しています。

レコメンダー関連のGalleryまとめ

Galleryはデータの準備からレコメンダーであれば推薦、評価まで説明してくれています。python、ipython notebook用のプログラムをダウンロードできます。

レコメンダー用の基本的な機能を紹介。graphlab.recommender.util.random_split_by_userはhold-out-data(validation_set)を作る時に便利そう。

dataset : 評価値付きの映画データ

algorithm : baselineをpopularity_recommender(予測値はアイテム毎の評価値の平均)として、factorization_recommender、ranking_factorization_recommenderのRMSEを比較。アクション好きのユーザとロマンス好きのユーザをデータセットに加えて、 彼らにアイテムをレコメンドする。

dataset : 音楽データ(ratingなし)

algorithm : popularity_recommender、item_similarity_recommender

特にratingがない場合のimplicitなデータのみの場合のレコメンダーのつくり方。createする際にtargetを指定すればrmseを計算できるが、そうでない場合はprecisionとrecallのみの評価になる。 graphlab.recommender.item_similarity_recommender.createはデフォルトではjaccordが類似度の計算に使われるので注意。他にはcosine、peasonが使える(implicitな場合の計算方法はよく理解していない)。最後の方ではユーザが実際に見た映画とレコメンデーションリストの内容を比べるのでそこは面白いです。

レコメンダー生成、トピックモデル生成の基本的な構文を紹介。

今後

今回はGraphlab Createのレコメンダー関連のGalleryをまとめました。これからGallerを分類したいです。