complement naive bayesによるワードの自動カテゴリ分類

47
Complement Naive Bayesによる ワードの自動カテゴリ分類

Upload: moai-kids

Post on 25-May-2015

4.969 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayesによるワードの自動カテゴリ分類

Page 2: Complement Naive Bayesによるワードの自動カテゴリ分類

アジェンダ

•先月から追加した機能のご紹介•ランキング算出アルゴリズムの変更(別資料)•ワード自動カテゴライズ•データ解析結果のご報告•属性ごとのデータ分析 (別資料)

Page 3: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayes

Page 4: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayesとは

✓Naive Bayesの一種

✓はてなブックマークの自動カテゴリー分類にも使用されているアルゴリズム

Page 5: Complement Naive Bayesによるワードの自動カテゴリ分類

✓以下の順で説明をしていきます。

- Naive Bayesについて- ベイズの定理について- 多項Naive Bayesについて- Complement Naive Bayesについて- Complement Naive Bayesを用いた自動ワードカテゴライズ

Page 6: Complement Naive Bayesによるワードの自動カテゴリ分類

そもそもNaive Bayesとは

✓ベイズの定理を用いた単純(Naive)な確率的分類器。

✓事前に訓練した結果(教師あり学習)を元に、「どのカテゴリに分類されるか」を推定するアルゴリズム。

Page 7: Complement Naive Bayesによるワードの自動カテゴリ分類

ベイズの定理✓確率論をベースに推論を行う定理。

✓P(B) = 事象Bが発生する確率(事前確率, prior probability)P(B|A) = 事象Aが起きた後での、事象Bの確率(事後確率, posterior probability)※「確率」は、過去に獲得した統計データから近似的に算出する事が多い (世の中全てを見渡して「確率」を計算することは現実的に難しいため)

✓ワードのカテゴライズに応用する場合は以下のように置き換えて考える。P(B) = カテゴリの出現確率P(B|A) = ワードAが、カテゴリBに分類される確率

Page 8: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルターを例に考えてみる。

✓目的:メールを「spam」と「それ以外」の2つのカテゴリに分類をする

✓受信したメール数:100件

✓そのうちspamっぽいメール:20件

✓最初は、人の目で「spam」「それ以外」の判定を行い、学習データとして用いる。

Page 9: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<データの学習>

✓メール本文を、何かしらの手段で単語に分割する(形態素解析による分かち書き等々)

✓「spam」メールに書かれていた単語の場合は「spam」としてカウント。「それ以外」の場合は「それ以外」としてカウントし、学習する。

Page 10: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<データの学習>

ワード spam それ以外

お世話になります 3 12

よろしくお願いいたします 1 9

エロ 15 0

紳士的 9 1

・・・

Page 11: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<ベイズ確率の計算>

✓カテゴリの出現確率 P(B):spam :20/100 = 0.2それ以外:80/100 = 0.8

✓ワードの出現確率 P(A)、P(A|B):

- お世話になります:メール全体の出現確率(P(A)):15/100 = 0.15spamである確率(P(A|B)) :3/15 = 0.2それ以外の確率 (P(A|B)) :12/15 = 0.8 ・   ・

Page 12: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<ベイズ確率の計算>

✓「お世話になります」のspamらしさP(spam|お世話になります) = 0.2 * 0.2 / 0.15 = 0.267

✓「お世話になります」のそれ以外らしさP(それ以外|お世話になります) = 0.8 * 0.8 / 0.15 = 4.267

Page 13: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<ベイズ確率の計算>

✓「紳士的」のspamらしさP(spam|紳士的) = 0.9 * 0.2 / 0.1 = 1.8

✓「紳士的」のそれ以外らしさP(それ以外|紳士的) = 0.1 * 0.8 / 0.1 = 0.8

Page 14: Complement Naive Bayesによるワードの自動カテゴリ分類

メールのスパムフィルター<判定>

✓新たなメールを受信したら、メール本文中のワードを抽出する。

✓抽出したワード群の「spam」「それ以外」のベイズ確率を計算し、結果を掛け合わせる。実際には以下のような式になっています。

xi:あるドキュメント / xij:ドキュメントxiに含まれている単語 / ck:分類クラス

✓値が大きい方のカテゴリに分類する。

Page 15: Complement Naive Bayesによるワードの自動カテゴリ分類

✓以下の順で説明をしていきます。

- Naive Bayesについて- ベイズの定理について- 多項Naive Bayesについて- Complement Naive Bayesについて- Complement Naive Bayesを用いた自動ワードカテゴライズ

Page 16: Complement Naive Bayesによるワードの自動カテゴリ分類

多項Naive Bayes

✓Naive Bayesを用いて文書分類を行う際に用いられる改良手法。

✓数学的な深い部分までは説明できません。。

✓Complement Naive Bayesのベースとなっている。

✓表層的には

- ドキュメント中の単語発生数を評価対象に- ドキュメント数やワード数の多い/少ないによるバイアスを除くために対数化。

Page 17: Complement Naive Bayesによるワードの自動カテゴリ分類

多項Naive Bayes

✓計算式は以下

