R言語によるナイーブベイズ入門          @langstat           Osaka.R #62011年7月2日(土)、立命館大学大阪キャンパス                        1
自己紹介• 小林 雄一郎 (こばやし ゆういちろう)  – 大阪大学大学院言語文化研究科/日本学術振興会  – 関心領域(「専門領域」ではない):     コーパス言語学・統計的テキストマイニング                         2
• Rコミュニティーとの関わり – 2010/04/09 「R言語による検定入門」 Osaka.R#2 – 2010/06/19 「R言語によるプロット入門」 Nagoya.R#3 – 2010/06/19 「R言語による判別分析入門」 Nag...
ベイズ統計• 最近、「ベイズ統計」が流行っている?• そもそもベイズって何? 米酢?• これを知らないと、もしかして時代遅れ?     ↓• ベイズ統計を使いこなせるようになりたい!  (手段ではなく、目的として)• ベイズ統計に関する情報をい...
• ベイズ柄のTシャツを見つけた                   5
• ベイズ柄のマグカップやよだれかけも見つけた              http://www.cafepress.com/BayesBazaar                                                 ...
• そして、いろいろと本を見てはみたものの。。。 – 古谷知之 (2008). 『ベイズ統計データ分析―R & WinBUGS』   朝倉書店. – 照井伸彦 (2010). 『Rによるベイズ統計分析』 朝倉書店. – 姜興起 (2010). ...
ナイーブベイズとは• 条件付き独立を仮定した単純な分類器• Webページの自動カテゴリー分類(はてなブックマー  ク)、スパムフィルタなどに利用されている• 近頃、ベイズ分類問題の注意深い解析によって、ナ  イーブベイズ分類器の効率性に理論的理...
• ナイーブベイズの特徴 – 語順を全く考慮しない – 単語間の相関関係も全く考慮しない      ↓ – つまり、文書を単なる単語の集合 (bag of words) として   扱っている – この大胆な近似こそ、ナイーブベイズが「ナイーブ...
– ナイーブベイズにおいては、与えられた入力値に対してど  んなラベルを割り当てるかを決める際に、全ての素性が  影響力を持つ     ↓– まず、訓練データ中の各ラベルの出現頻度を調べて、そ  れぞれのラベルの事前確率を計算する     ↓–...
• 文書のトピック選択の例 (NLTK Book) – 訓練データにおいて、殆どの文書が“Automotive”というラベ   ルが付けられていた場合、分類器は最初に“Automotive”ラ   ベルのそばの位置から尤度の計算を開始し、それぞ...
– 最終的に、それぞれの素性は、その素性が頻繁に用いら  れないラベルに対する「反対票」を投じる形で影響する– それぞれのラベルの尤度スコアは、それぞれの素性がそ  のラベルがつけられている文書に表れる確率を掛け合わ  せたものによって、小さく...
数式や細かいテクニックは。。。       SKIP                  Wikipedia   13
Rでナイーブベイズをやってみよう!• Naive Bayes   – e1071パッケージをCRANからダウンロード# e1071パッケージのインストール> install.packages(“e1071”)• サンプルデータとして、spamを...
# spamデータを学習データと評価データに2分割> library(kernlab)> data(spam)> tr.index<-sample(nrow(spam), as.integer(nrow(spam)*0.5))> spam.tr...
• なぜ、データを分割するのか – あるデータから分類ルールを作成し、それと同じデータを   使って検証を行うと、不当に高い精度が出てしまう(過学   習) – そのデータに適合するようにルールを作ったのだから、同   じデータをうまく説明でき...
# 分類モデルの構築> library (e1071)> model<-naiveBayes(type ~., data=spam.train)# モデルの表示> modelNaive Bayes Classifier for Discrete...
# 評価データを用いた予測> pr.model<-predict(model, spam.test[,-58], type="class")# 予測結果の表示> pr.model [1] spam spam spam spam spam spa...
参考文献 – 「単純ベイズ分類器」 (Wikipedia)   http://ja.wikipedia.org/wiki/%E5%8D%98%E7%B4%94%E3   %83%99%E3%82%A4%E3%82%BA%E5%88%86%E9%...
– 「Learning to Classify Text」(NLTK Book)  http://nltk.googlecode.com/svn/trunk/doc/book/ch06.ht  ml– 「USTREAM: Tsukuba.R #...
宣伝• 外国語教育メディア学会(LET)関西支部メソドロジー  研究部会 – 7月16日(土)、関西大学 – http://atnd.org/events/15867                                  21
• 外国語教育メディア学会(LET)第51回全国研究大会 – 8月6日(土)、名古屋学院大学 – http://let.lang.nagoya-u.ac.jp/modules/xpwiki2011/                       ...
ご清聴ありがとうございました。         @langstat kobayashi0721@gmail.com                           23
Upcoming SlideShare
Loading in...5
×

