初心者と上級者の会話形式でわかりやすく解説
ナイーブベイズってよく「スパムフィルタ」の例で出てくるけど、結局何をやってるの?
ひとことで言うと、「このデータ、どっちのグループっぽい?」を確率で計算する手法だよ。
スパムフィルタの場合、メールに含まれる単語を見て「このメールがスパムである確率」と「スパムでない確率」を計算して、高い方に分類するんだ。
過去のメールから「どの単語がスパムに多いか」を学習しておく
確率で計算するって、具体的にどうやるの?
核になるのがベイズの定理だよ。「結果から原因を推測する」ための公式なんだ。流れを見てみよう:
なるほど…具体的な数字で見てみたい!
OK!まず過去のメール100通から、各単語がスパム・正常それぞれでどれくらい出てくるか調べた結果がこれだよ:
| 単語 | スパム中の出現率 | 正常中の出現率 |
|---|---|---|
| 無料 | 80% | 5% |
| 会議 | 10% | 60% |
| 当選 | 70% | 1% |
| 資料 | 5% | 50% |
| 今すぐ | 60% | 3% |
「無料」「当選」「今すぐ」はスパムに多く、「会議」「資料」は正常メールに多い
→ スパムの確率が高い → 🚫 スパムに分類!
「無料」のインパクトが「会議」を上回った
計算のイメージはつかめた!でもなんで「ナイーブ(素朴)」って名前なの?
ここがこの手法の最大の特徴で、「各単語(特徴量)は互いに独立」という素朴な仮定を置いているからなんだ。
さっきの計算で、各単語の確率をそのまま掛け算したよね?これは「"無料"と"会議"は関係がない」と仮定しているから成り立つ計算なんだ。
現実には単語同士に関連性があるが、それを無視する(=ナイーブ)ことで計算がシンプルになり、
それでも実用的にはかなり高い精度が出るのがこの手法のすごいところ
仮定が雑なのにうまくいくんだ…!メリットとデメリットをまとめて教えて!
まとめるとこんな感じだよ:
G検定で押さえておくポイントをまとめるね!