SlideShare a Scribd company logo
1 of 6
Download to read offline
研究課題:Complement Naïve Bayes の検証




       新規開発局 プログラマ
          大平哲也




               1
1   はじめに
日々データが蓄積されていく CGM サービスにおいてドキュメントの整理・分類をすべて人手で行う
ことは限界があるため、コンピュータによる精度の高い自動分類が求められている。
自動分類の世界では実装の容易さから Naïve Bayes でのアプローチが一般的となっているが、
2003 年に MIT より発表された Complement Naïve Bayes が精度の優秀さで注目されている。
Naïve Bayes と比較してどの程度の精度向上が見られるのか、検証を行った。

まず Naïve Bayes、Multinomial Naïve Bayes、Complement Naïve Bayes それぞれのアルゴ
リズムについて簡単に解説した後、精度の比較を行う。


2   Naïve Bayes について
まず、Naïve Bayes のアルゴリズムの仕組みと、Naïve Bayes を用いたテキスト自動分類の精度に
ついて確認をする。
  2.1    アルゴリズムの内容
以下、Naïve Bayes についての解説を wikipedia より引用する。
  Naïve Bayes とは、強い(単純な)独立性仮定と共にベイズの定理を適用すること
  に基づいた単純な確率的分類器である。その元となる確率モデルは、より正確に言
  えば「独立特徴モデル; independent feature model」である。

    確率モデルの性質に基づき、単純ベイズ分類器は教師あり学習の設定で効率的に訓
    練可能である。多くの実用例では、単純ベイズ分類器のパラメータ推定には最尤法
    が使われる。つまり、単純ベイズ分類器を使用するにあたって、ベイズ確率やその
    他のベイズ的手法を使う必要はない。

    設計も仮定も非常に単純であるにも関わらず、単純ベイズ分類器は複雑な実世界の
    状況において、期待よりもずっとうまく働く。近頃、ベイズ分類問題の注意深い解
    析によって、単純ベイズ分類器の効率性に理論的理由があることが示された[1]。単
    純ベイズ分類器の利点は、分類に不可欠なパラメータ(変数群の平均と分散)を見
    積もるのに、訓練例データが少なくて済む点である。変数群は独立であると仮定さ
    れているため、各クラスについての変数の分散だけが必要であり、共分散行列全体
    は不要である。[1]

ベイズの定理は以下のような形になっている。

              P ( B | A) P( A)
P( A | B )
                   P( B)
B が発生したときに A である確率(P(A|B))を求めたい場合、右式のように変形をし、A が発生した
時に B である確率(P(B|A))、A の数、B の数、の3種の情報を元に計算を行う。

これを文書分類に当てはめると、以下のような式となる。
x は文書ドキュメント、c は分類クラスとなる。

              P ( x | c ) P (c )
P(c | x) 
                   P ( x)

                                   2
ただし、ある分類クラス c の時にある文書ドキュメント x が表れる確率はデータが膨大になること、す
べての文書群を網羅することが事実上不可能なことから正確には算出することはできないため、近
似値を用いることになる。
もっとも多く用いられるのが、訓練ドキュメント中に含まれている単語の数とあるドキュメント中に含ま
れている単語の数との比較により、確率を算出する方法である。この際、ドキュメント中の単語の共
起性は考慮せず、単語同士はお互い独立しているという仮定で計算をすることが一般的である。
(たとえば、「歌手」「さだまさし」という語がドキュメント中に共起されたとしても、相互の語との意味上
文脈上の関係性は考慮しない、ということである)。

結果、以下のような式が Naïve Bayes には用いられる。
                 K
P( xi | ck )   p ( xij | ck )
                 j 1
xiはあるドキュメント、xij はドキュメントxiに含まれている単語、ck は分類クラスである。
クラス ck であるときに単語 xij が出現する確率の総乗が、ck であるときにドキュメントxiである確率で
ある。あとは上記式をベイズの定理に当てはめればよい。

  2.2 一般的な特徴
