SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
Jubatusの特徴変換と
 線形分類器の仕組み

     2011/11/07
株式会社Preferred Infrastructure
 海野  裕也 (@unnonouno)
本発表のねらい

l    現状のJubatusで何が出来るのかを機能の⾯面から解説

l    線形分類器の仕組みと使い⽅方
l    特徴抽出器の仕組みと使い⽅方




                    2
機械学習とは?
l    データから有⽤用な規則、ルール、知識識表現、判断基準な
      どを抽出
l    データがあるところ、どこでも使える
l    様々な分野の問題に利利⽤用可能
                       適用分野	
       レコメンデー
       ションクラス    分類、識識別        市場予測    評判分析
        タリング


        情報抽出      ⽂文字認識識       ロボット    画像解析



                 検索索ランキン
        遺伝⼦子分析                  ⾦金金融   医療療診断
                    グ

                           3
タスク固有の問題と⼿手法の分離離


      特徴抽出	
                                          機械学習	
                   分野に依存しない                                     様々な⼿手法・理理論論を
               特徴を捉えた抽象化されたデータ                                    適⽤用可能
     ⽂文書         (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,  …



      センサ情報                              4
現状で実装されているモジュール
 l    現在実装されているのは、⽂文書データからの特徴ベクト
       ルへの変換と、それに対する分類器
                     分野に依存しない                                     様々な⼿手法・理理論論を
                 特徴を捉えた抽象化されたデータ                                    適⽤用可能
       ⽂文書         (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,  …



        センサ情報                              5
Jubatusにおける特徴変換から分類器の学習までの
概要
2つの処理理に分離離してモジュール化している
l  ⾮非構造データからの特徴ベクトルへの変換
l  特徴ベクトルからの学習




⼊入⼒力力          特徴ベ           学習モ
        特徴抽出          分類学習
データ            クトル           デル



                6
Jubatusの線形分類器


7
現在Jubatusで実装されているのは多クラス分類

l    ⼊入⼒力力xに対し、出⼒力力yを予測する


タスク               ⼊入⼒力力x         出⼒力力y

メール分類             メール            スパム or 普通 or 重要等

Twitterのユーザー分析    Tweet          ユーザーの性別、職業、年年齢など

電気使⽤用料料需要の予測      パケット           各サーバーの予測使⽤用量量(連続値)

広告のコンバージョン予測 アクセス履履 クリック、コンバージョンするか
             歴、広告
監視カメラ解析           監視カメラ 部屋の状態(明かりがついている?
                  画像    ⼈人がいるか?など)

                           8
⾮非定形データからの特徴ベクトルへの変換

l    Jubatusは⽂文書や画像などの⾮非定形データの解析も想定
      し、標準でこうした特徴抽出機構を備える
l    変換後はベクトルとなる
       l  キーと値のペアになっていると思えばOK

      ⽇日本電信電話株式会社(東京都千代⽥田区、代表取締役社⻑⾧長:三浦  惺、以下「NTT」)
      と株式会社プリファードインフラストラクチャー(東京都⽂文京区、代表取締役社⻑⾧長:⻄西川
      徹、以下「PFI社」)は、ビッグデータ*1と呼ばれる⼤大規模データをリアルタイムに⾼高速分
      析処理理する基盤技術「Jubatus*2」(第1版)を開発しました。

                                           例例:⼊入⼒力力が⾔言語データの場合

      単語/キーワード                 N-‐‑‒gram
   ⽇日本電信電話株式会社  :  1             Ju:  1
   東京都  :  2                     ub:  2

                                             詳細は後述
   千代⽥田区  :  1                   ba:1
  、代表取締役社⻑⾧長  :  2            、at:1
   NTT  :  1                     tu:1
   プリファードインフラストラクチャー  :  1   9	
 us:1
多クラス分類の中の、線形分類器が実装されている

l    ⼊入⼒力力は特徴ベクトル
l    各特徴量量にクラスごとの重みがある
l    重みの総和(内積)が各クラスの得点とする


入力:「野球の後のカレーライスはおいしい」	
                          重み	
     スコア最⼤大

                    1:スポーツ 2:グルメ   3:政治
 特徴ベクトル	
             カレー    -1      2      -1
  カレー    1
             仕分け    -1      -1     2
  ライス    1
             ライス    -1      1      1
  野球     1
             野球     2       -1     -1

                   10
線形分類器の機械学習

l    機械学習で重みを⾃自動調整する

l    調整の基準や、計算⽅方法で様々な種類が存在する
      l    単純ベイズ
      l    パーセプトロン
      l    最⼤大エントロピー法
      l    サポートベクトルマシン


l    Jubatusではオンライン学習アルゴリズムが実装されて
      いる


                          11
オンライン学習は学習⼿手法の⽅方式の⼀一つ

l    バッチ学習
      l  データを全体を⾒見見て重みを調整する

      l  参考書を全部解いてから答え合わせ



                            学習器


l    オンライン学習
      l  1つずつデータを⾒見見て重みの更更新を繰り返す

      l  ⼀一問ずつ解いて答え合わせ


                               学習器


                     12
オンライン学習の重み更更新のイメージ

l    分類に間違えたら正しく分類できるように微調整
l    微調整の⽅方法の違いで学習⼿手法の良良し悪しが決まる
       特徴ベクトル	



  重み	
 正しいクラス	
   間違えたクラス	
          正しいクラス	
   間違えたクラス	




正解クラスの重みが小さい	
          13	
                               正しく分類できるように調整
オンライン学習の特徴

l    オンライン学習は更更新が早い
l    同じ学習時間に対して、経験的に精度度も⾼高い

l    Jubatusでは最新の⼿手法を含む、様々な⼿手法が実装され
      ている
      l    Perceptron (1958)
      l    Passive Aggressive (PA) (2003)
      l    Confidence Weighted Learning (CW) (2008)
      l    AROW (2009)
      l    Normal HERD (NHERD) (2010)



                                    14
Jubatusの分散学習:緩いモデル共有

l  たまに全学習器の重みを混ぜ合わせる
    l  全サーバーで重みの平均をとる (Iterative Parameter

        Mixture)
l  重み情報だけを交換するので軽い


l    ⾮非同期・オンラインでMapReduceしているイメージに
      近い




                      15
Jubatusにおける分散機械学習のイメージ


                              学習器




l    みんな個別に⾃自学⾃自習
l    たまに勉強会で情報交換
l    ⼀一⼈人で勉強するより効率率率がいいはず!
                    16
線形分類器以外の分類⼿手法はないのか?

l    ⾮非線形の分類器はたくさんあります
      l    決定⽊木
      l    カーネル法
      l    ニューラルネットワーク


l    分類速度度、シンプルさ、学習速度度などの点で線形分類器
      は⾮非常に優れる




                          17
今後のJubatusの機械学習

l    「緩いモデル共有」モデルが他の学習問題でも有効に働
      くことを検証
      l  そのための⼿手法の研究開発&実証実験

      l  「勉強会モデル」のアナロジーで⾔言えばうまく⾏行行

          く?

l    今後、順次実装して公開していきます




                   18
Jubatusの特徴抽出処理理


19
特徴抽出とは

l    ⽣生データから機械学習で扱いやすい形に変換する
l    あるいは、特徴的な部分を抽出する
l    普通はベクトル(キー・バリューの集合)で表現される
                           ベクトル	
            文書	
                            1 1 0 1
                           シーケンス	
          画像	
   特徴抽出
                           グラフ	

          音声	
                  20
特徴抽出の仕⽅方はデータの種類によって異異なる

l    データに応じて利利⽤用できる特徴はいろいろ

      データ種類     特徴量量の例例

      ⽂文書       ⽂文字、品詞、単語、係り受け、主語
                述語・・・

      画像        ⾊色、明るさ、形、模様、輪輪郭・・・

      ⾳音声       ⾳音程、波形、⻑⾧長さ、強さ・・・

      ⾏行行動履履歴   時刻、場所、⼿手段、同伴者・・・

                      21
分析⽬目的によっても最適な特徴量量は異異なる

l    適切切な特徴が抽出できないと良良い結果は得られない


Jubatusは⼤大規模な         Jubatus / データ / 分
                名詞	
 散  / 機械学習  / ライブラ
データに対して、分
散機械学習するため            リ  / インストール  / 分類
のライブラリだ。イ              性能  / レイテンシー
 ンストールは難し            テーマがなんとなくわかる・・・	
かったが、とても⾼高
い分類性能と、低い
レイテンシーで満⾜足            ⼤大規模だ / 難しい / ⾼高
      した。     形容詞・動詞	
 い / 低い  / 満⾜足する

                         評価がなんとなくわかる・・・	
                  22
Jubatusにおける特徴抽出のコンセプト



           全ての⼈人に機械学習を!


l    ちょっと設定を書けば、あとはよろしくやってくれる

l    しかし、現実は難しいのでチューニングがなるべく簡単
      にできるように・・・




                 23
現在の特徴抽出の流流れ

         文字列情報の変換	

      ⽂文字列列フィ          ⽂文字列列特
        ルター             徴抽出
                                特徴ベク
データ
                                 トル

      数値フィル            数値特徴
       ター               抽出


          数値情報の変換	

                24
⼊入⼒力力データの与え⽅方


( [ ("user/id", "ippy"),
    ("user/name", "Loren Ipsum"),
    ("message", "<H>Hello World</H>") ],
  [ ("user/age", 29) ,
    ("user/income", 100000) ] )


l    与えられるデータはシンプルなキー・バリュー
l    バリューは⽂文字列列と数値のみ
      l  画像や⾳音声などの扱いは今後検討・・・

l    各プログラミング⾔言語ごとに与え⽅方は微妙に異異なる
                     25
⼊入⼒力力データの与え⽅方  ⽂文字列列情報

       ⽂文字列列のキー   ⽂文字列列の値

( [ ("user/id", "ippy"),
    ("user/name", "Loren Ipsum"),
    ("message", "<H>Hello World</H>") ],
  [ ("user/age", 29) ,
    ("user/income", 100000) ] )


l    タプルの1番⽬目の要素は⽂文字列列のデータ
l    効率率率の都合でタプルの配列列


                     26
⼊入⼒力力データの与え⽅方  数値情報


( [ ("user/id", "ippy"),
    ("user/name", "Loren Ipsum"),
    ("message", "<H>Hello World</H>") ],
  [ ("user/age", 29) ,
    ("user/income", 100000) ] )

       ⽂文字列列のキー     数値型の値

l    タプルの2番⽬目の要素は数値型のデータ
l    これもタプルの配列列

                     27
特徴抽出に基本的な考え⽅方


( [ ("user/id", "ippy"),           タグの除去
    ("user/name", "Loren Ipsum"),
    ("message", "<H>Hello World</H>") ],
  [ ("user/age", 29) ,
    ("user/income", 100000) ] )    単語の抽出



l    ⽣生のデータはこのままでは扱えない
l    ⽣生データから必要な情報を取り出してベクトルに変換す
      る
                   28
変換規則の書き⽅方の例例
{
    "string_filter_types": {},      ⽂文字列列フィルター
    "string_filter_rules": [],
    "num_filter_types": {},
    "num_filter_rules": [],
                                     数値フィルター
    "string_types": {},
    "string_rules":
      [ { "key": "*", "type": "space",
         "sample_weight": "bin”,
         "global_weight": "bin" }      ⽂文字列列特徴
      ],
    "num_types": {},
    "num_rules": [                      数値特徴
      { "key": "*", "type": "num" }
    ]
}                    もう少し簡単に書けるようにしたい…	
                        29
特徴抽出規則の書き⽅方
                                    1. マッチ規則
            “string_rules”: [
              { "key": "*",         2. 特徴抽出の⼿手法
                "type": "space",
                "sample_weight": "bin”,
                                           3. 重み付け
                "global_weight": "bin" } ]


l    上記の設定は、
      1.    すべてのキーに対して、
      2.    ”space”という特徴抽出を施して、
      3.    重みを1に設定する
l    ということを書いている
l    num_rulesも基本的に同じ
                            30
引数の必要な特徴抽出器の書き⽅方
                               変換の名前
        "string_types": {
          "bigram": {
                                       種類
            "method": "ngram",
            "char_num": "2" } },
        "string_rules”: [      引数(method依存)
          { "key": "message",
            "type": "bigram",       ruleに指定
            "sample_weight": "tf",
            "global_weight": "bin" }, …]

l    XXX_typesで引数付きで抽出器を定義
       l  定義の仕⽅方はマニュアル参照

l    あとは、XXX_rulesで使えるようになる
                      31
前処理理をしてから特徴抽出したい場合

                                 タグ除去

(“message”, "<H>Hello World</H>”)    RT除去
(“twit”, “Thanks RT: Here you are”)
(“nationaliy”, “JAPAN”)
                               ⼤大⽂文字・⼩小⽂文字



l    タグなどのデータ固有のゴミ情報を取り除きたい
l    前処理理をしたい場合はフィルターを使う


                    32
フィルターを掛けてから処理理する⽅方法

  “string_filter_types”: { 正規表現フィルター
    “detag”: {
       “method”: “regexp”,
                                  パターン
       “pattern”: “<[^>]*>”,
       “replace”: “” }, …
  }, …                          置き換え⽂文字列列
  “string_filter_rules”: [
    { “key”: “message”,
       “type”: “detag”,          変換後の格納先
       “suffix”: “-detagged”}, … ]
l    xxx_types で定義を書く
l    xxx_rules で適⽤用規則を書く
                       33
プラグインの使い⽅方

“string_types”: {
  “mecab”: {
    “method”: “dynamic”,
    “function”: “create”,
    “path”:
       “/usr/local/lib/libmecab_splitter.so”
  }, …
}

l    先と同様XXX_typesで定義できる
l    methodにdynamic、pathに.soヘのフルパス、function
      にプラグイン固有の関数名を指定する

                       34
プラグインの作り⽅方
#include <jubatus/plugin.hpp>

class my_splitter : public jubatus::word_splitter {
 public:
     void split(const string& string,
                vector<pair<size_t, size_t> >&
ret_boundaries) {
      // do somehting
   }
};

extern "C" {
  my_splitter* create(const map<string, string>&
params) {
    return new my_splitter();
  }
}
                         35
プラグインの作り⽅方
#include <jubatus/plugin.hpp>     ひな形は全部この
                                     ヘッダ
class my_splitter : public jubatus::word_splitter {
 public:
     void split(const string& string,
                vector<pair<size_t, size_t> >&
ret_boundaries) {
      // do somehting
   }
};

extern "C" {
  my_splitter* create(const map<string, string>&
params) {
    return new my_splitter();
  }
}
                         36
プラグインの作り⽅方
#include <jubatus/plugin.hpp>

class my_splitter : public jubatus::word_splitter {
 public:
     void split(const string& string,
                vector<pair<size_t, size_t> >&
ret_boundaries) {
      // do somehting
   }                         ひな形クラスを継承して、
};                             やりたい処理理を記述

extern "C" {
  my_splitter* create(const map<string, string>&
params) {
    return new my_splitter();
  }
}
                         37
プラグインの作り⽅方
#include <jubatus/plugin.hpp>

class my_splitter : public jubatus::word_splitter {
 public:
     void split(const string& string,
                vector<pair<size_t, size_t> >&
ret_boundaries) {
      // do somehting
   }                           インスタンスを⽣生成
};
                                する関数を記述
extern "C" {
  my_splitter* create(const map<string, string>&
params) {
    return new my_splitter();
  }
}
                         38
特徴抽出の今後の予定

l    マルチメディアデータへの対応
      l    画像
      l    ⾳音声
      l    映像
      l    etc.


l    プラグインの管理理
l    より複雑なフローの検討




                    39
まとめ

l    特徴抽出と機械学習の2つの部分に別れる

l    機械学習
      l    分類問題、特にオンライン線形分類器を実装
      l    さらに分散学習している
l    特徴抽出
      l    誰にでも簡単に機械学習を!
      l    現在はテキストデータと数値データのみに対応


l    皆さん使ってみてください!


                        40
ご清聴ありがとうございました




41

Weitere ähnliche Inhalte

Was ist angesagt?

機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
Yuya Unno
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tatsuya Tojima
 
Jubatus使ってみた 作ってみたJubatus
Jubatus使ってみた 作ってみたJubatusJubatus使ってみた 作ってみたJubatus
Jubatus使ってみた 作ってみたJubatus
JubatusOfficial
 
はてなインターン「機械学習」
はてなインターン「機械学習」はてなインターン「機械学習」
はてなインターン「機械学習」
Hatena::Engineering
 

Was ist angesagt? (20)

Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識Pythonとdeep learningで手書き文字認識
Pythonとdeep learningで手書き文字認識
 
機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks機械学習チュートリアル@Jubatus Casual Talks
機械学習チュートリアル@Jubatus Casual Talks
 
機械学習 入門
機械学習 入門機械学習 入門
機械学習 入門
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages. Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
 
画像認識で物を見分ける
画像認識で物を見分ける画像認識で物を見分ける
画像認識で物を見分ける
 
TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門TensorFlowによるニューラルネットワーク入門
TensorFlowによるニューラルネットワーク入門
 
Jubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCTJubatusにおける機械学習のテスト@MLCT
Jubatusにおける機械学習のテスト@MLCT
 
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォームJubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用
 
ディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみたディープラーニングで株価予測をやってみた
ディープラーニングで株価予測をやってみた
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
Tokyo.R 41 サポートベクターマシンで眼鏡っ娘分類システム構築
 
協調フィルタリング with Mahout
協調フィルタリング with Mahout協調フィルタリング with Mahout
協調フィルタリング with Mahout
 
Jubatus使ってみた 作ってみたJubatus
Jubatus使ってみた 作ってみたJubatusJubatus使ってみた 作ってみたJubatus
Jubatus使ってみた 作ってみたJubatus
 
はてなインターン「機械学習」
はてなインターン「機械学習」はてなインターン「機械学習」
はてなインターン「機械学習」
 
機械学習
機械学習機械学習
機械学習
 
「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"「深層学習」勉強会LT資料 "Chainer使ってみた"
「深層学習」勉強会LT資料 "Chainer使ってみた"
 
ディープニューラルネット入門
ディープニューラルネット入門ディープニューラルネット入門
ディープニューラルネット入門
 

Andere mochten auch

パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPANパーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
Yahoo!デベロッパーネットワーク
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
takaya imai
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト
Teppei Baba
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
 
いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標
圭輔 大曽根
 

Andere mochten auch (19)

機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 
NW_#secccamp
NW_#secccampNW_#secccamp
NW_#secccamp
 
Ddos
DdosDdos
Ddos
 
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPANパーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN
 
クラシックな機械学習の入門  11.評価方法
クラシックな機械学習の入門  11.評価方法クラシックな機械学習の入門  11.評価方法
クラシックな機械学習の入門  11.評価方法
 
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
Microsoft Malware Classification Challenge 上位手法の紹介 (in Kaggle Study Meetup)
 
マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会
マルウェア分類に用いられる特徴量	 Kaggle - Malware Classification Challenge勉強会マルウェア分類に用いられる特徴量	 Kaggle - Malware Classification Challenge勉強会
マルウェア分類に用いられる特徴量 Kaggle - Malware Classification Challenge勉強会
 
みんな大好き機械学習
みんな大好き機械学習みんな大好き機械学習
みんな大好き機械学習
 
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
サポートベクトルデータ記述法による異常検知 in 機械学習プロフェッショナルシリーズ輪読会
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
 
Random Forestsとその応用
Random Forestsとその応用Random Forestsとその応用
Random Forestsとその応用
 
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~Pythonによる機械学習入門 ~SVMからDeep Learningまで~
Pythonによる機械学習入門 ~SVMからDeep Learningまで~
 
画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量画像認識の初歩、SIFT,SURF特徴量
画像認識の初歩、SIFT,SURF特徴量
 
機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト機会学習ハッカソン:ランダムフォレスト
機会学習ハッカソン:ランダムフォレスト
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標
 
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
 
機械学習概論 講義テキスト
機械学習概論 講義テキスト機械学習概論 講義テキスト
機械学習概論 講義テキスト
 
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
 

Ähnlich wie Jubatusの特徴変換と線形分類器の仕組み

第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
JubatusOfficial
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Yuya Unno
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
Mie Mori
 

Ähnlich wie Jubatusの特徴変換と線形分類器の仕組み (20)

Overview and Roadmap
Overview and RoadmapOverview and Roadmap
Overview and Roadmap
 
第1回 Jubatusハンズオン
第1回 Jubatusハンズオン第1回 Jubatusハンズオン
第1回 Jubatusハンズオン
 
MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習MapReduceによる大規模データを利用した機械学習
MapReduceによる大規模データを利用した機械学習
 
2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainer2017-05-30_deepleaning-and-chainer
2017-05-30_deepleaning-and-chainer
 
tut_pfi_2012
tut_pfi_2012tut_pfi_2012
tut_pfi_2012
 
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
Session4:「先進ビッグデータ応用を支える機械学習に求められる新技術」/比戸将平
 
Jubatusが目指すインテリジェンス基盤
Jubatusが目指すインテリジェンス基盤Jubatusが目指すインテリジェンス基盤
Jubatusが目指すインテリジェンス基盤
 
Jokyokai
JokyokaiJokyokai
Jokyokai
 
Jubatusでマルウェア分類
Jubatusでマルウェア分類Jubatusでマルウェア分類
Jubatusでマルウェア分類
 
令和元年度 実践セミナー - Deep Learning 概論 -
令和元年度 実践セミナー - Deep Learning 概論 -令和元年度 実践セミナー - Deep Learning 概論 -
令和元年度 実践セミナー - Deep Learning 概論 -
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTUREの他のモジュール・関連プロジェクトの紹介
 
最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17最先端NLP勉強会2017_ACL17
最先端NLP勉強会2017_ACL17
 
Semantic segmentation2
Semantic segmentation2Semantic segmentation2
Semantic segmentation2
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
 
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
 
Deep learning勉強会20121214ochi
Deep learning勉強会20121214ochiDeep learning勉強会20121214ochi
Deep learning勉強会20121214ochi
 

Mehr von JubatusOfficial

Mehr von JubatusOfficial (20)

新機能紹介 1.0.6
新機能紹介 1.0.6新機能紹介 1.0.6
新機能紹介 1.0.6
 
Python 特徴抽出プラグイン
Python 特徴抽出プラグインPython 特徴抽出プラグイン
Python 特徴抽出プラグイン
 
Jubakitの解説
Jubakitの解説Jubakitの解説
Jubakitの解説
 
Jubatus解説本の紹介
Jubatus解説本の紹介Jubatus解説本の紹介
Jubatus解説本の紹介
 
Jubatus 1.0 の紹介
Jubatus 1.0 の紹介Jubatus 1.0 の紹介
Jubatus 1.0 の紹介
 
地域の魅力を伝えるツアーガイドAI
地域の魅力を伝えるツアーガイドAI地域の魅力を伝えるツアーガイドAI
地域の魅力を伝えるツアーガイドAI
 
JUBARHYME
JUBARHYMEJUBARHYME
JUBARHYME
 
小町の溜息
小町の溜息小町の溜息
小町の溜息
 
単語コレクター(文章自動校正器)
単語コレクター(文章自動校正器)単語コレクター(文章自動校正器)
単語コレクター(文章自動校正器)
 
銀座のママ
銀座のママ銀座のママ
銀座のママ
 
小町のレス数が予測できるか試してみた
小町のレス数が予測できるか試してみた小町のレス数が予測できるか試してみた
小町のレス数が予測できるか試してみた
 
新聞から今年の漢字を予測する
新聞から今年の漢字を予測する新聞から今年の漢字を予測する
新聞から今年の漢字を予測する
 
かまってちゃん小町
かまってちゃん小町かまってちゃん小町
かまってちゃん小町
 
発言小町からのプロファイリング
発言小町からのプロファイリング発言小町からのプロファイリング
発言小町からのプロファイリング
 
コンテンツマーケティングでレコメンドエンジンが必要になる背景とその活用
コンテンツマーケティングでレコメンドエンジンが必要になる背景とその活用コンテンツマーケティングでレコメンドエンジンが必要になる背景とその活用
コンテンツマーケティングでレコメンドエンジンが必要になる背景とその活用
 
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
まだCPUで消耗してるの?Jubatusによる近傍探索のGPUを利用した高速化
 
jubarecommenderの紹介
jubarecommenderの紹介jubarecommenderの紹介
jubarecommenderの紹介
 
JubaQLご紹介
JubaQLご紹介JubaQLご紹介
JubaQLご紹介
 
Jubaanomalyについて
JubaanomalyについてJubaanomalyについて
Jubaanomalyについて
 
jubabanditの紹介
jubabanditの紹介jubabanditの紹介
jubabanditの紹介
 

Jubatusの特徴変換と線形分類器の仕組み

  • 1. Jubatusの特徴変換と 線形分類器の仕組み 2011/11/07 株式会社Preferred Infrastructure 海野  裕也 (@unnonouno)
  • 2. 本発表のねらい l  現状のJubatusで何が出来るのかを機能の⾯面から解説 l  線形分類器の仕組みと使い⽅方 l  特徴抽出器の仕組みと使い⽅方 2
  • 3. 機械学習とは? l  データから有⽤用な規則、ルール、知識識表現、判断基準な どを抽出 l  データがあるところ、どこでも使える l  様々な分野の問題に利利⽤用可能 適用分野 レコメンデー ションクラス 分類、識識別 市場予測 評判分析 タリング 情報抽出 ⽂文字認識識 ロボット 画像解析 検索索ランキン 遺伝⼦子分析 ⾦金金融 医療療診断 グ 3
  • 4. タスク固有の問題と⼿手法の分離離 特徴抽出 機械学習 分野に依存しない 様々な⼿手法・理理論論を 特徴を捉えた抽象化されたデータ 適⽤用可能 ⽂文書 (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,  … センサ情報 4
  • 5. 現状で実装されているモジュール l  現在実装されているのは、⽂文書データからの特徴ベクト ルへの変換と、それに対する分類器 分野に依存しない 様々な⼿手法・理理論論を 特徴を捉えた抽象化されたデータ 適⽤用可能 ⽂文書 (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,  … センサ情報 5
  • 8. 現在Jubatusで実装されているのは多クラス分類 l  ⼊入⼒力力xに対し、出⼒力力yを予測する タスク ⼊入⼒力力x 出⼒力力y メール分類 メール スパム or 普通 or 重要等 Twitterのユーザー分析 Tweet ユーザーの性別、職業、年年齢など 電気使⽤用料料需要の予測 パケット 各サーバーの予測使⽤用量量(連続値) 広告のコンバージョン予測 アクセス履履 クリック、コンバージョンするか 歴、広告 監視カメラ解析 監視カメラ 部屋の状態(明かりがついている? 画像 ⼈人がいるか?など) 8
  • 9. ⾮非定形データからの特徴ベクトルへの変換 l  Jubatusは⽂文書や画像などの⾮非定形データの解析も想定 し、標準でこうした特徴抽出機構を備える l  変換後はベクトルとなる l  キーと値のペアになっていると思えばOK ⽇日本電信電話株式会社(東京都千代⽥田区、代表取締役社⻑⾧長:三浦  惺、以下「NTT」) と株式会社プリファードインフラストラクチャー(東京都⽂文京区、代表取締役社⻑⾧長:⻄西川 徹、以下「PFI社」)は、ビッグデータ*1と呼ばれる⼤大規模データをリアルタイムに⾼高速分 析処理理する基盤技術「Jubatus*2」(第1版)を開発しました。 例例:⼊入⼒力力が⾔言語データの場合 単語/キーワード N-‐‑‒gram ⽇日本電信電話株式会社  :  1 Ju:  1 東京都  :  2 ub:  2 詳細は後述 千代⽥田区  :  1 ba:1 、代表取締役社⻑⾧長  :  2 、at:1 NTT  :  1 tu:1 プリファードインフラストラクチャー  :  1 9 us:1
  • 10. 多クラス分類の中の、線形分類器が実装されている l  ⼊入⼒力力は特徴ベクトル l  各特徴量量にクラスごとの重みがある l  重みの総和(内積)が各クラスの得点とする 入力:「野球の後のカレーライスはおいしい」 重み スコア最⼤大 1:スポーツ 2:グルメ 3:政治 特徴ベクトル カレー -1 2 -1 カレー 1 仕分け -1 -1 2 ライス 1 ライス -1 1 1 野球 1 野球 2 -1 -1 10
  • 11. 線形分類器の機械学習 l  機械学習で重みを⾃自動調整する l  調整の基準や、計算⽅方法で様々な種類が存在する l  単純ベイズ l  パーセプトロン l  最⼤大エントロピー法 l  サポートベクトルマシン l  Jubatusではオンライン学習アルゴリズムが実装されて いる 11
  • 12. オンライン学習は学習⼿手法の⽅方式の⼀一つ l  バッチ学習 l  データを全体を⾒見見て重みを調整する l  参考書を全部解いてから答え合わせ 学習器 l  オンライン学習 l  1つずつデータを⾒見見て重みの更更新を繰り返す l  ⼀一問ずつ解いて答え合わせ 学習器 12
  • 13. オンライン学習の重み更更新のイメージ l  分類に間違えたら正しく分類できるように微調整 l  微調整の⽅方法の違いで学習⼿手法の良良し悪しが決まる 特徴ベクトル 重み 正しいクラス 間違えたクラス 正しいクラス 間違えたクラス 正解クラスの重みが小さい 13 正しく分類できるように調整
  • 14. オンライン学習の特徴 l  オンライン学習は更更新が早い l  同じ学習時間に対して、経験的に精度度も⾼高い l  Jubatusでは最新の⼿手法を含む、様々な⼿手法が実装され ている l  Perceptron (1958) l  Passive Aggressive (PA) (2003) l  Confidence Weighted Learning (CW) (2008) l  AROW (2009) l  Normal HERD (NHERD) (2010) 14
  • 15. Jubatusの分散学習:緩いモデル共有 l  たまに全学習器の重みを混ぜ合わせる l  全サーバーで重みの平均をとる (Iterative Parameter Mixture) l  重み情報だけを交換するので軽い l  ⾮非同期・オンラインでMapReduceしているイメージに 近い 15
  • 16. Jubatusにおける分散機械学習のイメージ 学習器 l  みんな個別に⾃自学⾃自習 l  たまに勉強会で情報交換 l  ⼀一⼈人で勉強するより効率率率がいいはず! 16
  • 17. 線形分類器以外の分類⼿手法はないのか? l  ⾮非線形の分類器はたくさんあります l  決定⽊木 l  カーネル法 l  ニューラルネットワーク l  分類速度度、シンプルさ、学習速度度などの点で線形分類器 は⾮非常に優れる 17
  • 18. 今後のJubatusの機械学習 l  「緩いモデル共有」モデルが他の学習問題でも有効に働 くことを検証 l  そのための⼿手法の研究開発&実証実験 l  「勉強会モデル」のアナロジーで⾔言えばうまく⾏行行 く? l  今後、順次実装して公開していきます 18
  • 20. 特徴抽出とは l  ⽣生データから機械学習で扱いやすい形に変換する l  あるいは、特徴的な部分を抽出する l  普通はベクトル(キー・バリューの集合)で表現される ベクトル 文書 1 1 0 1 シーケンス 画像 特徴抽出 グラフ 音声 20
  • 21. 特徴抽出の仕⽅方はデータの種類によって異異なる l  データに応じて利利⽤用できる特徴はいろいろ データ種類 特徴量量の例例 ⽂文書 ⽂文字、品詞、単語、係り受け、主語 述語・・・ 画像 ⾊色、明るさ、形、模様、輪輪郭・・・ ⾳音声 ⾳音程、波形、⻑⾧長さ、強さ・・・ ⾏行行動履履歴 時刻、場所、⼿手段、同伴者・・・ 21
  • 22. 分析⽬目的によっても最適な特徴量量は異異なる l  適切切な特徴が抽出できないと良良い結果は得られない Jubatusは⼤大規模な Jubatus / データ / 分 名詞 散  / 機械学習  / ライブラ データに対して、分 散機械学習するため リ  / インストール  / 分類 のライブラリだ。イ 性能  / レイテンシー ンストールは難し テーマがなんとなくわかる・・・ かったが、とても⾼高 い分類性能と、低い レイテンシーで満⾜足 ⼤大規模だ / 難しい / ⾼高 した。 形容詞・動詞 い / 低い  / 満⾜足する 評価がなんとなくわかる・・・ 22
  • 23. Jubatusにおける特徴抽出のコンセプト 全ての⼈人に機械学習を! l  ちょっと設定を書けば、あとはよろしくやってくれる l  しかし、現実は難しいのでチューニングがなるべく簡単 にできるように・・・ 23
  • 24. 現在の特徴抽出の流流れ 文字列情報の変換 ⽂文字列列フィ ⽂文字列列特 ルター 徴抽出 特徴ベク データ トル 数値フィル 数値特徴 ター 抽出 数値情報の変換 24
  • 25. ⼊入⼒力力データの与え⽅方 ( [ ("user/id", "ippy"), ("user/name", "Loren Ipsum"), ("message", "<H>Hello World</H>") ], [ ("user/age", 29) , ("user/income", 100000) ] ) l  与えられるデータはシンプルなキー・バリュー l  バリューは⽂文字列列と数値のみ l  画像や⾳音声などの扱いは今後検討・・・ l  各プログラミング⾔言語ごとに与え⽅方は微妙に異異なる 25
  • 26. ⼊入⼒力力データの与え⽅方  ⽂文字列列情報 ⽂文字列列のキー ⽂文字列列の値 ( [ ("user/id", "ippy"), ("user/name", "Loren Ipsum"), ("message", "<H>Hello World</H>") ], [ ("user/age", 29) , ("user/income", 100000) ] ) l  タプルの1番⽬目の要素は⽂文字列列のデータ l  効率率率の都合でタプルの配列列 26
  • 27. ⼊入⼒力力データの与え⽅方  数値情報 ( [ ("user/id", "ippy"), ("user/name", "Loren Ipsum"), ("message", "<H>Hello World</H>") ], [ ("user/age", 29) , ("user/income", 100000) ] ) ⽂文字列列のキー 数値型の値 l  タプルの2番⽬目の要素は数値型のデータ l  これもタプルの配列列 27
  • 28. 特徴抽出に基本的な考え⽅方 ( [ ("user/id", "ippy"), タグの除去 ("user/name", "Loren Ipsum"), ("message", "<H>Hello World</H>") ], [ ("user/age", 29) , ("user/income", 100000) ] ) 単語の抽出 l  ⽣生のデータはこのままでは扱えない l  ⽣生データから必要な情報を取り出してベクトルに変換す る 28
  • 29. 変換規則の書き⽅方の例例 { "string_filter_types": {}, ⽂文字列列フィルター "string_filter_rules": [], "num_filter_types": {}, "num_filter_rules": [], 数値フィルター "string_types": {}, "string_rules": [ { "key": "*", "type": "space", "sample_weight": "bin”, "global_weight": "bin" } ⽂文字列列特徴 ], "num_types": {}, "num_rules": [ 数値特徴 { "key": "*", "type": "num" } ] } もう少し簡単に書けるようにしたい… 29
  • 30. 特徴抽出規則の書き⽅方 1. マッチ規則 “string_rules”: [ { "key": "*", 2. 特徴抽出の⼿手法 "type": "space", "sample_weight": "bin”, 3. 重み付け "global_weight": "bin" } ] l  上記の設定は、 1.  すべてのキーに対して、 2.  ”space”という特徴抽出を施して、 3.  重みを1に設定する l  ということを書いている l  num_rulesも基本的に同じ 30
  • 31. 引数の必要な特徴抽出器の書き⽅方 変換の名前 "string_types": { "bigram": { 種類 "method": "ngram", "char_num": "2" } }, "string_rules”: [ 引数(method依存) { "key": "message", "type": "bigram", ruleに指定 "sample_weight": "tf", "global_weight": "bin" }, …] l  XXX_typesで引数付きで抽出器を定義 l  定義の仕⽅方はマニュアル参照 l  あとは、XXX_rulesで使えるようになる 31
  • 32. 前処理理をしてから特徴抽出したい場合 タグ除去 (“message”, "<H>Hello World</H>”) RT除去 (“twit”, “Thanks RT: Here you are”) (“nationaliy”, “JAPAN”) ⼤大⽂文字・⼩小⽂文字 l  タグなどのデータ固有のゴミ情報を取り除きたい l  前処理理をしたい場合はフィルターを使う 32
  • 33. フィルターを掛けてから処理理する⽅方法 “string_filter_types”: { 正規表現フィルター “detag”: { “method”: “regexp”, パターン “pattern”: “<[^>]*>”, “replace”: “” }, … }, … 置き換え⽂文字列列 “string_filter_rules”: [ { “key”: “message”, “type”: “detag”, 変換後の格納先 “suffix”: “-detagged”}, … ] l  xxx_types で定義を書く l  xxx_rules で適⽤用規則を書く 33
  • 34. プラグインの使い⽅方 “string_types”: { “mecab”: { “method”: “dynamic”, “function”: “create”, “path”: “/usr/local/lib/libmecab_splitter.so” }, … } l  先と同様XXX_typesで定義できる l  methodにdynamic、pathに.soヘのフルパス、function にプラグイン固有の関数名を指定する 34
  • 35. プラグインの作り⽅方 #include <jubatus/plugin.hpp> class my_splitter : public jubatus::word_splitter { public: void split(const string& string, vector<pair<size_t, size_t> >& ret_boundaries) { // do somehting } }; extern "C" { my_splitter* create(const map<string, string>& params) { return new my_splitter(); } } 35
  • 36. プラグインの作り⽅方 #include <jubatus/plugin.hpp> ひな形は全部この ヘッダ class my_splitter : public jubatus::word_splitter { public: void split(const string& string, vector<pair<size_t, size_t> >& ret_boundaries) { // do somehting } }; extern "C" { my_splitter* create(const map<string, string>& params) { return new my_splitter(); } } 36
  • 37. プラグインの作り⽅方 #include <jubatus/plugin.hpp> class my_splitter : public jubatus::word_splitter { public: void split(const string& string, vector<pair<size_t, size_t> >& ret_boundaries) { // do somehting } ひな形クラスを継承して、 }; やりたい処理理を記述 extern "C" { my_splitter* create(const map<string, string>& params) { return new my_splitter(); } } 37
  • 38. プラグインの作り⽅方 #include <jubatus/plugin.hpp> class my_splitter : public jubatus::word_splitter { public: void split(const string& string, vector<pair<size_t, size_t> >& ret_boundaries) { // do somehting } インスタンスを⽣生成 }; する関数を記述 extern "C" { my_splitter* create(const map<string, string>& params) { return new my_splitter(); } } 38
  • 39. 特徴抽出の今後の予定 l  マルチメディアデータへの対応 l  画像 l  ⾳音声 l  映像 l  etc. l  プラグインの管理理 l  より複雑なフローの検討 39
  • 40. まとめ l  特徴抽出と機械学習の2つの部分に別れる l  機械学習 l  分類問題、特にオンライン線形分類器を実装 l  さらに分散学習している l  特徴抽出 l  誰にでも簡単に機械学習を! l  現在はテキストデータと数値データのみに対応 l  皆さん使ってみてください! 40