Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Jubakit の紹介

12,414 views

Published on

Jubatus Casual Talks #4 (2016-06-18) の発表資料です。

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Jubakit の紹介

  1. 1. Jubakit の紹介 Kenichi Maehashi Jubatus Casual Talks #4 June 18, 2016
  2. 2. INTRODUCTION TO JUBAKIT Jubakit とは ▸ Jubatus を利⽤したデータ分析をもっと便利にする Python モジュール ▸ scikit-learn との連携や外部データソースの取り込みなど が簡単に⾏える ▸ Python 2.6 以降, 3.2 以降をサポート ▸ Jubatus 0.8.0 以降で利⽤可能
  3. 3. INTRODUCTION TO JUBAKIT モチベーション ▸ 機械学習を使⽤したデータ分析では、チューニングと精度 測定を繰り返し⾏うことが⼀般的 ▸ チューニングの要素は多岐に渡る ▸ データ前処理、特徴選択、特徴抽出、機械学習アルゴリズム、ハイパーパラメタ、… 様々なチューニングのバリエーションを 迅速に試⾏するためのフレームワークが必要
  4. 4. INTRODUCTION TO JUBAKIT Jubakit のゴール ▸ データ分析の現場でよく⽤いられる scikit-learn の機能を Jubatus で も使えるようにすることで、チューニングフェーズの作業を加速する ▸ クロスバリデーションや精度指標の算出など、学習モデルの評価に役 ⽴つ機能 ▸ 組み込みデータセットや⼈⼯データの⽣成など、Jubatus を使って みる (動作を検証する) 際に役⽴つ機能 ▸ Jubatus のアーキテクチャ (RPC 通信, プロセス起動, 設定ファイル, etc.) を隠蔽することで、チューニングに集中できる環境 (インタフェー ス) を提供する
  5. 5. INTRODUCTION TO JUBAKIT Jubatus を使ったデータ分析: これまで 1. Jubatus サーバを起動 2. Jubatus クライアントを実⾏ 3. 結果を集計して精度指標を算出 4. チューニングを⾏う ‣ Jubatus クライアントを修正 ‣ Jubatus 設定ファイル (JSON) を修正 5. 最初に戻る 検証ごとにサーバの起動/終了が必要 精度指標の算出関数は別途実装が必要 データ前処理・特徴抽出のチューニング アルゴリズム・ハイパーパラメタ・特徴抽出のチューニング チューニング対象のファイルが複数あるため 記述が分散し、管理が⾯倒 RPC 接続のためのコードが必要
  6. 6. INTRODUCTION TO JUBAKIT Jubatus を使ったデータ分析: Jubakit の場合 1. Jubakit を利⽤したスクリプトを実⾏ 2. 結果を集計して精度指標を算出 3. チューニングを⾏う ‣ スクリプトを修正 4. 最初に戻る すべてのチューニング要素が スクリプトに集約されるため 管理すべきファイルは 1 つだけ Jubatus サーバの起動・終了は ⾃動的に⾏われる 精度指標の算出に scikit-learn 組み込みの関数を 直接活⽤できる RPC を意識しない シンプルなコードで書ける
  7. 7. INTRODUCTION TO JUBAKIT サンプルコード (CSV ファイルから異常検知) dataset = Dataset(CSVLoader(“dataset.csv”)) service = Anomaly.run(Config()) for result in service.add(dataset): print(result) Jubakit の設計コンセプト シンプルなコードで動く: よく使う設定がデフォルト値として設定済み 空気を読む: データ型の⾃動推定を⾏う ⾼いカスタマイズ性: 細かい条件を指定することも可能
  8. 8. INTRODUCTION TO JUBAKIT サンプルコード (CSV ファイルから異常検知) dataset = Dataset(CSVLoader(“dataset.csv”)) service = Anomaly.run(Config()) for result in service.add(dataset): print(result) CSV ファイルからデータセットを定義する データの型は⾃動推定 (⼿動で指定することも可能)
  9. 9. INTRODUCTION TO JUBAKIT サンプルコード (CSV ファイルから異常検知) dataset = Dataset(CSVLoader(“dataset.csv”)) service = Anomaly.run(Config()) for result in service.add(dataset): print(result) 異常検知エンジンを起動 ハイパーパラメタは⾃動設定 (⼿動で指定することも可能)
  10. 10. INTRODUCTION TO JUBAKIT サンプルコード (CSV ファイルから異常検知) dataset = Dataset(CSVLoader(“dataset.csv”)) service = Anomaly.run(Config()) for result in service.add(dataset): print(result) 各レコードの異常度スコアを 算出して表⽰
  11. 11. INTRODUCTION TO JUBAKIT Jubakit のアーキテクチャ LOADER ローダ DATASET データセット SCHEMA スキーマ SERVICE サービス CONFIG 設定 CSV RDBMS TWITTER 様々なデータソースから 対象のデータを読み込む ローダから読み込まれた 各データの型と意味を定義する 機械学習の機能を提供する (分類, 異常検知, ETC.) NUMPY SCIPY サービスに必要な ハイパーパラメタを定義する … 読み 込み 学習・ 分析 学習・分析の対象 となるデータを表す (Estimator)
  12. 12. INTRODUCTION TO JUBAKIT Loader - ローダ (1/2) ▸ よく使うデータ構造の Loader はビルトイン クラス 機能 LineBasedStreamLoader / LineBasedFileLoader ⾏指向のストリーム/ファイルの読み込み ArrayLoader / ZipArrayLoader 配列 (または NumPy Array) データの読み込み SparseMatrixLoader SciPy 2-D 疎⾏列データの読み込み CSVLoader CSV ファイルの読み込み TwitterStreamLoader Twitter ストリームの読み込み MergeChainLoader 複数の Loader のデータを結合して読み込み ValueMapChainLoader 他の Loader の値を写像して読み込み
  13. 13. INTRODUCTION TO JUBAKIT Loader - ローダ (2/2) ▸ 組み込みでサポートされていないデータソースを利⽤した い場合は、BaseLoader を継承したカスタム Loader クラ スを実装する ▸ 実装はとても簡単. 1 レコードずつデータを yield する rows() メソッドを実装するだけ ‣ Loader から読み込まれたデータに対する後処理(窓処理など) を⾏いたい場合は、既存の Loader クラスを継承して preprocess() メソッドを実装する
  14. 14. INTRODUCTION TO JUBAKIT Schema - スキーマ ▸ Loader から読み込まれた値の型と意味を定義する 名前 型/意味 STRING ⽂字列データ NUMBER 数値データ BINARY バイナリデータ LABEL 正解ラベル (Classifier のみ) AUTO Loader から⼊⼒されたデータ型をそのまま使⽤する (CSV Loader の場合は全て⽂字列型になるため注意) INFER データ型をデータの内容から⾃動推定する IGNORE そのデータを無視する
  15. 15. INTRODUCTION TO JUBAKIT Schema - スキーマの定義例 schema = Schema({ ‘Category’: Schema.LABEL, ‘Title’: Schema.STRING, ‘Year’: Schema.NUMBER }, Schema.IGNORE) Category Title Year Country Director SF スターウォーズ Ep1 1999 USA G. Lucas アニメ 千と千尋の神隠し 2001 Japan H. Miyazaki ロマンス タイタニック 1997 USA J. Cameron SF ターミネーター 1991 USA J. Cameron … … … … … 分類ラベル ⽂字列データ 数値データ 無視 無視 例: 映画データベース フォールバック型 (明⽰的に指定されなかった  すべてのデータ項⽬に対する定義)
  16. 16. INTRODUCTION TO JUBAKIT Service - サービス ▸ Dataset を受け取って学習・分析を⾏い、結果を返却する ▸ scikit-learn の Estimator に相当 (ただし BaseEstimator は継承していません) ▸ 裏で Jubatus サーバが起動する ▸ 現在は Classifier (分類), Anomaly (異常検知), Weight (特 徴抽出結果の表⽰) の 3 種類のサービスが提供されている
  17. 17. INTRODUCTION TO JUBAKIT インストール $ pip install jubakit 基本的な機能は jubakit だけでも利⽤できますが、 scikit-learn をインストールすることで、 精度算出などの⾼度な機能も利⽤できるようになります。 $ pip install numpy spicy scikit-learn Jubakit のインストール ※Jubatus は別途インストールしておく必要があります。 ※可能な場合は pip ではなくバイナリパッケージ (yum/apt-get)  でのインストールをオススメします。
  18. 18. INTRODUCTION TO JUBAKIT デモ: 実際にデータを分析してみよう ▸ Kaggle の Titanic サンプルを解いてみます ▸ https://www.kaggle.com/c/titanic ▸ https://github.com/kmaehashi/jubakit-tutorial-titanic
  19. 19. INTRODUCTION TO JUBAKIT サンプルスクリプト集 ▸ example ディレクトリにサンプルスクリプトがあります ▸ ⼀部のサンプルは要 scikit-learn ▸ デモ ▸ Twitter ストリームの分析 ▸ ハイパーパラメタのバリエーション⾃動検証
  20. 20. INTRODUCTION TO JUBAKIT プルリクお待ちしてます! ▸ Jubakit を使ったサンプルスクリプト ▸ カスタム Loader ▸ RDBMS とか MQ とか AWS SQS とか Kinesis とか ▸ 他の Service (Recommender, NN, …) への対応 ▸ etc.

×