第1回  Jubatusハンズオン


    2013年年 2⽉月18⽇日(⽉月)
       Jubatus Team
⾃自⼰己紹介

l    海野  裕也 (Yuya Unno)
l    Twitter: @unnonouno
l    株式会社Preferred Infrastructure

l    専⾨門
      l    ⾃自然⾔言語処理理
      l    テキストマイニング




                           2
今⽇日の⽬目標



            Jubatusを使って機械学習に触れてみる



l  初めて機械学習を使ってみる⼈人も対象です
l  機械学習の初歩から説明します
      l    ⾼高校数学くらいの知識識があればOK
l    詳しい⼈人にとっては少し退屈かもしれません


                        3
アジェンダ

l    イントロダクション

l    Jubatusを使ってみる

l    設定を変更更してみる




                      4
l    イントロダクション

l    Jubatusを使ってみる

l    設定を変更更してみる




                      5
JubatusはOSSの機械学習フレームワークです
  l    NTT  SIC*とPreferred  Infrastructureによる共同開発
  l    2011年年10⽉月よりOSSで公開  http://jubat.us/




        リアルタイム  
         ストリーム         分散並列列           深い解析
                            6	
*  NTT  SIC:  NTT研究所  サイバーコミュニケーション研究所  ソフトウェアイノベーションセンタ
機械学習は「データに基づいに機械が判断を⾏行行う」
技術




l    過去のデータにもとづいて⼈人が判断できるようになる
l    同じように過去のデータから機械が判断するようになる
      のが機械学習
                 7
複数の選択肢から1つ選ぶのが「多値分類問題」
l    ⼊入⼒力力xに対する出⼒力力yを予想するのが多値分類問題
l    機械学習の⼀一番基本的な問題設定
l    ⼊入出⼒力力の組みをたくさん教えこむ
                                 スポーツ記事
           文書	
                    or	
                                 芸能記事

                    分類器
                  (classifier)
                                 ⼈人物画像
           画像	
                                   or	
                                 動物画像
                      8
l    イントロダクション

l    Jubatusを使ってみる

l    設定を変更更してみる




                      9
Jubatusの分類器を起動しましょう

l    jubaclassiferコマンドが分類器のサーバー
l    -f で設定を指定して起動する

$ jubaclassifier
can't start standalone mode without
configpath specified
usage: jubaclassifier [options] ...
options:
... [略略]

$ jubaclassifier -f /opt/jubatus/share/
jubatus/example/config/classifier/pa1.json
                      10
今⽇日は分散の話はしません

l    今⽇日は単体で実⾏行行させます

l    分散させません




                    11
Jubatusはサーバー・クライアントモデルで動きま
す

                                    Jubatus
  ユーザープログ                       (jubaclassifier)
     ラム

          Jubatusクライ
                         通信	
             アント

            各種言語で実装	

l    Jubatusクライアント経由でサーバーと通信する
l    通信⽅方法などはクライアントライブラリが隠蔽している
l    クライアントはC++/Ruby/Python/Javaで⽤用意
                        12
サンプルを⽤用意したので実⾏行行してみましょう

      https://github.com/jubatus/jubatus-example	

l    jubaclassifierを起動した状態でサンプルを実⾏行行
l    以下の様な結果が出れば成功

$ cd jubatus-example/gender/python
$ ./gender.py
female 0.473417669535
male 0.388551652431         ラベルごとのスコア

female 2.79595327377
male -2.36301612854

                            13
