SlideShare a Scribd company logo
1 of 67
Download to read offline
ノーベイズ・ノーライフ – Naïve Bayesは今でも進化しているようです。 DSIRNLP #6 phyllo
自己紹介 
ID : phyllo 
ブログ : http://d.hatena.ne.jp/jetbead 
•某Web企業の新卒 
•ほそぼそと自然言語処理してます 
–4年目突入 
–ダイエットは失敗しました 
【注意】 
この話は趣味で行っていることです。
今日の概要
まったく、識別モデルは 最高だぜ!!
・・・おや!? Naïve Bayesのようすが・・・!
おめでとう! Naïve BayesはAODEに進化した!
おめでとう! Naïve BayesはAODEに進化した!
おめでとう! Naïve BayesはAODEに進化した! 
おめでとう! Naïve BayesはLBRに進化した!
Naïve Bayesが めっちゃ進化してる!
犬画像集めてる 場合じゃねぇ!!
Naïve Bayesの進化 
•多くの研究がなされている 
–お手軽さを残して、性能向上したものも提案 
•SVMやロジスティック回帰より良い結果も(?) 
•実装することを想定しながら、紹介 
「ノーベイズ・ノーライフ」というタイトルについて 
•ベイズの定理が無ければ、今日紹介する手法も生まれな かった、という意味で選びました 
•みなさん、仲良くしましょう
もくじ 
1.Naïve Bayesとは 
1.復習 
2.Naïve Bayesの進化 
1.依存関係を考慮 
1.AODE 
2.Hidden NB 
2.経験則を取り入れる
1.Naïve Bayesとは
Naïve Bayesとは 
•機械学習系の教科書だと、おおよそ最初に 出てくる分類アルゴリズム 
•生成モデル 
•古典的
Naïve Bayesとは 
•古典的とはいえ、 
実装が簡単 
•数え上げる&掛け合わせるだけ 
学習が高速 
•O(学習事例数 * 属性数) 
精度がそこそこ良い 
•うん、、、まぁ、、、
詳しくは・・・ 
•紹介されてる書物や資料はたくさんあるので、 詳しくはそちらを参考してください 
–Murphy, Machine Learning: A Probabilistic Perspective 
–後藤and小林, 入門パターン認識と機械学習 
–中川先生, 統計的機械学習入門 
–aflcさん, ナイーブベイズ分類器を頑張って丁寧に解説してみる 
•http://qiita.com/aflc/items/13fe52243c35d3b678b0 
–Wikipedia 
•http://en.wikipedia.org/wiki/Naive_Bayes_classifier 
–などなど、めっちゃたくさん
とはいえ、 Naïve Bayesが ベースになるので復習
識別問題 
•ある属性集合Xが与えられたとき、どのクラス Cに属するか? 
•Xが与えられたとき、クラスCである確率は、 
푃(퐶|푋)
識別問題 
•푃퐶푋が計算できれば、一番確率値が大きく なるcが可能性高い 
–argmax 푐 푃(푐|푋) 
•どうやってP(c|X)を計算する?
識別問題 
•Bayesの定理 
•P(C)とP(X|C)がわかれば計算できる 
–P(X)は、Cに依らないので、argmaxでは必要ない 
푃퐶푋= 푃퐶∗푃(푋|퐶) 푃(푋)
識別問題 
•P(C)とP(X|C)はどうやって求めるの? 
–学習データから推定する 
•P(C) : 学習データでクラスCが出る確率 
={クラスCの事例数} / {学習データ事例数} 
•P(X|C) : 学習データのクラスCでXが出る確率 
={クラスCでXが出た事例数} / {クラスCの事例数}
識別問題 
•P(X|C)の計算の問題 
–属性集合Xが大きくなると、必要な計算時間や データ量が増える問題 
–次元の呪い
Naïve Bayesとは 
条件付き独立仮定 
푃(푋|푐)= 푃(푥푖|푐) 푁 푖=1 
푋={푥1,…,푥푁}
Naïve Bayesとは 
条件付き独立仮定 
푃(푋|푐)= 푃(푥푖|푐) 푁 푖=1 
푋={푥1,…,푥푁} 
X={イケメン, 高身長, 高収入}がc=結婚できる、確率P(X|c)は P(イケメン|結婚できる) * P(高身長|結婚できる) * P(高収入|結婚できる) 
【例】
Naïve Bayesとは 
•Naïve Bayes分類器 
•P(xi|c)の計算 
–xiが連続値なら、正規分布 
–xiがbinary(0か1)なら、ベルヌーイ分布 
–xiがcategorical(性別など)なら、多項分布(n=1) 
argmax 푐 푃(푐|푋)=argmax 푐 푃(푐) 푃(푥푖|푐) 푁 푖=1 
(以降、属性xiはcategoricalを前提に進めます)
注意1:多項分布の使い方 
①Naïve Bayesの枠組みで多項分布を使う場合 
②P(X|c)を多項分布でモデリングする場合 
푃(푋|푐)= 푀푢(푥푖|푛=1,푐) 푁 푖=1 
= 푛! 푥푖! 휃푖 푥푖 푁 푖=1 
푃푋푐=푀푢푋푛,푐
注意2:実装するときは 
•確率値はスムージングしたものを利用 
–Laplace-estimation 
–M-estimation 
•確率値の掛け算は、対数を取って足し算に 
–Log{P(c)} + Σ Log{P(xi|c)}
注意3:補足(追記) 
•P(xi|c)はそれぞれの属性について、別の分 布を使うことができる 
–例 
•「性別」属性はcategorical、「体重」属性は正規分布を、 それぞれ使う
2.Naïve Bayesの 進化
どういう風に 進化してるか?
「分類性能の向上 できないかな」
確率を できるだけ 正確に計算 できないか
属性間に依存がある場合、ずれる 
① P(イチロー,野球|スポーツ記事) = 0.5 
② P(イチロー|スポーツ記事) = 0.6 
③ P(野球|スポーツ記事) = 0.5 
独立性が成り立つなら、① = ② * ③ 
実際は、0.5 ≠ 0.3
確率計算を改善 
1.依存関係を扱う(Semi-Naïve Bayes) 
2.データから得られる経験則を取り入れる 
など
1.依存関係を扱う
依存関係を扱う 
•Semi-Naïve Bayesと呼ばれる 
–属性間に依存関係があることを反映 
Naïve Bayes 
依存関係も考慮 
C 
X1 
X2 
X3 
C 
X1 
X2 
X3
Semi-Naïve Bayes 
•なんかいっぱいあってヤバい 
Backward Seqential Elimination(BSE) 
Forward Seqential Selection(FSS) 
Backward Seqential Elimination and Joining(BSEJ) 
Argmented Naïve Bayes(ANB) 
Tree Argmented Naïve Bayes(TAN) 
SP-TAN 
NBTree 
Lazy Baysian Rules(LBR) 
Averaged One-dependance estimators(AODE) 
Recursive Bayesian classifiers(RBC) 
Locally weighted Naïve Bayes(LWNB) 
Adjusted Probability Naïve Bayesian Classification(APNB) 
Iterative Bayes(IB) 
Hierarchical Naïve Bayes(HierNB) 
Hidden Naïve Bayes(HidNB) 
CL-TAN 
RODE 
Weightily AODE 
Weighted AODE 
HODE 
SPODE 
Laze Elimination for AODE 
Lazy AODE 
Self-adaptive NBTree 
Boosted Augmented Naïve Bayes(BAN) 
AODE^{Subsumption Resolution} 
Evolutional Naïve Bayes(ENB) 
Maximum a Posteriori Linear Mixture of Generative Distributions(MAPLMG) 
Isotonic Regression(IR) 
など
2つピックアップ
AODE
Averaged One-dependence Estimators (AODE) 
•すべての属性間の依存関係を扱うのは計算 量的に厳しい場合も・・・ 
•そこで、1つの属性xiだけ依存すると仮定し、 
•クラスcと属性xiに依存した場合の確率値を求 め、その平均をとる 
푃(푐|푋)= 푃(푐,푥푖) 푃(푥푗|푐,푥푖)푛푗 =1푖:1≦푖≦푛∧퐹푥푖≧푚 푃(푐,푥푖) 푃(푥푗|푐,푥푖)푛푗 =1푖:1≦푖≦푛∧퐹푥푖≧푚푐′∈퐶
Averaged One-dependence Estimators (AODE) 
「属性Xiがすべての属性に依存する」場合 
& 
その平均値を使う 
C 
X1 
X2 
X3 
C 
X1 
X2 
X3 
C 
X1 
X2 
X3
푃(푐|푋)= 푃(푐,푥푖) 푃(푥푗|푐,푥푖)푛푗=1푖:1≦푖≦푛∧퐹푥푖≧푚 푃(푐,푥푖) 푃(푥푗|푐,푥푖)푛푗 =1푖:1≦푖≦푛∧퐹푥푖≧푚푐′∈퐶 
【属性】 性別={男, 女} 体重={重い, ふつう, 軽い} 【クラス】 C={ヤバい, ヤバくない} X = {男, 重い}の場合、 P(ヤバい|X) = { { P(ヤバい, 男) * P(男|ヤバい, 男) * P(重い|ヤバい, 男) } + { P(ヤバい, 重い) * P(男|ヤバい, 重い) * P(重い|ヤバい, 重い) } } / {分母} 
【計算例】
学習で保存する情報は? 
•以下の情報が推定するために必要 
–푃푐,푥푖 
–푃푐,푥푖,푥푗 
•条件付き確率は、푃푥푗푐,푥푖= 푃푐,푥푖,푥푗 푃(푐,푥푖) 
•それぞれを求めるために、以下を数える 
–F(c) : クラスがcの出現回数 
–F(c,xi) : クラスがcで属性iの値がxiとなる出現回数 
–F(c,xi,xj) : クラスがcで属性iの値がxiで、属性jの値が xjとなる出現回数
計算量 
•学習時 
O(学習事例数 * 属性数^2) 
•NBは、O(学習事例数 * 属性数) 
•推定時 
O(クラスの数 * 属性数^2) 
•NBは、O(クラス数 * 属性数)
計算量(懸念) 
•「属性数^2」 
–自然言語処理とか絡むと数万も 
•50000*50000=2.5*10^9 
–まだ現実的な時間で終わるはず・・・ 
•カウントしているだけ 
–分散処理 
•Hadoop(共起頻度集計) 
•OpenMP
どのぐらいよくなるの? 
•UCIのmushroomsで試してみた 
–事例数 : 8124 
–属性数 : 22 (属性値は平均5.7種類) 
–シャッフルして学習・評価半分ずつ 
•Accuracy結果 
–NB : 96.8 
–AODE : 99.3 
–Liblinear(SVM) : 100 
(スムージングで結構変わる。バグを残してる可能性もある。)
これだけじゃアレだな・・・ もっといろんなデータセット でやりたいな
どのぐらいよくなるの? 
•比較されてた(15clsf, 60datasets, 2foldCV) 
–Zheng&Webb, Semi-naïve Bayesian Classification,2008 
LibSVM→ 
AODE→ 
MAPLMG→ 
NB→ 
エラー率(低いほど良い)
さらに改良 
•強く依存する属性はそもそも外すべき 
–P(xi,xj|c)=P(xi|c)な属性xjを消しておく 
•Subsumption resolution(SR)+AODE 
•いや、平均するとか適当すぎでは・・・ 
–重み付き線形和にしてみる 
•Weightily/Weighted AODE 
•MAPLMG
Hidden NB
Hidden NB 
•「他の属性からの影響」を、 
「隠れ属性1つからの影響」にしてP(X|C)を計算 
C 
X1 
X2 
X3 
Xh1 
Xh2 
Xh3 
他からの影響(依存)
P(X|C) 
푃푋퐶= 푃(푋푖|푋ℎ푖,퐶) 푁 푖=1 
ただし、 
푃푋푖푋ℎ푖,퐶= 푊푖푗∗푃(푋푖|푋푗,퐶) 푁 푗=1,푗≠푖 푊푖푗= 퐼푃퐴푖;퐴푗퐶 퐼푃(퐴푖;퐴푗|퐶)푛푗 =1,푗≠푖 ただし、 푊푖푗=1 
(퐼푃は、条件付き相互情報量)
P(X|C) 
푃푋퐶= 푃(푋푖|푋ℎ푖,퐶) 푁 푖=1 
ただし、 
푃푋푖푋ℎ푖,퐶= 푊푖푗∗푃(푋푖|푋푗,퐶) 푁 푗=1,푗≠푖 푊푖푗= 퐼푃퐴푖;퐴푗퐶 퐼푃(퐴푖;퐴푗|퐶)푛푗 =1,푗≠푖 ただし、 푊푖푗=1 
かけ算と足し算が組み合わさって、 
書きにくい・・・ 
(퐼푃は、条件付き相互情報量)
P(X|C) 
푃푋퐶= 푃(푋푖|푋ℎ푖,퐶) 푁 푖=1 
ただし、 
푃푋푖푋ℎ푖,퐶= 푊푖푗∗푃(푋푖|푋푗,퐶) 푁 푗=1,푗≠푖 푊푖푗= 퐼푃퐴푖;퐴푗퐶 퐼푃(퐴푖;퐴푗|퐶)푛푗 =1,푗≠푖 ただし、 푊푖푗=1 
(퐼푃は、条件付き相互情報量) 
すごい小さい数で割る場合がある・・・
学習で保存する情報は? 
•AODEと同じ 
–F(c) : クラスがcの出現回数 
–F(c,xi) : クラスがcで属性iの値がxiとなる出現回数 
–F(c,xi,xj) : クラスがcで属性iの値がxiで、属性jの 値がxjとなる出現回数
計算量 
•学習時 
O(学習事例数 * 属性数^2 + クラス数*全属性数^2) 
•NBは、O(学習事例数 * 属性数) 
•AODEは、O(学習事例数 * 属性数^2) 
•推定時 
O(クラスの数 * 属性数^2) 
•NBは、O(クラス数 * 属性数) 
•AODEは、O(クラスの数 * 属性数^2) 
(퐼푃計算のため)
性能は? 
•AODEと同じぐらい・・・? 
–さっきのmushroomsデータだと、Acc=99.9 
•AODEはAcc=99.3だった 
•著者の主張 
–AODEはアンサンブルしているが、 
こちらはsingle understandable classifier
(追記)WAODEについて 
•Weightily AODE(WAODE)も相互情報量を利用しているが、 HiddenNBとの違いは? 
–もうしわけありません、WAODEの方をきちんと把握できていま せん・・・ 
–WAODEが相互情報量による重みづけをしているというのは、 例えば、2009年の黒川 et al., 「Weighted AODEの提案と実験的 評価」において少し触れられていますが、そこでもHiddenNBと WAODEを別物として扱っており、「ODEを作ってから平均」する か「平均したものを使ってODE」の違いがあるのではと思われ ます 
–また、AODE2005年→HiddenNB2005年→WAODE2006年のよう で、「HiddenNBがAODEとは違うんだよ、AODEとは」と主張して いるため、AODEの拡張としてのWAODEが(HiddenNBとは同じこ とをしているかもしれないが)必要となったのでは、と思われま す
2.経験則を取り入れる
自然言語処理とかだと・・・ 
•Burstiness(意味:バースト的な、どっとくる) 
–ほとんどの単語はあんまり出てこない 
–1度出ると何回もでてくる 
–共起語もたくさんでてくる 
•適用するデータの特徴に合わせて、P(X|C)の 計算を改善してあげると・・・
経験則を取り入れて改善 
•Transformed Weight-normalized Complement NB(TWCNB) 
–自然言語のデータなどの特徴を取り入れて補正 
•Improved Naïve Bayes 
–確率が小さく計算される傾向があるので、計算さ れた確率値をα乗してあげると結果がよくなった
その他の進化 
•他の分類器とハイブリッド 
–NBTree 
•Naïve Bayes+決定木 
–NB-SVM 
•Naïve Bayesの結果を素性値にしてSVM 
•ラベルなしデータも使う(半教師あり) 
–Semi-supervised Naïve Bayes
まとめ
まとめ 
•Naïve Bayesがいろいろ進化してた 
–改良や改善が提案されている 
•こんなにあるとは・・・(勉強不足) 
–実験的にはSVMを超えてる結果も得られる場合 も 
•実装が面倒でもなく、良い結果が得られるも のもあるので、試してみるのはありかも
おわり
Reference 
•Zheng&Webb, Semi-naïve Bayesian Classification,2008 
•cou_zさん, 僕はもう、そんなにナイーブじゃないんだ 
–http://qiita.com/cou_z/items/bca93fce0a08b521a3e8 
•Webb et al., Not So Naïve Bayes: Aggregating One- Dependence Estimators, 2005 
•Zhang et al., Hidden Naïve Bayes, 2005 
•Wikipedia 
•Weka 
•背景画像 
–http://www.wallpaper-box.com/

More Related Content

Featured

Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

no_bayes_no_life_nb_keep_evolving