Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第1回  Jubatusハンズオン

Avatar for Yuya Unno Yuya Unno
February 18, 2013

第1回  Jubatusハンズオン

Avatar for Yuya Unno

Yuya Unno

February 18, 2013
Tweet

More Decks by Yuya Unno

Other Decks in Technology

Transcript

  1. ⾃自⼰己紹介 l  海野  裕也 (Yuya Unno) l  Twitter: @unnonouno l  株式会社Preferred

    Infrastructure l  専⾨門 l  ⾃自然⾔言語処理理 l  テキストマイニング 2
  2. JubatusはOSSの機械学習フレームワークです 6 リアルタイム ストリーム 分散並列列 深い解析 l  NTT SIC*とPreferred Infrastructureによる共同開発

    l  2011年年10⽉月よりOSSで公開 http://jubat.us/ * NTT SIC: NTT研究所 サイバーコミュニケーション研究所  ソフトウェアイノベーションセンタ
  3. Jubatusの分類器を起動しましょう l  jubaclassiferコマンドが分類器のサーバー l  -f で設定を指定して起動する 10 $ jubaclassifier can't

    start standalone mode without configpath specified usage: jubaclassifier [options] ... options: ... [略略] $ jubaclassifier -f /opt/jubatus/share/ jubatus/example/config/classifier/pa1.json
  4. サンプルを読んでみよう l  sample.pyの中は⼤大雑把には以下のとおり 16 #(前略略) client = jubatus.Classifier(host, port) train_data

    = [ ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data) #(後略略)
  5. 正解のわかっているデータを使って学習(train)を⾏行行 う l  最初にクライアントオブジェクトを⽣生成する l  クライアントオブジェクト経由で操作する 18 client = jubatus.Classifier(host,

    port) train_data = [ ('male’, datum([('hair', 'short’), ...), ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data)
  6. データを追加してみよう l  学習⽤用のデータを増やすと⼀一般的に分類性能が良良くなる l  無限に増やしても、全て当たるようになるわけではない 21 client = jubatus.Classifier(host, port)

    train_data = [ ('male’, datum([('hair', 'short’), ...), ... # ここにデータを追加 ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data)
  7. ラベルを追加してみよう l  ラベルを細かくすると分類も細かくできる l  粒粒度度を細かくするとそれだけ正解率率率は落落ちるので注意 22 client = jubatus.Classifier(host, port)

    train_data = [ ('male (adult)’, datum([('hair', 'short’), ...), ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data)
  8. 設定を⾒見見てみよう 24 { "converter" : { ... }, "parameter" :

    { "regularization_weight" : 1.0 }, "method" : "PA1" } 特徴抽出の設定 学習⽅方法のパラメータ 学習の⽅方法
  9. 学習アルゴリズムを変えてみよう l  “method” は学習アルゴリズムを指定する l  “PA1” から ”AROW” に変えてみる l 

    利利⽤用できるアルゴリズムはドキュメント参照 25 { "converter" : { ... }, "parameter" : { ... }, "method" : ”AROW" }
  10. タスク固有の問題と⼿手法を分離離している 28 ⽂文書 (0, 1, 0, 2.5, -‐‑‒1, …) (1,

    0.5, 0.1, -‐‑‒2, 3, …) (0, 1, 0, 1.5, 2, …) 特徴ベクトル グラフィカルモデル 分類/回帰:SVM, LogReg, PA, CW, ALOW, Naïve Bayes CNB, DT, RF, ANN, … クラスタリング:K-‐‑‒means, Spectral Clustering, MMC, LSI, LDA, GM, … 構造分析:HMM, MRF, CRF, … 画像 センサ情報 ⾏行行動履履歴 分野に依存しない 特徴を捉えた抽象化されたデータ 様々な⼿手法・理理論論を 適⽤用可能 特徴抽出 特徴分析
  11. ⽣生のデータから特徴を抜き出すのが特徴抽出 l  ⼊入⼒力力された⽣生データの特徴をキーとバリューで表す l  変換の⽅方法はデータの種類によって様々 30 周囲が黄色 1 中心が茶 1

    花びらの割合 0.7 ⾼高さ 150 世の中ではビッグデー タというキーワードが 注⽬目されていますが, ⼀一⼝口にビッグデータと いっても⽴立立場や観点に よって定義は様々です. 他の要素は0とする ビッグデータ 2 世の中 1 キーワード 1 定義 1 IT関連 ひまわり 特徴ベクトル 分析結果
  12. デフォルトの設定では元の⼊入⼒力力をそのまま使ってい ます 31 { "hair": "short", "top": "T shirt", "bottom":

    "jeans", "height": 1.70 } hair=short 1.0 top=T shirt 1.0 bottom=jeans 1.0 height 1.70 文字列情報 数値情報
  13. ⽂文字列列に対する処理理 32 { "hair": "short", "top": "T shirt", "bottom": "jeans",

    "height": 1.70 } hair=short 1.0 top=T shirt 1.0 bottom=jeans 1.0 height 1.70 l  キーと値の組み合わ せで、1つの特徴に なるようにする l  値は1.0で固定
  14. string_rulesに⽂文字列列データの変換規則を書きます l  key: * 全てのデータに対して、 l  type: str 値をそのまま使う l 

    sample_weight, global_weight: 重み付けは1.0 33 ... "string_rules" : [ { "key" : "*”, "type" : "str", "sample_weight" : "bin”, "global_weight" : "bin" } ], ...
  15. 数値に対する処理理 34 { "hair": "short", "top": "T shirt", "bottom": "jeans",

    "height": 1.70 } hair=short 1.0 top=T shirt 1.0 bottom=jeans 1.0 height 1.70 l  キーと値をそのまま 特徴の値となるよう にする