線形分類は重み付き多数決のイメージ
               男性	
                  女性	
  入力の特徴	
   短髪	
           1.8

      Tシャツ	
          0.3

      スカート	
                     3.2
                                            (+	
                               1.1      ⼥女女性だ!

l    特徴毎のスコアを加算して⼤大きい⽅方を採る

                        14
学習するときは間違いを正す⽅方向に重みを調整
               男性	
                  女性	
   天の声=正解	
  入力の特徴	
   短髪	
          2.5                     違います。男性
                                            です
      Tシャツ	
          0.8

      スカート	
                       2.8
                                          (+	
                                    これらの特徴は男性
                      0.5
                                      的なのかな?

l    判断が覆るように重みを調整する
l    学習アルゴリズム毎に重み調整の度度合いが異異なる
                            15
サンプルを読んでみよう

l    sample.pyの中は⼤大雑把には以下のとおり


#(前略略)

client = jubatus.Classifier(host, port)
train_data = [ ... ]
client.train(name, train_data)
test_data = [ ... ]
results = client.classify(name, test_data)

#(後略略)

                     16
Jubatusはクライアントオブジェクト経由で使う

l    最初にクライアントオブジェクトを⽣生成する
l    クライアントオブジェクト経由で操作する
#(前略略)

client = jubatus.Classifier(host, port)
train_data = [ ... ]
client.train(name, train_data)
test_data = [ ... ]
results = client.classify(name, test_data)

#(後略略)

                     17
正解のわかっているデータを使って学習(train)を⾏行行
う
l    最初にクライアントオブジェクトを⽣生成する
l    クライアントオブジェクト経由で操作する

client = jubatus.Classifier(host, port)
train_data = [
  ('male’, datum([('hair', 'short’), ...),
  ...
]
client.train(name, train_data)
test_data = [ ... ]
results = client.classify(name, test_data)

                     18
学習したら未分類のデータを分類(classify)する

l    最初にクライアントオブジェクトを⽣生成する
l    クライアントオブジェクト経由で操作する

client = jubatus.Classifier(host, port)
train_data = [ ... ]
client.train(name, train_data)
test_data = [
  datum([('hair', 'short'), ... ),
  ...
]
results = client.classify(name, test_data)

                     19
単体のデータを表すdatumクラスの構造に注意

l    ⽂文字列列情報と数値情報のリストを別々に指定する
l    それぞれは、キーと値のペアのリストになっている
      l    下のデータは、”hair”が”short”、“top”が”T shirt”、”height”が
            1.81と読む



datum(
  [('hair', 'short'), ('top', 'T shirt’),],
  [('height', 1.81)]
)


                                20
データを追加してみよう

l    学習⽤用のデータを増やすと⼀一般的に分類性能が良良くなる
l    無限に増やしても、全て当たるようになるわけではない

client = jubatus.Classifier(host, port)
train_data = [
  ('male’, datum([('hair', 'short’), ...),
  ...
  # ここにデータを追加
]
client.train(name, train_data)
test_data = [ ... ]
results = client.classify(name, test_data)
                     21
ラベルを追加してみよう

l    ラベルを細かくすると分類も細かくできる
l    粒粒度度を細かくするとそれだけ正解率率率は落落ちるので注意

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)
                     22
l    イントロダクション

l    Jubatusを使ってみる

l    設定を変更更してみる




                      23
設定を⾒見見てみよう


                           特徴抽出の設定
{
    "converter" : {
      ...
                        学習⽅方法のパラメータ
    },
    "parameter" : {
      "regularization_weight" : 1.0
    },
    "method" : "PA1"
}
                            学習の⽅方法


                    24
学習アルゴリズムを変えてみよう

{
      "converter" : { ... },
      "parameter" : { ... },
      "method" : ”AROW"
}



l    “method” は学習アルゴリズムを指定する
l    “PA1” から  ”AROW” に変えてみる
l    利利⽤用できるアルゴリズムはドキュメント参照

                         25
パラメータを変えてみよう

{
      "converter" : { ... },
      "parameter" : {
        "regularization_weight" : 10.0
      },
      "method" : "PA1"
}


l    parameter はどのように学習するかの調整に使われる
l    学習で調整されるパラメータとは区別する意味で、ハイ
      パーパラメータと呼ばれる
l    よい値はデータやアプリケーションによって異異なる
                         26
残りの設定は特徴抽出の設定です

{
      "converter" : {
        ...
      },
      “parameter” : { ... },
      "method" : "PA1"
}

l    converter は⽣生のデータをどう扱うかの、特徴抽出に関
      する設定
l    設定のしどころであり、学習がうまくいくかの重要な部
      分
                         27
タスク固有の問題と⼿手法を分離離している


      特徴抽出	
                                           特徴分析	
                   分野に依存しない                                     様々な⼿手法・理理論論を
               特徴を捉えた抽象化されたデータ                                    適⽤用可能
     ⽂文書         (0,        1,        0,  2.5,  -‐‑‒1,  …)   分類/回帰:SVM,  LogReg,  
                 (1,  0.5,  0.1,      -‐‑‒2,    3,  …)       PA,  CW,  ALOW,  Naïve  Bayes
                 (0,        1,        0,  1.5,    2,  …)     CNB,  DT,  RF,  ANN,  …  
                     特徴ベクトル
画像                                                           クラスタリング:K-‐‑‒means,  
                                                             Spectral  Clustering,  MMC,  
                                                             LSI,  LDA,  GM,  …


     ⾏行行動履履歴      グラフィカルモデル                                  構造分析:HMM,  MRF,  CRF,  …



      センサ情報                                28
タスク固有の問題と⼿手法の分離離(続)

l    特徴抽出と特徴分析を分離離することが重要

l    データの種類、ドメイン、利利⽤用⽬目的に依存せず、様々な
      分析を利利⽤用可能なしくみを作ることができる

l    利利点
      l    システム開発・専⾨門家教育のコストを⼤大きく下げることができ
            る
      l    特徴抽出では各問題ドメインに専念念
      l    特徴分析では各分析⼿手法に専念念


                         29
⽣生のデータから特徴を抜き出すのが特徴抽出
l    ⼊入⼒力力された⽣生データの特徴をキーとバリューで表す
l    変換の⽅方法はデータの種類によって様々

               特徴ベクトル	
世の中ではビッグデー                                分析結果	
タというキーワードが          ビッグデータ            2
注⽬目されていますが,         世の中               1
⼀一⼝口にビッグデータと
                    キーワード             1       IT関連
いっても⽴立立場や観点に
よって定義は様々です.         定義                1


                  周囲が黄色         1
                  中心が茶          1
                  花びらの割合        0.7          ひまわり
                  ⾼高さ           150

                         30	
                                他の要素は0とする
デフォルトの設定では元の⼊入⼒力力をそのまま使ってい
ます
          {
              "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
                      31
⽂文字列列に対する処理理
 {
     "hair": "short",           l    キーと値の組み合わ
     "top": "T shirt",                せで、1つの特徴に
     "bottom": "jeans",               なるようにする
     "height": 1.70
 }
                                l    値は1.0で固定



 hair=short       1.0
 top=T shirt      1.0
 bottom=jeans     1.0
 height           1.70
                         32
string_rulesに⽂文字列列データの変換規則を書きます
...
 "string_rules" : [
   { "key" : "*”,
     "type" : "str",
     "sample_weight" : "bin”,
     "global_weight" : "bin" }
 ],
...

l    key: * 全てのデータに対して、
l    type: str 値をそのまま使う
l    sample_weight, global_weight: 重み付けは1.0

                           33
数値に対する処理理
{
    "hair": "short",            l    キーと値をそのまま
    "top": "T shirt",                 特徴の値となるよう
    "bottom": "jeans",                にする
    "height": 1.70
}



hair=short       1.0
top=T shirt      1.0
bottom=jeans     1.0
height           1.70
                         34
num_rulesに数値データの変換規則を書きます

...
 ”num_rules" : [
   { "key" : "*”,
     "type" : ”num” }
 ],
...


l    key: * 全てのデータに対して
l    type: num 数値をそのまま使う



                        35
特徴の取り⽅方を⼯工夫することで分類精度度が変わりま
す
                         世の中ではビッグデータ…     1.0

  世の中ではビッグデー
  タというキーワードが
  注⽬目されていますが,            世の中        1.0
  ⼀一⼝口にビッグデータと
  いっても⽴立立場や観点に           ビッグデータ     2.0
  よって定義は様々です.
                         キーワード      1.0
                         ⽴立立場       1.0


l    特徴の粒粒度度が細かすぎても粗すぎても学習はうまくいか
      ない
                  36
スペース区切切りで特徴をとってみましょう
...
 "string_rules" : [
   { "key" : "*”,
     "type" : “space",
     "sample_weight" : "bin”,
     "global_weight" : "bin" }
 ],
...


l    スペース区切切りを使う場合はtypeにspaceを使う
l    他にも特徴の取り⽅方は設定で簡単に変えられるので、ド
      キュメントを参照
                     37
その他の情報源

l    ドキュメント
      l    http://jubat.us/ja/
      l    特徴抽出や設定周りもひと通り書いてある


l    メーリングリスト
      l    http://groups.google.com/group/jubatus


l    ソースとバグ報告
      l    https://github.com/jubatus/jubatus




                                    38
⾃自由に改変してみましょう

l    jubatus-example以下に、⾊色々サンプルがあるので試し
      てみる
      l    分類以外のサンプルもあるが、記述⾔言語が限られている


l    よく知られたデータセットを利利⽤用してみる
      l    http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets
      l    news20で検索索


l    Enjoy!



                                     39

第1回 Jubatusハンズオン

  • 1.
    第1回  Jubatusハンズオン 2013年年 2⽉月18⽇日(⽉月) Jubatus Team
  • 2.
    ⾃自⼰己紹介 l  海野  裕也 (Yuya Unno) l  Twitter: @unnonouno l  株式会社Preferred Infrastructure l  専⾨門 l  ⾃自然⾔言語処理理 l  テキストマイニング 2
  • 3.
    今⽇日の⽬目標 Jubatusを使って機械学習に触れてみる l  初めて機械学習を使ってみる⼈人も対象です l  機械学習の初歩から説明します l  ⾼高校数学くらいの知識識があればOK l  詳しい⼈人にとっては少し退屈かもしれません 3
  • 4.
    アジェンダ l  イントロダクション l  Jubatusを使ってみる l  設定を変更更してみる 4
  • 5.
    l  イントロダクション l  Jubatusを使ってみる l  設定を変更更してみる 5
  • 6.
    JubatusはOSSの機械学習フレームワークです l  NTT  SIC*とPreferred  Infrastructureによる共同開発 l  2011年年10⽉月よりOSSで公開  http://jubat.us/ リアルタイム   ストリーム 分散並列列 深い解析 6 *  NTT  SIC:  NTT研究所  サイバーコミュニケーション研究所  ソフトウェアイノベーションセンタ
  • 7.
    機械学習は「データに基づいに機械が判断を⾏行行う」 技術 l  過去のデータにもとづいて⼈人が判断できるようになる l  同じように過去のデータから機械が判断するようになる のが機械学習 7
  • 8.
    複数の選択肢から1つ選ぶのが「多値分類問題」 l  ⼊入⼒力力xに対する出⼒力力yを予想するのが多値分類問題 l  機械学習の⼀一番基本的な問題設定 l  ⼊入出⼒力力の組みをたくさん教えこむ スポーツ記事 文書 or 芸能記事 分類器 (classifier) ⼈人物画像 画像 or 動物画像 8
  • 9.
    l  イントロダクション l  Jubatusを使ってみる l  設定を変更更してみる 9
  • 10.
    Jubatusの分類器を起動しましょう l  jubaclassiferコマンドが分類器のサーバー l  -f で設定を指定して起動する $ jubaclassifier can't start standalone mode without configpath specified usage: jubaclassifier [options] ... options: ... [略略] $ jubaclassifier -f /opt/jubatus/share/ jubatus/example/config/classifier/pa1.json 10
  • 11.
    今⽇日は分散の話はしません l  今⽇日は単体で実⾏行行させます l  分散させません 11
  • 12.
    Jubatusはサーバー・クライアントモデルで動きま す Jubatus ユーザープログ (jubaclassifier) ラム  Jubatusクライ 通信 アント 各種言語で実装 l  Jubatusクライアント経由でサーバーと通信する l  通信⽅方法などはクライアントライブラリが隠蔽している l  クライアントはC++/Ruby/Python/Javaで⽤用意 12
  • 13.
    サンプルを⽤用意したので実⾏行行してみましょう https://github.com/jubatus/jubatus-example l  jubaclassifierを起動した状態でサンプルを実⾏行行 l  以下の様な結果が出れば成功 $ cd jubatus-example/gender/python $ ./gender.py female 0.473417669535 male 0.388551652431 ラベルごとのスコア female 2.79595327377 male -2.36301612854 13
  • 14.
    線形分類は重み付き多数決のイメージ 男性 女性 入力の特徴 短髪 1.8 Tシャツ 0.3 スカート 3.2 (+ 1.1 ⼥女女性だ! l  特徴毎のスコアを加算して⼤大きい⽅方を採る 14
  • 15.
    学習するときは間違いを正す⽅方向に重みを調整 男性 女性 天の声=正解 入力の特徴 短髪 2.5 違います。男性 です Tシャツ 0.8 スカート 2.8 (+ これらの特徴は男性 0.5 的なのかな? l  判断が覆るように重みを調整する l  学習アルゴリズム毎に重み調整の度度合いが異異なる 15
  • 16.
    サンプルを読んでみよう l  sample.pyの中は⼤大雑把には以下のとおり #(前略略) client = jubatus.Classifier(host, port) train_data = [ ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data) #(後略略) 16
  • 17.
    Jubatusはクライアントオブジェクト経由で使う l  最初にクライアントオブジェクトを⽣生成する l  クライアントオブジェクト経由で操作する #(前略略) client = jubatus.Classifier(host, port) train_data = [ ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data) #(後略略) 17
  • 18.
    正解のわかっているデータを使って学習(train)を⾏行行 う l  最初にクライアントオブジェクトを⽣生成する l  クライアントオブジェクト経由で操作する client = jubatus.Classifier(host, port) train_data = [ ('male’, datum([('hair', 'short’), ...), ... ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data) 18
  • 19.
    学習したら未分類のデータを分類(classify)する l  最初にクライアントオブジェクトを⽣生成する l  クライアントオブジェクト経由で操作する client = jubatus.Classifier(host, port) train_data = [ ... ] client.train(name, train_data) test_data = [ datum([('hair', 'short'), ... ), ... ] results = client.classify(name, test_data) 19
  • 20.
    単体のデータを表すdatumクラスの構造に注意 l  ⽂文字列列情報と数値情報のリストを別々に指定する l  それぞれは、キーと値のペアのリストになっている l  下のデータは、”hair”が”short”、“top”が”T shirt”、”height”が 1.81と読む datum( [('hair', 'short'), ('top', 'T shirt’),], [('height', 1.81)] ) 20
  • 21.
    データを追加してみよう l  学習⽤用のデータを増やすと⼀一般的に分類性能が良良くなる l  無限に増やしても、全て当たるようになるわけではない client = jubatus.Classifier(host, port) train_data = [ ('male’, datum([('hair', 'short’), ...), ... # ここにデータを追加 ] client.train(name, train_data) test_data = [ ... ] results = client.classify(name, test_data) 21
  • 22.
    ラベルを追加してみよう l  ラベルを細かくすると分類も細かくできる l  粒粒度度を細かくするとそれだけ正解率率率は落落ちるので注意 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) 22
  • 23.
    l  イントロダクション l  Jubatusを使ってみる l  設定を変更更してみる 23
  • 24.
    設定を⾒見見てみよう 特徴抽出の設定 { "converter" : { ... 学習⽅方法のパラメータ }, "parameter" : { "regularization_weight" : 1.0 }, "method" : "PA1" } 学習の⽅方法 24
  • 25.
    学習アルゴリズムを変えてみよう { "converter" : { ... }, "parameter" : { ... }, "method" : ”AROW" } l  “method” は学習アルゴリズムを指定する l  “PA1” から  ”AROW” に変えてみる l  利利⽤用できるアルゴリズムはドキュメント参照 25
  • 26.
    パラメータを変えてみよう { "converter" : { ... }, "parameter" : { "regularization_weight" : 10.0 }, "method" : "PA1" } l  parameter はどのように学習するかの調整に使われる l  学習で調整されるパラメータとは区別する意味で、ハイ パーパラメータと呼ばれる l  よい値はデータやアプリケーションによって異異なる 26
  • 27.
    残りの設定は特徴抽出の設定です { "converter" : { ... }, “parameter” : { ... }, "method" : "PA1" } l  converter は⽣生のデータをどう扱うかの、特徴抽出に関 する設定 l  設定のしどころであり、学習がうまくいくかの重要な部 分 27
  • 28.
    タスク固有の問題と⼿手法を分離離している 特徴抽出 特徴分析 分野に依存しない 様々な⼿手法・理理論論を 特徴を捉えた抽象化されたデータ 適⽤用可能 ⽂文書 (0,        1,        0,  2.5,  -‐‑‒1,  …) 分類/回帰:SVM,  LogReg,   (1,  0.5,  0.1,      -‐‑‒2,    3,  …) PA,  CW,  ALOW,  Naïve  Bayes (0,        1,        0,  1.5,    2,  …) CNB,  DT,  RF,  ANN,  …   特徴ベクトル 画像 クラスタリング:K-‐‑‒means,   Spectral  Clustering,  MMC,   LSI,  LDA,  GM,  … ⾏行行動履履歴 グラフィカルモデル 構造分析:HMM,  MRF,  CRF,  … センサ情報 28
  • 29.
    タスク固有の問題と⼿手法の分離離(続) l  特徴抽出と特徴分析を分離離することが重要 l  データの種類、ドメイン、利利⽤用⽬目的に依存せず、様々な 分析を利利⽤用可能なしくみを作ることができる l  利利点 l  システム開発・専⾨門家教育のコストを⼤大きく下げることができ る l  特徴抽出では各問題ドメインに専念念 l  特徴分析では各分析⼿手法に専念念 29
  • 30.
    ⽣生のデータから特徴を抜き出すのが特徴抽出 l  ⼊入⼒力力された⽣生データの特徴をキーとバリューで表す l  変換の⽅方法はデータの種類によって様々 特徴ベクトル 世の中ではビッグデー 分析結果 タというキーワードが ビッグデータ 2 注⽬目されていますが, 世の中 1 ⼀一⼝口にビッグデータと キーワード 1 IT関連 いっても⽴立立場や観点に よって定義は様々です. 定義 1 周囲が黄色 1 中心が茶 1 花びらの割合 0.7 ひまわり ⾼高さ 150 30 他の要素は0とする
  • 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 31
  • 32.
    ⽂文字列列に対する処理理 { "hair": "short", l  キーと値の組み合わ "top": "T shirt", せで、1つの特徴に "bottom": "jeans", なるようにする "height": 1.70 } l  値は1.0で固定 hair=short 1.0 top=T shirt 1.0 bottom=jeans 1.0 height 1.70 32
  • 33.
    string_rulesに⽂文字列列データの変換規則を書きます ... "string_rules" :[ { "key" : "*”, "type" : "str", "sample_weight" : "bin”, "global_weight" : "bin" } ], ... l  key: * 全てのデータに対して、 l  type: str 値をそのまま使う l  sample_weight, global_weight: 重み付けは1.0 33
  • 34.
    数値に対する処理理 { "hair": "short", l  キーと値をそのまま "top": "T shirt", 特徴の値となるよう "bottom": "jeans", にする "height": 1.70 } hair=short 1.0 top=T shirt 1.0 bottom=jeans 1.0 height 1.70 34
  • 35.
    num_rulesに数値データの変換規則を書きます ... ”num_rules" :[ { "key" : "*”, "type" : ”num” } ], ... l  key: * 全てのデータに対して l  type: num 数値をそのまま使う 35
  • 36.
    特徴の取り⽅方を⼯工夫することで分類精度度が変わりま す 世の中ではビッグデータ… 1.0 世の中ではビッグデー タというキーワードが 注⽬目されていますが, 世の中 1.0 ⼀一⼝口にビッグデータと いっても⽴立立場や観点に ビッグデータ 2.0 よって定義は様々です. キーワード 1.0 ⽴立立場 1.0 l  特徴の粒粒度度が細かすぎても粗すぎても学習はうまくいか ない 36
  • 37.
    スペース区切切りで特徴をとってみましょう ... "string_rules" :[ { "key" : "*”, "type" : “space", "sample_weight" : "bin”, "global_weight" : "bin" } ], ... l  スペース区切切りを使う場合はtypeにspaceを使う l  他にも特徴の取り⽅方は設定で簡単に変えられるので、ド キュメントを参照 37
  • 38.
    その他の情報源 l  ドキュメント l  http://jubat.us/ja/ l  特徴抽出や設定周りもひと通り書いてある l  メーリングリスト l  http://groups.google.com/group/jubatus l  ソースとバグ報告 l  https://github.com/jubatus/jubatus 38
  • 39.
    ⾃自由に改変してみましょう l  jubatus-example以下に、⾊色々サンプルがあるので試し てみる l  分類以外のサンプルもあるが、記述⾔言語が限られている l  よく知られたデータセットを利利⽤用してみる l  http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets l  news20で検索索 l  Enjoy! 39