θ→c (※注:上付矢印):クラスCである確率 / f:文書ベクトル(f1,f2.......fi) / fi:ある語が文書iで発生する回数 / θci:クラスCの任意の文書のある語を選んだ時、その語がiである確率

✓文書モデルに適用しやすくするため文書内での単語の出現数を考慮し、バイアスになりそうな値を補正した、と理解してください。

Page 18: Complement Naive Bayesによるワードの自動カテゴリ分類

✓以下の順で説明をしていきます。

- Naive Bayesについて- ベイズの定理について- 多項Naive Bayesについて- Complement Naive Bayesについて- Complement Naive Bayesを用いた自動ワードカテゴライズ

Page 19: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayes✓Complement = 補集合 = ある集合に含まれない要素の集まり例:集合A(ピンク)の補集合はAc(灰色)

✓「そのカテゴリには属さない」確率を積み上げて行く事で、消去法で分類を行う、というアプローチ。

✓一つの特徴だけで判断するより、全てのカテゴリでの確率を考慮した方がバイアスが減らせる。

Page 20: Complement Naive Bayesによるワードの自動カテゴリ分類

分かりやすいかどうか良くわからない例え

✓血液型診断を行う時「A型」である確率が高い根拠を元に「A型」と判定するのがNaive Bayes(多項Naive Bayes)「xxx君ってA型っぽいよねー」 →A型

「B型」「O型」「AB型」ではない、という根拠を元に「A型」と判定するのがComplement Naive Bayes「xxx君ってB型/O型/AB型っぽくないよねー」 →A型

Page 21: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayes

✓計算式は以下

 :あるクラスcで「ない時」に語i が発生する確率

✓あるクラスである確率から、あるクラスで「無い時」の確率の累積を減算している。

Page 22: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayes

✓既存手法に比べて以下の点で有利と言われている。

- データのバラツキ、バイアスを抑えられる✓他手法(SVMなど)と比べて

- 実装が簡単- 学習時間が少なくてすむ- 性能も悪く無い✓ただしカテゴリが少ない(2つ、など)の場合は効果はそれほど差がない。

Page 23: Complement Naive Bayesによるワードの自動カテゴリ分類

Complement Naive Bayes

✓多項Naive BayesとComplement Naive Bayesの性能比。

- 以下にまとめています。http://www.slideshare.net/moaikids/complement-naive-bayes-1071415

- 概ね精度が上がる事を確認。

Page 24: Complement Naive Bayesによるワードの自動カテゴリ分類

ここまでのまとめ

✓Naive Bayes(ベイズ定理)は過去のデータを元に推論するアルゴリズム

✓文書分類の場合、以下の値が分かれば計算できる。「カテゴリの種類」「カテゴリの出現比率」「単語の出現比率」「単語のあるカテゴリでの出現比率」(「単語のあるドキュメントでの出現回数」)

✓Complement Naive Bayesは消去法的に数値のバイアスを少なくするアプローチを採用

Page 25: Complement Naive Bayesによるワードの自動カテゴリ分類

✓以下の順で説明をしていきます。

- Naive Bayesについて- ベイズの定理について- 多項Naive Bayesについて- Complement Naive Bayesについて- Complement Naive Bayesを用いた自動ワードカテゴライズ

Page 26: Complement Naive Bayesによるワードの自動カテゴリ分類

KeywordTracker

Page 27: Complement Naive Bayesによるワードの自動カテゴリ分類

Keyword Tracker✓ブログに書かれている記事内容を元に、話題のワードを抽出、ランキング✓日単位で「どんなワードが」「どのような文脈で」「どんなワードと一緒に」語られているかトラッキングする✓サイト公開しました。 http://kt.nd-ilab.jp/✓ブログにも書いてます。 http://ameblo.jp/just-do-neet/theme-10013611115.html

Page 28: Complement Naive Bayesによるワードの自動カテゴリ分類

ランキング

Page 29: Complement Naive Bayesによるワードの自動カテゴリ分類

ワード詳細

出現数の推移

係り受け関係にある動詞/形容詞等

共起語

Page 30: Complement Naive Bayesによるワードの自動カテゴリ分類

属性情報ブログサービス別の

投稿比率

性別/世代別/地域別

Page 31: Complement Naive Bayesによるワードの自動カテゴリ分類

Keyword Trackerのワードを自動カテゴライズ✓Complement Naive Bayesを用いてカテゴライズ

✓以下を素性として 、学習データとして使用。

- ワード(さだまさし)- ワードの共起語(トーク、コンサート、秋桜)※ワード、ワードの共起語は一緒くたにして監理

- ワードの係り受け語(聴く、歌う、長い)✓カテゴリは18分類+未分類

Page 32: Complement Naive Bayesによるワードの自動カテゴリ分類

Keyword Trackerのワードを自動カテゴライズ✓Complement Naive Bayesを用いてカテゴライズ

✓以下を素性として 、学習データとして使用。

- ワード(さだまさし)- ワードの共起語(トーク、コンサート、秋桜)※ワード、ワードの共起語は一緒くたにして監理

- ワードの係り受け語(聴く、歌う、長い)✓カテゴリは18分類+未分類

