前回のきうノート!(デンッ)Bag-of-Wordsの考え方を身に付けた俺!自然言語処理の大枠について少し理解した気になっていたけど...その先に待っていたのはかな~り難しい確率モデルだったの...!あぁ、俺の卒業研究、どうなっちゃうの~!(本日最初で最後のラブライブ!要素)
この前、確率的トピックモデルについて勉強しようとしたらこれがてんで分からなくてね、という訳で暫くはこのモデルを理解するための外堀を埋める勉強になりそうっすね...。次のゼミは水曜だし、火曜日は沼津に謎解きしに行きたいので、今日出来るだけ進めるぞい!
・ナイーブベイズ
確率的トピックモデルの一番簡単な例がナイーブベイズらしいので勉強しまつ。今から、順を追って送られてきたメールが普通のメール or 迷惑メールなのかを分類することを考えりゅ。
1. 単語の出現頻度から、出現確率を考える。
カテゴリ k={普通のメール,迷惑メール} とした時に、特定のカテゴリから得られた単語の度数分布を規格化することで、そのカテゴリに於ける単語の出現確率が定義出来る。因みにこの分布は多項分布って言うらしい。(二項分布の一般化)(レアガチャの確率分布)
※例えば、p(単語1 | k=普通メール) = 0.1 って感じ。
※規格化:各度数を全観測数で割ること。
これによって、普通のメールが送られてきた時は、k=普通メール の分布からランダム(それぞれ独立)に選ばれた単語がメールの文を作っていると考えることが出来る!この時、カテゴリk から選ばれたある単語列wが作られる確率は
で簡単に求めることが出来る。また、カテゴリkのメールが送られてくる確率をp(k)とすると、カテゴリkのメールdが生成される確率は自ずと
のように得られる!なるほど!
2. 例を用いて実際に分類!
めちゃくちゃ単純化された例なのはご愛嬌。全7種類の単語から生成された3つのメールが送られてきた。行列の中身は各単語の出現頻度である。その中で、2つのメールは普通のメール、1つは迷惑(広告)メールとする。この時、新しく送られてくるメールdが普通のメールなのか、迷惑メールなのかを分類したい。
ここから分かることを列挙すると、、、
p(k=普通メール) = 2/3 , p(k=迷惑メール) = 1/3 と
上のような単語の出現確率。
新しく送られてくるメールdを分類する時に必要な確率は、メールdが送られてきた時、それが普通メール or 迷惑メールである確率なので、つまりp(k|d) である。ここで重要になってくるのがベイズの定理!
※ベイズの定理を簡単に説明。
Aが起こった下でBが起きる確率を、Bが起こった下でAが起こる確率、Aが起こる確率、Bが起こる確率で書き表せる定理。今回、Aが起こった前提での話をしているので、P(A)を定数とすると、この式は P(B|A) ∝ P(A|B) P(B) で書ける。これを今扱っている例に当てはめると p(k|d) ∝ p(d|k) p(k) (←大事)が得られる!
新しく送られてきたメールdが d={単語1,単語6} の時、これが普通メールなのか、迷惑メールなのかを式を用いて計算して判断してみる。
p(k|d) = p( 普通メール | d) ∝ 2/3 * 0.1 * 0.1 =2/3 * 10^{-2}
p( 迷惑メール | d) ∝ 1/3 * 0.2 * 0.4 = 8/3 * 10^{-2}
よって、普通メールの確率:迷惑メールの確率 = 20:80 が求められて、この結果から送られてきたメールは迷惑メールだと判断出来る! (これは例題なので精度に関しては多めに見てくれよな!)
ベイズの定理、便利でワロタよね。
・今後の予定
PLSI について学びたいが、その為には最尤推定・ベイズ推定の知識が必要そうなので、その勉強。テーマ選びについてもそろそろ真面目に考えないとなぁ......この前函館UCでアンケート取ってたけど、そういうのって自然言語処理が役に立つ分野だから『ライブの感想分析』みたいなのやってみたいよね。
・参考文献
http://chasen.org/~daiti-m/paper/daichi15topicmodel-for-ecology.pdf
離散データの確率的トピックモデル - 持橋大地 統計数理研究所 - 2018年5月12日現在