一般的に、以下が Naïve Bayes のメリットと言われている。
  アルゴリズムが複雑でなく実装が容易
  訓練データが少なくてすむ

    デメリットとして単語の共起性など各特徴量間の依存性をまったく考慮できないことがあげられ
    る。
    しかし、必要十分な精度が得られることから、一般的に広く用いられているアルゴリズムである。


3       Multinomial Naïve Bayes について
Multinomial Naïve Bayes (多項単純ベイズ)[2]は、Naïve Bayes において文書分類をする場
合に良く用いられるモデルである。他に有名なものに Bernoulli モデルもあるが、Complement
Naïve Bayes が Multinomial Naïve Bayes をベースとしているため、ここでは触れない。

    3.1   アルゴリズムの内容
Naïve Bayes からの変形過程については詳しくは触れないが、Multinomial Naïve Bayes によ
るクラス分類は以下のような式で表される。以下の式は Complement Naïve Bayes の論文の式よ
り引用したものになる。
                        
arg max c[log p(            c   )   fi log   ci   ] [3]
                                    i

  はクラス C である確率、f は文書ベクトル(f1,f2,・・・・・・fi)で fi はある語が文書 i 内で発生する回
    c
数。 ci はクラス C の任意の文書のある語を選んだときその語が i である確率となる。
ドキュメント数やワード数の多少によってのバイアスを極小化するために、それぞれの値を対数化し
ている。
また、ドキュメント中の単語の発生数も評価対象としているところに Bernoulli モデルとの差がある。

Complement Naïve Bayes の論文では、以下のような形で Smoothing Parameter である を




                                               3
与えることで値の補正を行ったものを採用している。今回の実装でも、こちらに習った。
^             Nci          i
    ci    
              Nc 
                                ^                         ^
arg max c[log p (                       c   )   fi log       ci   ]
                                                i

4        Complement Naïve Bayes
Complement Naïve Bayes(補集合単純ベイズ)は 2003 年に MIT の Jason D. M. Rennie に
より提案された手法である。[3]
既存の Naïve Bayes が「あるクラスに属する文書・語」の確率によりクラス推定を行っていたのに対
し、Complement Naïve Bayes では補集合の概念に基づき「あるクラスに属さない文書・語」の確
率を算出し、値が一番低いものを用いてクラス推定を行う。

文書分類の場合、語やドキュメントの出現数は各クラスによって差があるため、文書数が多いクラス
では ci が大きくなりすぎるというバイアスが発生するケースがある。
そのため、補集合を扱うことによりバイアスを抑えることを目的としたアプローチとなる。

日本では、株式会社プリファードインフラストラクチャー社が「はてなブックマーク」のブックマークア
イテムの自動カテゴリー分類を実装する際に当アルゴリズムを採用したことが有名である。

    4.1 アルゴリズムの内容
3.1.に記載した Multinomial Naïve Bayes から、補集合の値を用いるよう変形がされている。
                    ~
^~            N ci             i
     ci                ~
               N c
                                                          ^~
arg max c[log p (                       c   )   fi log       ci   ]
                                                i
^~
    ci   は、あるクラスcで「ない時」に語 i が発生する確率、となる。
                ~                                                       ~
ちなみに N c はあるクラスc以外のドキュメント中の数、 N                                         ci   はあるクラス c 以外のドキュメントに出
現する語 i の数となる。

   4.2   一般的な特徴
Complement Naïve Bayes は捕集合を用いることで各クラスのバイアスを減らすため、多くクラス
が存在する際には有効に働く。
しかし、クラスが二つしか存在しない場合は既存の Multinomial Naïve Bayes とアルゴリズム的
にほとんど差がなく、有効には働かない。


5        比較(Multinomial Naïve Bayes                                Complement Naïve Bayes)
文書分類において、Multinomial Naïve Bayes と Complement Naïve Bayes にどの程度の精
度の差が出るか、検証を行った。




                                                               4
5.1  前提条件
  実装
それぞれのアルゴリズムの実装ならびに評価用アプリの実装は Java で行い、学習データの解析
処理には Hadoop を、データの保管には HBase を用いた。

   学習データ