OsakaR_6: R言語によるナイーブベイズ入門

6,478

Published on

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,478
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
84
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

OsakaR_6: R言語によるナイーブベイズ入門

  1. 1. R言語によるナイーブベイズ入門 @langstat Osaka.R #62011年7月2日(土)、立命館大学大阪キャンパス 1
  2. 2. 自己紹介• 小林 雄一郎 (こばやし ゆういちろう) – 大阪大学大学院言語文化研究科/日本学術振興会 – 関心領域(「専門領域」ではない): コーパス言語学・統計的テキストマイニング 2
  3. 3. • Rコミュニティーとの関わり – 2010/04/09 「R言語による検定入門」 Osaka.R#2 – 2010/06/19 「R言語によるプロット入門」 Nagoya.R#3 – 2010/06/19 「R言語による判別分析入門」 Nagoya.R#3 – 2010/06/26 「R言語によるテキストマイニング入門」 Osaka.R#3 – 2010/12/02 「R言語によるコーパス分析入門」 Osaka.R#4 – 2011/03/26 「R言語による『機動戦士ガンダム』分析」 Nagoya.R#5 – 2011/04/23 「R言語による決定木入門」 Osaka.R#5 – (その他、Tokyo.RやShiga.Rにも参加) 3
  4. 4. ベイズ統計• 最近、「ベイズ統計」が流行っている?• そもそもベイズって何? 米酢?• これを知らないと、もしかして時代遅れ? ↓• ベイズ統計を使いこなせるようになりたい! (手段ではなく、目的として)• ベイズ統計に関する情報をいろいろと 探してみたところ。。。 4
  5. 5. • ベイズ柄のTシャツを見つけた 5
  6. 6. • ベイズ柄のマグカップやよだれかけも見つけた http://www.cafepress.com/BayesBazaar 6
  7. 7. • そして、いろいろと本を見てはみたものの。。。 – 古谷知之 (2008). 『ベイズ統計データ分析―R & WinBUGS』 朝倉書店. – 照井伸彦 (2010). 『Rによるベイズ統計分析』 朝倉書店. – 姜興起 (2010). 『ベイズ統計データ解析』 共立出版. – J. アルバート (2010). 『Rで学ぶベイズ統計学入門』 シュプリ ンガージャパン.• 自分の研究にどう活かせばいいのか、まだよく分らな い (T^T)• とりあえず、テキスト分類手法を使った研究をしてい るので、ナイーブベイズでも。。。 7
  8. 8. ナイーブベイズとは• 条件付き独立を仮定した単純な分類器• Webページの自動カテゴリー分類(はてなブックマー ク)、スパムフィルタなどに利用されている• 近頃、ベイズ分類問題の注意深い解析によって、ナ イーブベイズ分類器の効率性に理論的理由がある ことが示された(らしい) 8
  9. 9. • ナイーブベイズの特徴 – 語順を全く考慮しない – 単語間の相関関係も全く考慮しない ↓ – つまり、文書を単なる単語の集合 (bag of words) として 扱っている – この大胆な近似こそ、ナイーブベイズが「ナイーブ(単 純)」と呼ばれる所以 ↓ – 「そんなアバウトでいいのか?」と不安になるかも知れな いが、学習が非常に高速で、実用的な精度が出るところ が利点 9
  10. 10. – ナイーブベイズにおいては、与えられた入力値に対してど んなラベルを割り当てるかを決める際に、全ての素性が 影響力を持つ ↓– まず、訓練データ中の各ラベルの出現頻度を調べて、そ れぞれのラベルの事前確率を計算する ↓– この事前確率に、それぞれの素性のラベル付けへの貢 献度が組み合わされて、それぞれのラベルの尤度が計 算される ↓– そして、最も高い尤度と推定されたラベルが入力値に割り 当てられる 10
  11. 11. • 文書のトピック選択の例 (NLTK Book) – 訓練データにおいて、殆どの文書が“Automotive”というラベ ルが付けられていた場合、分類器は最初に“Automotive”ラ ベルのそばの位置から尤度の計算を開始し、それぞれの 素性の影響を計算 ↓ – そして、darkという語を含んでいる場合、 それは“Murder Mystery”を表す弱い指標となる ↓ – しかし、その文書がfootballという語を 含んでいる場合、それが“Sports”を表 す強い指標となる (以下、同様の手順を繰り返す) 11
  12. 12. – 最終的に、それぞれの素性は、その素性が頻繁に用いら れないラベルに対する「反対票」を投じる形で影響する– それぞれのラベルの尤度スコアは、それぞれの素性がそ のラベルがつけられている文書に表れる確率を掛け合わ せたものによって、小さくなる– 例えば、runという語が“Sports”の文書に12%、“Murder Mystery”の文書に10%、“Automotive”に関する文書 に2%存在した場合、 Sports”には0.12がかけ られ、“Murder Mystery” には0.10がかけられ、 “Automotive”には0.02 がかけられる 12
  13. 13. 数式や細かいテクニックは。。。 SKIP Wikipedia 13
  14. 14. Rでナイーブベイズをやってみよう!• Naive Bayes – e1071パッケージをCRANからダウンロード# e1071パッケージのインストール> install.packages(“e1071”)• サンプルデータとして、spamを使用 – kernlabパッケージをCRANからダウンロード# kernlabパッケージのインストール> install.packages(“kernlab”) – Spam e-mail database(4601通のメール) – 【1~57列目】スパムメールに特徴的な 57種類の単語・記号など(素性) – 【58列目】spamであるかnonspamであ るか(ラベル)、列名はtype 14
  15. 15. # spamデータを学習データと評価データに2分割> library(kernlab)> data(spam)> tr.index<-sample(nrow(spam), as.integer(nrow(spam)*0.5))> spam.train<-spam[tr.index, ]> spam.test<-spam[-tr.index, ] 学習 学習データ 分割 全データ 評価データ 評価 15
  16. 16. • なぜ、データを分割するのか – あるデータから分類ルールを作成し、それと同じデータを 使って検証を行うと、不当に高い精度が出てしまう(過学 習) – そのデータに適合するようにルールを作ったのだから、同 じデータをうまく説明できるのは当然 – 別のデータで検証して初めて、作成したルールの本当の 精度が分かる 16
  17. 17. # 分類モデルの構築> library (e1071)> model<-naiveBayes(type ~., data=spam.train)# モデルの表示> modelNaive Bayes Classifier for Discrete PredictorsCall:naiveBayes.default(x = X, y = Y, laplace = laplace)A-priori probabilities:Y nonspam spam 0.6104348 0.3895652Conditional probabilities: makeY [,1] [,2] nonspam 0.0696510 0.2978867 spam 0.1526116 0.3230907 (以下、省略) 17
  18. 18. # 評価データを用いた予測> pr.model<-predict(model, spam.test[,-58], type="class")# 予測結果の表示> pr.model [1] spam spam spam spam spam spam spam spam [9] spam spam spam spam spam spam spam spam [17] spam nonspam spam spam spam spam spam spam (省略)Levels: nonspam spam>> table(spam.test[,58], pr.model)pr.model nonspam spam nonspam 742 642 spam 57 860>> result<-table(spam.test$type, pr.model)> 2*result[2, 2]/(2*result[2, 2]+result[1, 2]+result[2, 1])[1] 0.7110376 18
  19. 19. 参考文献 – 「単純ベイズ分類器」 (Wikipedia) http://ja.wikipedia.org/wiki/%E5%8D%98%E7%B4%94%E3 %83%99%E3%82%A4%E3%82%BA%E5%88%86%E9%A1%9 E%E5%99%A8 – 「ナイーブベイズを用いたブログ記事の自動分類」 (人工 知能に関する断想録) http://d.hatena.ne.jp/aidiary/20100703/1278163879 – 「新はてなブックマークでも使われてるComplement Naive Bayesを解説するよ」(射撃しつつ前転) http://d.hatena.ne.jp/tkng/20081217/1229475900 – 「 10行でナイーブベイズ ~Rって便利だね!~ 」(あらび き日記) http://d.hatena.ne.jp/a_bicky/20110130/1296379953 19
  20. 20. – 「Learning to Classify Text」(NLTK Book) http://nltk.googlecode.com/svn/trunk/doc/book/ch06.ht ml– 「USTREAM: Tsukuba.R #7 Vol.10」 (@y_benjo) http://www.ustream.tv/recorded/6791826 20
  21. 21. 宣伝• 外国語教育メディア学会(LET)関西支部メソドロジー 研究部会 – 7月16日(土)、関西大学 – http://atnd.org/events/15867 21
  22. 22. • 外国語教育メディア学会(LET)第51回全国研究大会 – 8月6日(土)、名古屋学院大学 – http://let.lang.nagoya-u.ac.jp/modules/xpwiki2011/ 22
  23. 23. ご清聴ありがとうございました。 @langstat kobayashi0721@gmail.com 23
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×