読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】単語どうしは独立って、明らかに嘘の仮定やん。なんでナイーブベイズでスパムが当たるん?【AI】

18レスカテゴリ:AI・機械学習
1: 名無しさん

スパムメールの判定にナイーブベイズが使われてたって聞いた
でも「単語どうしは独立」って仮定するらしい。「無料」と「今すぐ」なんか一緒に出やすいに決まってるやん

2: 名無しさん

>>1
正確には「スパムかどうかが分かれば、単語どうしは独立」という、クラスのもとでの条件付き独立の仮定
その仮定を置くと、メールの単語の確率が単語ごとのかけ算に分かれる

3: 名無しさん

>>2
数字でやってみて

4: 名無しさん

>>3
スパムが全体の40%とする。「無料」が入る割合はスパムで0.5、ふつうのメールで0.05。「会議」が入る割合はスパムで0.1、ふつうで0.4
「無料」が入っていて「会議」が入っていないメールなら

割合にすると でスパム

5: 名無しさん

>>4
両方入ってたら?

6: 名無しさん

>>5
スパム 、ふつう で、スパムの確率は約0.63
「会議」が入ると、スパムらしさが下がる

7: 名無しさん

>>6
で、仮定が嘘やのに当たるのはなんでなん

8: 名無しさん

>>7
分類で必要なのは「どっちのクラスの確率が大きいか」だけで、確率の値そのものが正確である必要はない
「無料」と「今すぐ」が一緒に出ると、同じ証拠を2回数えて確率は極端になる。でも両方スパム寄りの単語なら、どっちが大きいかの順番は変わりにくい

9: 名無しさん

>>8
それって都合のいい話に聞こえる

10: 名無しさん

>>9
理論的にも調べられてて、0か1かで当たり外れを数える損失のもとでは、独立の仮定が大きく崩れていても最適な分類になる場合が広くある、と示した研究がある(Domingos & Pazzani, 1997)
ただ、確率の値は極端に出やすいから、「スパムの確率0.999」をそのまま信じるのは危ない

11: 名無しさん

>>10
確率の数字は信用できんってことか

12: 名無しさん

>>11
そう。確率をそのまま使うなら、較正をし直すのが筋
順番だけ使う分類と、確率の値まで使う判断とで、求められるものが違う

13: 名無しさん

学習データに一度も出てこなかった単語はどうなるん

14: 名無しさん

>>13
そのままやと確率0になって、かけ算全体が0になる。1語のせいで、他の証拠が全部消える
よく使うのは、数えた回数に1を足してから割る方法(ラプラス・スムージング)。スパム200通で一度も出てない語なら、たとえば

15: 名無しさん

かけ算を何百回もやったら、数が小さくなりすぎん?

16: 名無しさん

>>15
なる。0.01を100回かけると で、計算機の扱える範囲を下回ることがある
だから対数をとって、かけ算を足し算にして比べる。順番は対数をとっても変わらない

17: 名無しさん

今どきは大きい言語モデルで分類すればええやん。ナイーブベイズを勉強する意味ある?

18: 名無しさん

>>17
精度だけなら大きいモデルが勝つ場面は多い
でもナイーブベイズは、学習が単語を数えるだけで一瞬で終わり、データが少なくても動いて、どの単語が効いたかも読める。比べるときの基準のモデルとして今でもよく使われる

管理人のひとこと