動画共有サイト AmebaVision[4]の動画に付与されているタグデータを用い、タグとそのタグが付
与されている動画の属するジャンル情報の対にて学習を行った。AmebaVision のタグは以下のよ
うな形式のデータセットとなっている。
   サンプル
     タグ            ジャンル
 ねこ           ペット・動物
 クレイアニメ       クリエイター
 太平洋          旅行・イベント
            ・
            ・
            ・

  データ件数:1,133,384
  ジャンル数:9   13 ジャンルのうち、概念が曖昧な「自己紹介・アピール」「ブログ・日記」
 「趣味」「モバイル」を除外した。以下が今回の分類対象ジャンルとなる。
クリエイター        音楽         スポーツ      ペット・動物
アニメ・ゲーム       エンターテイメント コメディ       住まい・暮らし
旅行・イベント

   分類を行う文書
各種ニュースサイトのニュース記事を RSS から取得し、解析を行った。
今回は、特定ジャンルのニュース記事が意図した「分類されるべきジャンル」に分類されるかどうか
で評価を実施し、その確率を測定した。
                                     分類されるべき
     サイト名
                                       ジャンル
 ニッカンスポーツ                           スポーツ
 ナタリー                               音楽
 4Travel                            旅行・イベント
 秋葉原ブログ                             アニメゲーム
 映画生活                               エンターテイメント

    5.2  結果
以下のような結果となった。
なお、MNBがMultinomial Naive Bayes、CNBがComplement Naive Bayesを用いた結
果となる。
      サイト名     MNB         CNB
 ニッカンスポーツ
 ナタリー
 4Travel




                              5
秋葉原ブログ
映画生活




           ニッカン       ナタリー                  秋葉原       映画生活


Multinomial Naive Bayesを用いたケースよりも、Complement Naive Bayesを用いたケー
スの方が概ね精度が向上していることが見受けられ、多数のクラスが存在する場合のクラス推定に
Complement Naïve Bayes アルゴリズムが有効であることが確認できた。

なお、今回の測定では、特定ジャンルのニュースがあるジャンルにマッピングされることを前提とし
て評価を行っている(「ニッカンスポーツ」の場合は必ず「スポーツ」に分類される、という前提で評
価)。
そのため、文書の意味的には適切に分類されていても想定ジャンルに分類されていない場合は評
価を行っていない。実際の分類制度は MNB、CNB とももう少し高いものとなるが、主観が入りや
すいため今回の評価尺度からは除外した。(たとえば筆者の主観で判断した場合、ニッカンスポー
ツ:CNB の場合で 92%の精度となった)


6   Complement Naïve Bayes の最適化について
Complement Naïve Bayes の論文[3]には、上述のアルゴリズムに加え重み付けやテキスト処理
の最適化手法についても合わせて述べられていて、これらを採用することでより精度が増す、とさ
れている。
具体的には以下のようなものである。
  Term Frequency
  Inverse Document Frequency
  Based on Length
  Document Normalization
しかし、今回の実装、ならびに使用したデータセットではその優位性を確認できなかったため、今
回は評価の対象外とする。


7   考察とまとめ
複数クラスの文書分類において、Multinomial Naïve Bayes に比べた Complement Naïve
Bayes の優位性について確認ができた。
また、AmebaVision などのタグ情報が文書分類において有意なデータセットであることも合わせて
確認できた。

今回実装した Multinomial Naïve Bayes、Complement Naïve Bayes の実装と、テストプログラ
ムについては参考資料として提示する。




                                6

More Related Content

What's hot

Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hiroshi Ono
 
Jaws2008 Presen12
Jaws2008 Presen12Jaws2008 Presen12
Jaws2008 Presen12umekoumeda
 
teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"Yoshifumi Murakami
 
iReport實做練習part(1)
iReport實做練習part(1) iReport實做練習part(1)
iReport實做練習part(1) seatof
 
制作Ppt的七种武器
制作Ppt的七种武器制作Ppt的七种武器
制作Ppt的七种武器Yanjun Song
 
Grapking Web Site Creation
Grapking Web Site CreationGrapking Web Site Creation
Grapking Web Site CreationTim Lu
 
