ナイーブベイズによる2値分類の原理 — 証拠を足し算する分類器をわかりやすく解説

迷惑メールフィルタは、どうやって1通のメールをスパムか正常かに振り分けているのでしょうか。素朴に考えると、「無料」「当選」「今すぐクリック」といった単語が入っていればスパムらしく、「会議」「報告書」「ご確認」が入っていれば正常らしい。この直感——たくさんの手がかり(単語)が、それぞれスパムらしさ/正常らしさの「証拠」を出し合い、最後に総合して判定する——を、確率のことばで厳密に定式化したのが ナイーブベイズ分類器 です。

本記事のねらいは、ナイーブベイズを「公式を暗記する分類器」ではなく、2値分類の原理として腹落ちさせることです。とくに、対数オッズ(log-odds) という視点に立つと、ナイーブベイズの心臓部が驚くほどシンプルに見えてきます。

各特徴が独立に「証拠」を出し、それをただ足し算する。合計が正ならクラス1、負ならクラス0。

このシンプルな原理から、次のような一見バラバラな性質がすべて導かれます。

  • なぜナイーブベイズの決定境界は(多くの場合)直線になるのか
  • なぜ「特徴どうしは独立」という明らかに間違った仮定を置いても、分類はちゃんと当たるのか
  • なぜナイーブベイズはロジスティック回帰と対になり、「生成モデル」と「識別モデル」という機械学習の二大流派を分ける分岐点になるのか

ナイーブベイズはスパム判定だけでなく、感情分析(レビューが肯定的か否定的か)、医療診断(陽性か陰性か)、文書分類など、2値・多クラスの分類で今も広く使われる基本手法です。

本記事の内容

  • 2値分類をベイズの定理で定式化する
  • 対数オッズで見ると「証拠の足し算」になること
  • ナイーブ(条件付き独立)仮定の役割
  • 決定境界が線形になる理由(ベルヌーイ/ガウス)
  • 独立仮定が間違っていても分類が効く理由
  • 生成モデルと識別モデル(ロジスティック回帰との関係)

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

姉妹記事の ナイーブベイズ分類器の理論と実装 はガウシアン・多項・ベルヌーイの3種類を横断する総論です。本記事はそこから 「2値分類の原理」 に絞り込み、対数オッズと決定境界の視点で掘り下げます。

2値分類をベイズの定理で定式化する

まず土台を確認します。2値分類とは、観測した特徴ベクトル $\bm{x}=(x_1,\dots,x_d)$ から、それがクラス1(例:スパム、$y=1$)かクラス0(正常、$y=0$)かを当てる問題です。「最も間違いが少ない」決め方は、ベイズ決定則 が教えてくれます——事後確率 $P(y\mid\bm{x})$ が大きいほうのクラスを選ぶ(MAP決定則)。

事後確率はベイズの定理で計算できます。

$$ P(y=1\mid\bm{x}) = \frac{P(\bm{x}\mid y=1)\,P(y=1)}{P(\bm{x})} $$

ここで $P(y=1)$ は 事前確率(そもそもスパムが来る割合)、$P(\bm{x}\mid y=1)$ は 尤度(スパムならこの単語の組み合わせがどれくらい出るか)です。分母 $P(\bm{x})$ は両クラスで共通なので、大小比較には効きません。

問題は尤度 $P(\bm{x}\mid y)$ です。$\bm{x}$ が $d$ 個の特徴からなるとき、これは「$d$ 個の特徴の同時分布」で、正面から推定しようとすると組み合わせ爆発を起こします。単語が1万種類あれば、その出現パターンは $2^{10000}$ 通り——データからは絶対に埋められません。この壁を突破する大胆な仮定が「ナイーブ」の正体です。

まずは、この事後確率の比較を扱いやすい形に変えるところから始めましょう。

対数オッズ — 「比」を取ると証拠が足し算になる

2値分類では、$P(y=1\mid\bm{x})$ と $P(y=0\mid\bm{x})$ の を取るのが決定的に賢いやり方です。比を取れば、厄介な分母 $P(\bm{x})$ が消えます。

