ベイズの定理によるスパムフィルタリング
現代のメールシステムで重要なスパムフィルタリングは、ベイズの定理を基盤とした分類手法です。この問題では、特定の単語の出現による事後確率を計算します。
問題設定の整理
- 単語出現率(スパム):P(「割引」|スパム) = 0.8
- 単語出現率(正常):P(「割引」|正常) = 0.1
- 事前確率(スパム):P(スパム) = 0.2
- 事前確率(正常):P(正常) = 0.8
- 求める値:P(スパム|「割引」)
Step 1: ベイズの定理の適用
$$P(\\text{スパム}|\\text{「割引」}) = \\frac{P(\\text{「割引」}|\\text{スパム}) \\times P(\\text{スパム})}{P(\\text{「割引」})}$$
Step 2: 全確率の法則による分母の計算
$$P(\\text{「割引」}) = P(\\text{「割引」}|\\text{スパム}) \\times P(\\text{スパム}) + P(\\text{「割引」}|\\text{正常}) \\times P(\\text{正常})$$
$$P(\\text{「割引」}) = 0.8 \\times 0.2 + 0.1 \\times 0.8$$
$$P(\\text{「割引」}) = 0.16 + 0.08 = 0.24$$
Step 3: 事後確率の計算
$$P(\\text{スパム}|\\text{「割引」}) = \\frac{0.8 \\times 0.2}{0.24} = \\frac{0.16}{0.24} = \\frac{2}{3} ≈ 0.667$$
小数第3位まで:0.667
結果の解釈
「割引」という単語を含むメールがスパムである確率は約66.7%です。これは:
- 単語の識別力:この単語はスパム判定に有効
- 事前確率の影響:スパム率20%から66.7%に上昇
- 尤度比:$\\frac{0.8}{0.1} = 8$倍の識別力
実際の数値で確認
1,000通のメールを分析した場合:
- スパムメール:200通(うち160通に「割引」が出現)
- 正常メール:800通(うち80通に「割引」が出現)
- 「割引」を含むメール計:240通
- うちスパム:160通
- 確率:160/240 = 2/3 ≈ 66.7%
ナイーブベイズ分類器への拡張
実際のスパムフィルタでは複数の単語を組み合わせます:
$$P(\\text{スパム}|w_1, w_2, \\ldots, w_n) \\propto P(\\text{スパム}) \\prod_{i=1}^n P(w_i|\\text{スパム})$$
- 独立性仮定:「ナイーブ」な仮定だが実用的
- 計算効率:線形時間での分類
- 学習データ:大量のラベル付きメールデータ