sigfpai2009_okanohara
sigfpai2009_okanoharasigfpai2009_okanohara
sigfpai2009_okanoharaHiroshi Ono
 
テスト駆動開発のエッセンス
テスト駆動開発のエッセンステスト駆動開発のエッセンス
テスト駆動開発のエッセンスhiroyuki Yamamoto
 
نشرة صحية مدرسية
نشرة صحية مدرسيةنشرة صحية مدرسية
نشرة صحية مدرسيةomymh
 
Loftwork 20090416
Loftwork 20090416Loftwork 20090416
Loftwork 20090416武 河野
 
090511-intro, setup
090511-intro, setup090511-intro, setup
090511-intro, setupocha_kaneko
 
第5章 網際網路 (Update)
第5章 網際網路 (Update)第5章 網際網路 (Update)
第5章 網際網路 (Update)Seng Chi Ao
 
【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心devsumi2009
 
株式会社 花みずき工房 きらりタウン浜北
株式会社 花みずき工房 きらりタウン浜北株式会社 花みずき工房 きらりタウン浜北
株式会社 花みずき工房 きらりタウン浜北sunseago
 
Perl で入門テキストマイニング
Perl で入門テキストマイニングPerl で入門テキストマイニング
Perl で入門テキストマイニングyto
 

What's hot (18)

20世紀Ruby
20世紀Ruby20世紀Ruby
20世紀Ruby
 
Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hyper Estraierの設計と実装
Hyper Estraierの設計と実装
 
Jaws2008 Presen12
Jaws2008 Presen12Jaws2008 Presen12
Jaws2008 Presen12
 
teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"
 
iReport實做練習part(1)
iReport實做練習part(1) iReport實做練習part(1)
iReport實做練習part(1)
 
制作Ppt的七种武器
制作Ppt的七种武器制作Ppt的七种武器
制作Ppt的七种武器
 
Grapking Web Site Creation
Grapking Web Site CreationGrapking Web Site Creation
Grapking Web Site Creation
 
sigfpai2009_okanohara
sigfpai2009_okanoharasigfpai2009_okanohara
sigfpai2009_okanohara
 
JLPT 2nd level Reading
JLPT 2nd level ReadingJLPT 2nd level Reading
JLPT 2nd level Reading
 
Janata ka aai
Janata ka aaiJanata ka aai
Janata ka aai
 
テスト駆動開発のエッセンス
テスト駆動開発のエッセンステスト駆動開発のエッセンス
テスト駆動開発のエッセンス
 
نشرة صحية مدرسية
نشرة صحية مدرسيةنشرة صحية مدرسية
نشرة صحية مدرسية
 
Loftwork 20090416
Loftwork 20090416Loftwork 20090416
Loftwork 20090416
 
090511-intro, setup
090511-intro, setup090511-intro, setup
090511-intro, setup
 
第5章 網際網路 (Update)
第5章 網際網路 (Update)第5章 網際網路 (Update)
第5章 網際網路 (Update)
 
【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心
 
株式会社 花みずき工房 きらりタウン浜北
株式会社 花みずき工房 きらりタウン浜北株式会社 花みずき工房 きらりタウン浜北
株式会社 花みずき工房 きらりタウン浜北
 
Perl で入門テキストマイニング
Perl で入門テキストマイニングPerl で入門テキストマイニング
Perl で入門テキストマイニング
 

More from moai kids

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情moai kids
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係moai kids
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4moai kids
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3moai kids
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1moai kids
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBmoai kids
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたmoai kids
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)moai kids
 
snappyについて
snappyについてsnappyについて
snappyについてmoai kids
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)moai kids
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)moai kids
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理moai kids
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークmoai kids
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)moai kids
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)moai kids
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)moai kids
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料moai kids
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてmoai kids
 

More from moai kids (20)

中国最新ニュースアプリ事情
中国最新ニュースアプリ事情中国最新ニュースアプリ事情
中国最新ニュースアプリ事情
 
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
Programming Hive Reading #4
Programming Hive Reading #4Programming Hive Reading #4
Programming Hive Reading #4
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきましたHadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
 
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
 