$$ \frac{P(y=1\mid\bm{x})}{P(y=0\mid\bm{x})} = \frac{P(\bm{x}\mid y=1)\,P(y=1)}{P(\bm{x}\mid y=0)\,P(y=0)} $$

この比(オッズ)が1より大きければクラス1、小さければクラス0と判定できます。さらに 対数 を取ると、積が和に分解され、見通しが劇的によくなります。

$$ \begin{equation} \underbrace{\log\frac{P(y=1\mid\bm{x})}{P(y=0\mid\bm{x})}}_{\text{対数オッズ}} = \underbrace{\log\frac{P(y=1)}{P(y=0)}}_{\text{事前の傾き}} + \underbrace{\log\frac{P(\bm{x}\mid y=1)}{P(\bm{x}\mid y=0)}}_{\text{データの証拠}} \end{equation} $$

判定ルールは「この対数オッズが正ならクラス1、負ならクラス0」というシンプルなものになりました。第1項は「そもそもスパムが多いか」という事前の傾き、第2項は「観測データがどちらを支持するか」という証拠です。あとは第2項——尤度比——をどう分解するかですが、ここで登場するのがナイーブ仮定です。

ナイーブベイズ2値分類の概念図: 各特徴が対数尤度比の証拠を出し合い符号で判定

イメージを先に示すと、この図のとおりです。各特徴(単語)がそれぞれ「スパム寄り(正)か正常寄り(負)か」の証拠を出し、それらを足し合わせた合計の符号で判定する——これがナイーブベイズ2値分類の全体像です。では、なぜ証拠が「足し算」でよいのかを見ていきます。

ナイーブ仮定 — 条件付き独立で尤度が積になる

尤度 $P(\bm{x}\mid y)$ の推定が難しいのは、特徴どうしが絡み合っているからでした。そこでナイーブベイズは、思い切った仮定を置きます。

クラスが与えられたとき、各特徴は互いに独立である(条件付き独立)。

$$ P(\bm{x}\mid y) = P(x_1,\dots,x_d\mid y) \approx \prod_{i=1}^{d} P(x_i\mid y) $$

「スパムだとわかっていれば、『無料』が入っているかどうかと『当選』が入っているかどうかは無関係」とみなす、ということです。現実にはスパムでは「無料」と「当選」は一緒に出やすい(相関がある)ので、この仮定はたいてい間違っています。だからこそ「ナイーブ(素朴、単純)」と呼ばれます。それでも、この仮定のおかげで $d$ 次元の同時分布が、1次元の分布 $P(x_i\mid y)$ を $d$ 個推定するだけの問題に激減します。単語ごとに「スパムでの出現率」を数えるだけでよいのです。

条件付き独立の仮定: 相関を無視して軸平行な分布を仮定

左は相関のある本物の分布、右はナイーブベイズが「こうだ」と仮定する独立な分布です。本物では特徴が斜めに伸びた楕円状に広がっているのに、ナイーブベイズは相関を無視し、軸に平行な(丸い)分布だと思い込みます。この「思い込み」がどれだけ悪影響を及ぼすか(あるいは及ぼさないか)は後で検証します。

この積を、先ほどの対数オッズの第2項に代入すると、尤度比の対数が 各特徴の対数尤度比の和 にきれいに分解されます。

$$ \log\frac{P(\bm{x}\mid y=1)}{P(\bm{x}\mid y=0)} = \log\prod_{i=1}^{d}\frac{P(x_i\mid y=1)}{P(x_i\mid y=0)} = \sum_{i=1}^{d}\log\frac{P(x_i\mid y=1)}{P(x_i\mid y=0)} $$

これで原理が完成しました。対数オッズ全体は、次の「足し算」の形になります。

$$ \begin{equation} \log\frac{P(y=1\mid\bm{x})}{P(y=0\mid\bm{x})} = \log\frac{P(y=1)}{P(y=0)} + \sum_{i=1}^{d}\underbrace{\log\frac{P(x_i\mid y=1)}{P(x_i\mid y=0)}}_{\text{特徴 }i\text{ の証拠}} \end{equation} $$