Page 33: Complement Naive Bayesによるワードの自動カテゴリ分類

画面

Page 34: Complement Naive Bayesによるワードの自動カテゴリ分類

画面

Page 35: Complement Naive Bayesによるワードの自動カテゴリ分類

現在(6/26)のカテゴリー一覧

Page 36: Complement Naive Bayesによるワードの自動カテゴリ分類

検証(学習データ)

✓以下の条件で学習データを用意。

- 5/26~6/8(2週間)のランキング上位100語を目視でカテゴリ分け- カテゴリ分けした単語の共起語、係り受け語はそのカテゴリに属する語として学習(さだまさしを「音楽」とカテゴライズした場合、「トーク」「コンサート」「歌う」等も「音楽」にカテゴライズ)- ワード:5,000語- 係り受け語:13,000語

Page 37: Complement Naive Bayesによるワードの自動カテゴリ分類

検証(判定)

✓以下の条件で判定。

- 6/17~6/21のランキング上位300語について自動カテゴリ分けを試みる- ワード、係り受け語それぞれについて、Complement Naive Bayesにてスコア算出。- 以下の条件でカテゴリーを特定するいずれかが当てはまらない場合は未分類とする‣ ワードのスコアの上位第一候補と第二候補の偏差が、一定の閾値以上の場合

‣ ワードの第一候補と、係り受けの第一候補が一致している時

Page 38: Complement Naive Bayesによるワードの自動カテゴリ分類

分類例:不快指数ワード 係り受け語

17 142.03405 17 255.1384212

1 89.15793778 14 235.7569467

12 80.08929312 10 230.6951871

14 75.31756523 1 212.2573512

6 73.74664433 15 205.8515873

✓ワードの第一候補と第二候補の差が大きい。

✓ワードと係り受け語の第一候補が一致

✓ちなみに左記の数字はカテゴリIDです(17は天気・天候、1はニュース)

Page 39: Complement Naive Bayesによるワードの自動カテゴリ分類

未分類例:エコうたワード 係り受け語

6 46.84068893 10 251.8073503

10 36.42535501 14 246.8438476

1 35.93577571 6 226.3724047

17 35.16675165 9 202.1863804

9 35.04823087 15 160.0091198

✓ワードの第一候補と第二候補の差が僅差

✓ワードと係り受け語の第一候補が一致していない

✓ちなみに10はテレビ、6はエンターテイメントです

Page 40: Complement Naive Bayesによるワードの自動カテゴリ分類

検証(精度)

✓5/26~6/8分の学習データを元に6/17~6/22のワードの自動カテゴライズを実施。分類結果が正しいかどうかは目視確認。

✓日によってバラツキがあるが、precision(適合率)が90%弱、recall(再現率)が70%弱

0

25

50

75

100

6/17 6/18 6/19 6/20 6/21 6/22

precision recall

Page 41: Complement Naive Bayesによるワードの自動カテゴリ分類

検証(カテゴリごとの数)

✓6/8~6/21のカテゴリそれぞれの分類数を集計

✓カテゴリによって差が大きい。✓流行/時流や、ワードの傾向などに影響されていると思われる

news 668 tv 248

politics 107 game 15

economic 71 sports 56

international 24 baseball 89

computer 10 football 321

entertainment 215 horse 126

music 17 season 16

movie 22 weather 61

animation 27 kuchikomi 20

Page 42: Complement Naive Bayesによるワードの自動カテゴリ分類

考察

✓適合率9割、再現率7割、という数字を許容できるのであれば、自動カテゴライズは比較的機能していると判断できる。

✓カテゴリ分けについては慎重に行う必要がある。今回についても、「エンターテイメント」と「TV」「映画」「音楽」等は包含関係があり、どちらにカテゴライズされるのが正しいか人目でも判断に苦しむケースがある

✓競馬やサッカー、経済など、共起語が特徴的(そのカテゴリでしか使われない)だと分類精度が高い。

Page 43: Complement Naive Bayesによるワードの自動カテゴリ分類

システム構築の観点から

✓基本的にワードカウントのみで処理ができるので、多くのシステムに容易に導入できそう。(SVMなどのアプローチに比して)

✓計算量も多く無いのでオンラインでの判定も可能。今回は、300ワードのカテゴライズにシングルスレッドで約10秒(30処理/秒)。

✓分散環境に展開しやすいアルゴリズムなのでHadoopなどでの計算にはうってつけ。

Page 44: Complement Naive Bayesによるワードの自動カテゴリ分類

まとめ

✓Keyword TrackerにComplement Naive Bayesを導入してみました。

✓現時点で適合率9割弱、再現率7割弱。

✓手軽にカテゴリ分類できるのでオススメのアプローチ

Page 45: Complement Naive Bayesによるワードの自動カテゴリ分類

おまけ

✓Complement Naive Bayesについては簡単なレポート資料も過去に作ったので、興味有る方はそちらも参照してください。http://www.slideshare.net/moaikids/complement-naive-bayes-1071415

Page 46: Complement Naive Bayesによるワードの自動カテゴリ分類

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

Page 47: Complement Naive Bayesによるワードの自動カテゴリ分類

質疑応答