スパム フィルタリング用にナイーブ ベイジアン分類器を実装しています。ある計算に疑問があります。何をすべきか明確にしてください。これが私の質問です。
この方法では、計算する必要があります
P(S|W) -> ワード W が発生した場合、メッセージがスパムである確率。
P(W|S) -> 単語 W がスパム メッセージに含まれる確率。
P(W|H) -> ハム メッセージで単語 W が発生する確率。
したがって、P(W|S) を計算するには、次のうちどれが正しいですか。
(迷惑メールにWが出現した回数)/(全メッセージにWが出現した回数の合計)
(スパムに単語 W が含まれる回数)/(スパム メッセージに含まれる単語の総数)
では、P(W|S) を計算するには、(1) または (2) を実行する必要がありますか? ((2)だと思ったのですが、よくわかりません。)
ちなみに、情報についてはhttp://en.wikipedia.org/wiki/Bayesian_spam_filteringを参照しています。
今週末までに実装を完了しなければなりません:(
「W」という単語を繰り返し使用すると、メッセージのスパム スコアが高くなるのではないですか? あなたのアプローチではそうではありませんよね?
100 個のトレーニング メッセージがあり、そのうち 50 個がスパムで、50 個がハムであるとします。各メッセージの word_count = 100 と言います。
また、スパム メッセージでは単語 W が各メッセージで 5 回出現し、ハム メッセージでは単語 W が 1 回出現するとします。
したがって、すべてのスパム メッセージで W が発生する合計回数 = 5*50 = 250 回。
また、すべての Ham メッセージで W が発生した合計回数 = 1*50 = 50 回。
すべてのトレーニング メッセージでの W の合計発生数 = (250+50) = 300 回。
では、このシナリオでは、どのように P(W|S) と P(W|H) を計算しますか?
当然期待すべきP(W|S) > P(W|H)
ですよね?