各特徴 $x_i$ は、自分の対数尤度比という「証拠」を1票ずつ投じます。証拠が正ならクラス1に、負ならクラス0に傾ける。それを事前の傾きと合算し、符号で判定する。これがナイーブベイズ2値分類の原理そのものです。

対数オッズ分解: 事前オッズと各特徴の証拠の積み上げ

あるメールの判定を積み上げ棒グラフにしたものです。左端の灰色が事前の傾き(この例では正常メールのほうが多いので負からスタート)、そこに各単語の証拠(スパム語は赤で上向き、正常語は青で下向き)を順に足していきます。最終的な累積(黒破線)が判定境界(緑の $0$ 線)より上に出れば、スパムと判定されます。この例では合計が $+0.9$ で $0$ を上回り、スパム判定です。1つ1つの単語は小さな証拠でも、積み重なれば結論を動かします。

証拠を足し算する、という原理がつかめました。次に、この足し算がデータ空間でどんな「境界線」を引くのかを見ます。

決定境界はなぜ線形になるのか

「証拠の足し算」という構造は、決定境界の形に直接効いてきます。まずスパム判定のような2値特徴(単語があるか/ないか)のベルヌーイナイーブベイズを考えましょう。特徴 $x_i\in\{0,1\}$ の対数尤度比は、$x_i$ について1次式になります。実際、$x_i=1$ のときと $x_i=0$ のときの証拠の差 $w_i$ を係数とみなせば、対数オッズは

$$ \log\frac{P(y=1\mid\bm{x})}{P(y=0\mid\bm{x})} = b + \sum_{i=1}^{d} w_i\,x_i $$

という $\bm{x}$ の1次関数(線形結合)になります。判定境界はこれが $0$ になる場所、つまり $b+\sum w_i x_i = 0$ という超平面(線形境界)です。各 $w_i$ が「その単語がどれだけスパムを示す証拠か」の重みそのものです。

具体的に $w_i$ を書き下しておきましょう。単語 $i$ がスパムで出る確率を $p_{i1}=P(x_i=1\mid y=1)$、正常で出る確率を $p_{i0}=P(x_i=1\mid y=0)$ とします。ベルヌーイ分布 $P(x_i\mid y)=p_{iy}^{x_i}(1-p_{iy})^{1-x_i}$ の対数尤度比を $x_i$ について整理すると、$x_i$ の係数(=重み)は

$$ w_i = \log\frac{p_{i1}(1-p_{i0})}{p_{i0}(1-p_{i1})} $$

となります。これは「スパムで出やすく正常で出にくい語ほど大きな正の重みを持つ」という直感をそのまま式にしたもので、統計学でおなじみの対数オッズ比の形をしています。$p_{i1}>p_{i0}$ なら $w_i>0$(スパムの証拠)、逆なら $w_i<0$(正常の証拠)です。

ベルヌーイNBが学んだ単語ごとの証拠重み(対数尤度比)

合成したスパム/正常メールのデータで実際にベルヌーイナイーブベイズを学習させ、各単語の重み $w_i$(対数尤度比)を並べました。「当選」「クリック」「無料」は大きな正の重み=強いスパムの証拠、「報告書」「会議」「ご確認」は負の重み=正常の証拠だと、データから自動的に学ばれています。この分類器の訓練データ精度は96.3%でした。人間の直感(スパム語・正常語のイメージ)と一致する重みが、単に出現回数を数えるだけで得られるのが気持ちよいところです。

連続値の特徴を扱うガウスナイーブベイズでも、線形性は(条件つきで)保たれます。各クラスの特徴を正規分布 $P(x_i\mid y)=\mathcal{N}(\mu_{iy},\sigma_{iy}^2)$ でモデル化するとき、対数尤度比は $x_i$ の2次式になります。ただし、両クラスの分散が等しい($\sigma_{i1}=\sigma_{i0}$)場合は2次の項が打ち消し合い、境界は線形になります。分散がクラスで異なると2次の項が残り、境界は曲線(2次曲面)になります。