snappyについて
snappyについてsnappyについて
snappyについて
 
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
 
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
 
Pythonで自然言語処理
Pythonで自然言語処理Pythonで自然言語処理
Pythonで自然言語処理
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
 
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
 
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
 
中国と私(仮題)
中国と私(仮題)中国と私(仮題)
中国と私(仮題)
 
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
 
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法についてn-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
 

Complement Naive Bayesの検証

  • 1. 研究課題:Complement Naïve Bayes の検証 新規開発局 プログラマ 大平哲也 1
  • 2. 1 はじめに 日々データが蓄積されていく CGM サービスにおいてドキュメントの整理・分類をすべて人手で行う ことは限界があるため、コンピュータによる精度の高い自動分類が求められている。 自動分類の世界では実装の容易さから Naïve Bayes でのアプローチが一般的となっているが、 2003 年に MIT より発表された Complement Naïve Bayes が精度の優秀さで注目されている。 Naïve Bayes と比較してどの程度の精度向上が見られるのか、検証を行った。 まず Naïve Bayes、Multinomial Naïve Bayes、Complement Naïve Bayes それぞれのアルゴ リズムについて簡単に解説した後、精度の比較を行う。 2 Naïve Bayes について まず、Naïve Bayes のアルゴリズムの仕組みと、Naïve Bayes を用いたテキスト自動分類の精度に ついて確認をする。 2.1 アルゴリズムの内容 以下、Naïve Bayes についての解説を wikipedia より引用する。 Naïve Bayes とは、強い(単純な)独立性仮定と共にベイズの定理を適用すること に基づいた単純な確率的分類器である。その元となる確率モデルは、より正確に言 えば「独立特徴モデル; independent feature model」である。 確率モデルの性質に基づき、単純ベイズ分類器は教師あり学習の設定で効率的に訓 練可能である。多くの実用例では、単純ベイズ分類器のパラメータ推定には最尤法 が使われる。つまり、単純ベイズ分類器を使用するにあたって、ベイズ確率やその 他のベイズ的手法を使う必要はない。 設計も仮定も非常に単純であるにも関わらず、単純ベイズ分類器は複雑な実世界の 状況において、期待よりもずっとうまく働く。近頃、ベイズ分類問題の注意深い解 析によって、単純ベイズ分類器の効率性に理論的理由があることが示された[1]。単 純ベイズ分類器の利点は、分類に不可欠なパラメータ(変数群の平均と分散)を見 積もるのに、訓練例データが少なくて済む点である。変数群は独立であると仮定さ れているため、各クラスについての変数の分散だけが必要であり、共分散行列全体 は不要である。[1] ベイズの定理は以下のような形になっている。 P ( B | A) P( A) P( A | B ) P( B) B が発生したときに A である確率(P(A|B))を求めたい場合、右式のように変形をし、A が発生した 時に B である確率(P(B|A))、A の数、B の数、の3種の情報を元に計算を行う。 これを文書分類に当てはめると、以下のような式となる。 x は文書ドキュメント、c は分類クラスとなる。 P ( x | c ) P (c ) P(c | x)  P ( x) 2
  • 3. ただし、ある分類クラス c の時にある文書ドキュメント x が表れる確率はデータが膨大になること、す べての文書群を網羅することが事実上不可能なことから正確には算出することはできないため、近 似値を用いることになる。 もっとも多く用いられるのが、訓練ドキュメント中に含まれている単語の数とあるドキュメント中に含ま れている単語の数との比較により、確率を算出する方法である。この際、ドキュメント中の単語の共 起性は考慮せず、単語同士はお互い独立しているという仮定で計算をすることが一般的である。 (たとえば、「歌手」「さだまさし」という語がドキュメント中に共起されたとしても、相互の語との意味上 文脈上の関係性は考慮しない、ということである)。 結果、以下のような式が Naïve Bayes には用いられる。 K P( xi | ck )   p ( xij | ck ) j 1 xiはあるドキュメント、xij はドキュメントxiに含まれている単語、ck は分類クラスである。 クラス ck であるときに単語 xij が出現する確率の総乗が、ck であるときにドキュメントxiである確率で ある。あとは上記式をベイズの定理に当てはめればよい。 2.2 一般的な特徴 一般的に、以下が Naïve Bayes のメリットと言われている。  アルゴリズムが複雑でなく実装が容易  訓練データが少なくてすむ デメリットとして単語の共起性など各特徴量間の依存性をまったく考慮できないことがあげられ る。 しかし、必要十分な精度が得られることから、一般的に広く用いられているアルゴリズムである。 3 Multinomial Naïve Bayes について Multinomial Naïve Bayes (多項単純ベイズ)[2]は、Naïve Bayes において文書分類をする場 合に良く用いられるモデルである。他に有名なものに Bernoulli モデルもあるが、Complement Naïve Bayes が Multinomial Naïve Bayes をベースとしているため、ここでは触れない。 3.1 アルゴリズムの内容 Naïve Bayes からの変形過程については詳しくは触れないが、Multinomial Naïve Bayes によ るクラス分類は以下のような式で表される。以下の式は Complement Naïve Bayes の論文の式よ り引用したものになる。  arg max c[log p( c )   fi log ci ] [3] i  はクラス C である確率、f は文書ベクトル(f1,f2,・・・・・・fi)で fi はある語が文書 i 内で発生する回 c 数。 ci はクラス C の任意の文書のある語を選んだときその語が i である確率となる。 ドキュメント数やワード数の多少によってのバイアスを極小化するために、それぞれの値を対数化し ている。 また、ドキュメント中の単語の発生数も評価対象としているところに Bernoulli モデルとの差がある。 Complement Naïve Bayes の論文では、以下のような形で Smoothing Parameter である を 3
  • 4. 与えることで値の補正を行ったものを採用している。今回の実装でも、こちらに習った。 ^ Nci  i ci  Nc  ^  ^ arg max c[log p ( c )   fi log ci ] i 4 Complement Naïve Bayes Complement Naïve Bayes(補集合単純ベイズ)は 2003 年に MIT の Jason D. M. Rennie に より提案された手法である。[3] 既存の Naïve Bayes が「あるクラスに属する文書・語」の確率によりクラス推定を行っていたのに対 し、Complement Naïve Bayes では補集合の概念に基づき「あるクラスに属さない文書・語」の確 率を算出し、値が一番低いものを用いてクラス推定を行う。 文書分類の場合、語やドキュメントの出現数は各クラスによって差があるため、文書数が多いクラス では ci が大きくなりすぎるというバイアスが発生するケースがある。 そのため、補集合を扱うことによりバイアスを抑えることを目的としたアプローチとなる。 日本では、株式会社プリファードインフラストラクチャー社が「はてなブックマーク」のブックマークア イテムの自動カテゴリー分類を実装する際に当アルゴリズムを採用したことが有名である。 4.1 アルゴリズムの内容 3.1.に記載した Multinomial Naïve Bayes から、補集合の値を用いるよう変形がされている。 ~ ^~ N ci i ci  ~ N c  ^~ arg max c[log p ( c )   fi log ci ] i ^~ ci は、あるクラスcで「ない時」に語 i が発生する確率、となる。 ~ ~ ちなみに N c はあるクラスc以外のドキュメント中の数、 N ci はあるクラス c 以外のドキュメントに出 現する語 i の数となる。 4.2 一般的な特徴 Complement Naïve Bayes は捕集合を用いることで各クラスのバイアスを減らすため、多くクラス が存在する際には有効に働く。 しかし、クラスが二つしか存在しない場合は既存の Multinomial Naïve Bayes とアルゴリズム的 にほとんど差がなく、有効には働かない。 5 比較(Multinomial Naïve Bayes Complement Naïve Bayes) 文書分類において、Multinomial Naïve Bayes と Complement Naïve Bayes にどの程度の精 度の差が出るか、検証を行った。 4
  • 5. 5.1 前提条件 実装 それぞれのアルゴリズムの実装ならびに評価用アプリの実装は Java で行い、学習データの解析 処理には Hadoop を、データの保管には HBase を用いた。 学習データ 動画共有サイト AmebaVision[4]の動画に付与されているタグデータを用い、タグとそのタグが付 与されている動画の属するジャンル情報の対にて学習を行った。AmebaVision のタグは以下のよ うな形式のデータセットとなっている。  サンプル タグ ジャンル ねこ ペット・動物 クレイアニメ クリエイター 太平洋 旅行・イベント ・ ・ ・  データ件数:1,133,384  ジャンル数:9 13 ジャンルのうち、概念が曖昧な「自己紹介・アピール」「ブログ・日記」 「趣味」「モバイル」を除外した。以下が今回の分類対象ジャンルとなる。 クリエイター 音楽 スポーツ ペット・動物 アニメ・ゲーム エンターテイメント コメディ 住まい・暮らし 旅行・イベント 分類を行う文書 各種ニュースサイトのニュース記事を RSS から取得し、解析を行った。 今回は、特定ジャンルのニュース記事が意図した「分類されるべきジャンル」に分類されるかどうか で評価を実施し、その確率を測定した。 分類されるべき サイト名 ジャンル ニッカンスポーツ スポーツ ナタリー 音楽 4Travel 旅行・イベント 秋葉原ブログ アニメゲーム 映画生活 エンターテイメント 5.2 結果 以下のような結果となった。 なお、MNBがMultinomial Naive Bayes、CNBがComplement Naive Bayesを用いた結 果となる。 サイト名 MNB CNB ニッカンスポーツ ナタリー 4Travel 5
  • 6. 秋葉原ブログ 映画生活 ニッカン ナタリー 秋葉原 映画生活 Multinomial Naive Bayesを用いたケースよりも、Complement Naive Bayesを用いたケー スの方が概ね精度が向上していることが見受けられ、多数のクラスが存在する場合のクラス推定に Complement Naïve Bayes アルゴリズムが有効であることが確認できた。 なお、今回の測定では、特定ジャンルのニュースがあるジャンルにマッピングされることを前提とし て評価を行っている(「ニッカンスポーツ」の場合は必ず「スポーツ」に分類される、という前提で評 価)。 そのため、文書の意味的には適切に分類されていても想定ジャンルに分類されていない場合は評 価を行っていない。実際の分類制度は MNB、CNB とももう少し高いものとなるが、主観が入りや すいため今回の評価尺度からは除外した。(たとえば筆者の主観で判断した場合、ニッカンスポー ツ:CNB の場合で 92%の精度となった) 6 Complement Naïve Bayes の最適化について Complement Naïve Bayes の論文[3]には、上述のアルゴリズムに加え重み付けやテキスト処理 の最適化手法についても合わせて述べられていて、これらを採用することでより精度が増す、とさ れている。 具体的には以下のようなものである。  Term Frequency  Inverse Document Frequency  Based on Length  Document Normalization しかし、今回の実装、ならびに使用したデータセットではその優位性を確認できなかったため、今 回は評価の対象外とする。 7 考察とまとめ 複数クラスの文書分類において、Multinomial Naïve Bayes に比べた Complement Naïve Bayes の優位性について確認ができた。 また、AmebaVision などのタグ情報が文書分類において有意なデータセットであることも合わせて 確認できた。 今回実装した Multinomial Naïve Bayes、Complement Naïve Bayes の実装と、テストプログラ ムについては参考資料として提示する。 6
  • 7. 8 参考文献・URL [1]http://ja.wikipedia.org/wiki/%E5%8D%98%E7%B4%94%E3%83%99%E3%82%A4%E 3%82%BA%E5%88%86%E9%A1%9E%E5%99%A8 [2] A. Berger. 「Error-correcting output coding for text classification.」 (1999) http://www.cs.cmu.edu/~aberger/pdf/ecoc.pdf [3] Jason D. M. Rennie. 「 Tackling the Poor Assumptions of Naive Bayes Text Classifiers」(2003) http://people.csail.mit.edu/jrennie/papers/icml03-nb.pdf [4] http://vision.ameba.jp/ 7