ガウスNBの決定境界(等分散は直線・異分散は二次曲線)

左は両クラスの分散が等しい場合で、決定境界はまっすぐな直線です(精度0.99)。右は分散がクラスで異なる場合で、境界が曲がって2次曲線になっています(精度0.89)。「証拠の足し算」という同じ原理から出発しても、各特徴の分布の置き方しだいで境界の形が変わるわけです。線形か2次かは、判別分析 の線形判別(LDA)と2次判別(QDA)の違いとちょうど対応しています。

ここまで「独立仮定は間違っている」と何度か触れました。ではその間違いは、分類の精度をどれだけ損なうのでしょうか。

なぜ「ナイーブ」でも分類が効くのか

ナイーブベイズの不思議な強みは、条件付き独立の仮定が間違っていても、分類の正解率はしばしばほとんど落ちないことです。なぜでしょうか。

鍵は、分類に必要なのは対数オッズの 符号だけ だという点です。私たちは $P(y=1\mid\bm{x})$ の正確な値を知りたいわけではなく、それが $0.5$ を超えるか(対数オッズが正か負か)だけを知りたい。独立仮定が崩れていると、推定した確率のは不正確になります。相関のある特徴は「同じ証拠を二重に数える」ため、証拠が過大評価され、確率が $0$ や $1$ に張り付きがちになります(過信)。しかし、それでも符号は正しい向きを指すことが多いのです。

相関特徴でもNBは分類できるが確率は過信する

左は、わざと強く相関させた2特徴のデータにナイーブベイズを適用した結果です。独立の仮定は明らかに破れていますが、それでも分類精度は0.93に達し、ロジスティック回帰の0.94にわずかに及ばない程度です。右は予測確率のヒストグラムで、ナイーブベイズ(水色)が $0$ と $1$ の両端に極端に張り付いている——つまり 確率を過信している ことがわかります。独立仮定を破ったツケは「確率値の不正確さ」に出るのであって、「分類の正誤」にはあまり出ない。これがナイーブベイズが実務で生き残っている理由です。ただし、確率そのものを(リスク評価などで)使いたい場合は、この過信に注意が必要です。

この「符号は合うが確率は過信」という性質は、ナイーブベイズを別の有名な分類器と比べると、より深く理解できます。ロジスティック回帰です。

生成モデルと識別モデル — ロジスティック回帰との関係

先ほど、ベルヌーイ/等分散ガウスのナイーブベイズの対数オッズは $b+\sum w_i x_i$ という線形の形になると述べました。この形は、ロジスティック回帰とまったく同じです。事後確率も、対数オッズをシグモイド関数 $\sigma(z)=1/(1+e^{-z})$ に通した形になります。

$$ P(y=1\mid\bm{x}) = \sigma\!\left(b + \sum_{i=1}^{d} w_i x_i\right) $$

証拠の合計をシグモイドに通すと確率になる(ロジスティック回帰と同じリンク)

証拠の合計(対数オッズ)を横軸に取ると、事後確率はこのシグモイド曲線で決まります。合計が $0$ のところが判定境界(確率 $0.5$)で、合計が大きいほど確率は $1$ に近づきます。先ほどの例(合計 $+0.85$)なら $P(\text{スパム})=0.70$ です。

同じ線形+シグモイドの形なのに、ナイーブベイズとロジスティック回帰は学習のしかたが正反対です。

  • ナイーブベイズ(生成モデル):各クラスがどうデータを「生成」するか $P(\bm{x}\mid y)$ をモデル化し、そこから間接的に重み $w_i$ を計算する。単語の出現率を数えるだけ
  • ロジスティック回帰(識別モデル):$P(\bm{x}\mid y)$ には踏み込まず、決定境界の重み $w_i$ を直接、分類誤差が小さくなるよう最適化する

生成モデル(NB)と識別モデル(ロジスティック回帰)の決定境界比較

同じデータに両者を当てると、決定境界は近い位置に引かれますが、微妙にずれます。ナイーブベイズは「各特徴の分布」という遠回りを経て境界を決めるので、独立仮定のぶんだけ最適な位置からずれることがあります。ロジスティック回帰は境界を直接調整するので、相関があっても境界そのものは合わせやすいのです。

この2つの関係は、Ng と Jordan の有名な研究で理論的に整理されました。ざっくり言うと、ナイーブベイズは少ないデータで素早く安定した性能に到達する一方、ロジスティック回帰は十分なデータがあれば、より低い誤差に達しうるという住み分けです。

ナイーブベイズとロジスティック回帰の学習曲線

条件付き独立に近い高次元データでの学習曲線です。ナイーブベイズ(水色)は、各特徴を独立に推定する分だけパラメータの分散が小さく、数百サンプルという少ないデータでも早々に高い精度で安定します。弱く正則化したロジスティック回帰(青)は、特徴数に対してデータが少ない領域では過学習してばらつき、追いつくのにより多くのデータを要しています。「データが少ないときはナイーブベイズ、潤沢なら識別モデルも検討」という実務の勘どころが、この曲線に表れています。

最後に、実装上どうしても必要になる小技を1つ補足します。

補足:ラプラス平滑化でゼロ確率を防ぐ

証拠を掛け算(対数では足し算)する構造には、落とし穴が1つあります。ある単語が「スパムの訓練データに一度も出てこなかった」場合、$P(x_i\mid y=1)=0$ となり、尤度の積 $\prod P(x_i\mid y)$ が丸ごと $0$ になってしまいます。たった1語の未観測で、他のすべての強い証拠が無に帰すのです。

これを防ぐのが ラプラス平滑化(加算平滑化)です。各カウントに小さな数 $\alpha$(通常1)を足してから確率を計算し、「まだ見ていないだけかもしれない」余地を残します。

$$ P(x_i \mid y) = \frac{(\text{クラス } y \text{ での出現回数}) + \alpha}{(\text{クラス } y \text{ の総数}) + \alpha\cdot(\text{取りうる値の数})} $$

ラプラス平滑化による未観測語のゼロ確率問題の回避

平滑化なし(青)では未観測の「語B」の確率がぴったり $0$ になり、これが尤度の積全体をゼロにしてしまいます。ラプラス平滑化(緑)を施すと、未観測の語にもわずかな確率が割り当てられ、破綻を防げます。観測済みの語の確率もごくわずかに $0$ 方向へ均され、全体として「見ていない事象を完全には否定しない」慎重な推定になります。

まとめ

本記事では、ナイーブベイズによる2値分類の原理を、対数オッズの視点から解き明かしました。

  • 原理は「証拠の足し算」 — 対数オッズを取ると、事前の傾き+各特徴の対数尤度比の和になり、合計の符号でクラスを決める
  • ナイーブ仮定(条件付き独立) が、$d$ 次元の同時分布の推定を、1次元分布を $d$ 個数えるだけの問題に激減させる。その代償として尤度は積になり、対数で足し算になる
  • 決定境界は線形 — ベルヌーイや等分散ガウスでは対数オッズが $\bm{x}$ の1次式になり、境界は超平面。分散が異なると2次曲線
  • 独立仮定が間違っていても分類は効く — 必要なのは対数オッズの符号だけ。ツケは「確率値の過信」に出るが、正解率にはあまり出ない
  • 生成モデルの代表 — 同じ線形+シグモイドの形を持つロジスティック回帰(識別モデル)と対をなす。ナイーブベイズは少データで速く、識別モデルは大データで有利

「たくさんの弱い手がかりを足し合わせて決める」という発想は、ナイーブベイズにとどまらず、ロジスティック回帰、線形判別分析、さらにはニューラルネットワークの最終層まで、分類の広い範囲に通底しています。まずこの単純明快な分類器で原理を押さえておくと、より複雑なモデルの見通しがぐっとよくなります。

次のステップとして、以下の記事も参考にしてください。