Goodな生活

経済学修士→環境コンサル→データサイエンス

ベイズ判別

条件付き確率とベイズの定理

ベイズ判別の基本的な考え方はベイズの定理に基づく。例えばある患者の発熱という症状について風邪かインフルエンザのどちらの原因で生じたかを判断したいとする。ここで風邪が原因である確率がインフルエンザが原因である確率よりも高ければ、患者の発熱の原因は風邪だと判断することができる。これを条件付き確率を用いて表すと、

 {
\begin{align}
P(D|G_1) = \frac{P(D \cap G_1)}{P(G_1)}, \quad  P(D|G_2) = \frac{P(D \cap G_2)}{P(G_2)},\tag{1}
\end{align}
}

ただしP(G_1)+P(G_2)=1

f:id:good_na_life:20210617221231p:plain
図1

P(G_1)P(G_2)は風邪とインフルエンザの相対頻度であり、発熱という結果を前提としないため事前確率と呼ばれる。発熱という結果Dが生じる確率P(D)は事前確率と条件付き確率を用いて

 {
\begin{align}
P(D) = P(G_1) P(D|G_1) + P(G_2)P(D|G_2) \tag{2}
\end{align}
}

と表せる。求めたいのは発熱が風邪とインフルエンザそれぞれが原因となって生じた確率P(G_1|D),P(G_2|D)であり、発熱Dという結果を条件付けた、原因が生じる確率である。このままだと原因と結果の時系列が逆になっているため、事前確率のP(G_1),P(G_2)および条件付き確率のP(D|G_1),P(D|G_2)から求める。事象Dを与えたときの条件付き確率は、

 {
\begin{align}
P(G_i|D) = \frac{P(G_i \cap D)}{P(D)}, \quad i = 1,2  \tag{3}
\end{align}
}

分子には(1)の関係を、分母には(2)を代入すると、ベイズの定理が得られる。

 {
\begin{align}
P(G_i|D) = \frac{P(G_i)P(D|G_i)}{P(G_1)P(D|G_1)+P(G_2)P(D|G_2)}, \quad i = 1,2  \tag{4}
\end{align}
}

条件付き確率P(G_i|D)は、結果Dが生じた後に得られる確率であるため事後確率と呼ばれる。ベイズの定理は、事後確率を、事前確率と原因で条件付けた結果が生じる確率(条件付き確率)で表すもの。原因が複数ある場合は以下のように定式化される。

 {
\begin{align}
P(G_i|D) &= \frac{P(G_1 \cap D)}{P(D)} \\
&= \frac{P(G_i)P(D|G_i)}{\sum_{j=1}^{r} P(G_j)P(D|G_j)}, \quad i = 1,2, \cdots, r   \tag{5}
\end{align}
}

正規分布ベイズ判別

個体を特徴づけるp個の確率変数をX_1,X_2\cdots,X_pとし、2つの群G_1,G_2からそれぞれn個のp次元データが観測されたとする。

 {
\begin{align}
G_1 : \boldsymbol{x_1}^{(1)},  \boldsymbol{x_2}^{(1)}, \cdots,  \boldsymbol{x_{n1}}^{(1)},  \quad G_2 :  \boldsymbol{x_1}^{(2)},  \boldsymbol{x_2}^{(2)}, \cdots,  \boldsymbol{x_{n2}}^{(2)} \tag{6}
\end{align}
}

学習データとは別に新たにp次元のデータが観測されたとき、それが各群に属する事後確率を元に、いずれの群に属するかを判別する。そのためベイズの定理を適用し、確率分布モデルを用いて事後確率を表現し、線形および2次判別方法を構成する。
確率分布モデルを通して判別方式を構築するため、群G_1,G_2から採られた学習データの分布はp次元正規分布に従うとする。

 {
\begin{align}
&G_1 : N_p( \boldsymbol{μ_1},Σ_1) \quad \sim \quad \boldsymbol{x_1}^{(1)},  \boldsymbol{x_2}^{(1)}, \cdots,  \boldsymbol{x_{n1}}^{(1)},  \\
&G_2 : N_p( \boldsymbol{μ_2},Σ_2) \quad \sim \quad \boldsymbol{x_1}^{(2)},  \boldsymbol{x_2}^{(2)}, \cdots,  \boldsymbol{x_{n2}}^{(2)} \tag{7}
\end{align}
}


確率モデルを導入することであるデータ \boldsymbol{x}が群G_i(i=1,2)に属すると仮定したとき、 \boldsymbol{x}の各群における相対的な出現度合い(もっともらしさ)を多次元正規分布確率密度関数f(\boldsymbol{x}| \boldsymbol{μ_i}),Σ_iで表せる。 \boldsymbol{x}の条件付き確率や尤度と表現することもできる。実際に出現度合いを数値化するためには(7)の密度関数に含まれるパラメータ(\boldsymbol{μ_i},Σ_i)を推定する必要がある。\boldsymbol{μ_i},Σ_i最尤推定量を、それぞれ観察された標本平均ベクトルと標本分散共分散行列によって求める。

 {
\begin{align}
\bar{\boldsymbol{x_i}} = \frac{1}{n_i} \sum_{j=1}^{n_i} \boldsymbol{x_j}^{(i)}, \quad S_i = \frac{1}{n_i} \sum_{j=1}^{n_i}( \boldsymbol{x_j}^{(i)}-\bar{\boldsymbol{x_i}} )( \boldsymbol{x_j}^{(i)}-\bar{\boldsymbol{x_i}})^\top \quad i = 1,2 \tag{8}
\end{align}
}

これをp次元正規分布の密度関数に代入する。

 {
\begin{align}
f(\boldsymbol{x}|\bar{\boldsymbol{x_i}},S_i) = \frac{1}{(2π)^{p/2}|S_i|^{1/2}}
exp \left\{ -\frac{1}{2}(\boldsymbol{x}-\bar{\boldsymbol{x_i}})^\top S_i^{-1}(\boldsymbol{x}-\bar{\boldsymbol{x_i}}) \right\}
\\ \quad i = 1,2 \tag{9}
\end{align}
}

この密度関数を用いて、ベイズの定理を適用し判別方式を構築する。

判別関数

ベイズの定理を使って判別関数を構築するため、判別したデータ\boldsymbol{x}を結果、2つの群G_1,G_2を原因とする。データ\boldsymbol{x}を観測したときの事後確率P(G_i|D)=P(G_i|\boldsymbol{x})(i=1,2)を求め、事後確率の大きい方の群にデータ\boldsymbol{x}は属すると考える。これを事後確率の比に基づくベイズ判別という。

 {
\begin{align}
\frac{P(G_1|\boldsymbol{x})}{P(G_2|\boldsymbol{x})} 
\begin{cases}
        {\geq 1 \quad \rightarrow \quad \boldsymbol{x} \in G_1}\\
        {< 1 \quad \rightarrow  \quad \boldsymbol{x} \in G_2}
    \end{cases}
\tag{10}
\end{align}
}

両辺の対数をとって次のようにも表せる。

 {
\begin{align}
\log 
\frac{P(G_1|\boldsymbol{x})}{P(G_2|\boldsymbol{x})} 
\begin{cases}
        {\geq 0 \quad \rightarrow \quad \boldsymbol{x} \in G_1}\\
        {< 0 \quad \rightarrow  \quad \boldsymbol{x} \in G_2}
    \end{cases}
\tag{11}
\end{align}
}

ベイズ判別法の構成に必要な事後確率は次のように求める。

 {
\begin{align}
P(G_i|\boldsymbol{x}) = 
\frac{P(G_i)P(\boldsymbol{x}|G_i)}{P(G_1)P(\boldsymbol{x}|G_1)+P(G_2)P(\boldsymbol{x}|G_2)} \quad i = 1,2 \tag{12}
\end{align}
}

P(G_i|\boldsymbol{x}) は観測されたデータがG_iに属すると仮定したときの相対的な出現確率を表し、これを学習データを用いて推定したp次元正規分布確率密度関数を用いて推定する。

f:id:good_na_life:20210617221301p:plain
図2

 {
\begin{align}
P(\boldsymbol{x}|G_i) = 
\frac{f(\boldsymbol{x}|\bar{\boldsymbol{x_i}},S_i)}
{f(\boldsymbol{x}|\bar{\boldsymbol{x_1}},S_1)+f(\boldsymbol{x}|\bar{\boldsymbol{x_2}},S_2)} \quad i = 1,2 
 \tag{13}
\end{align}
}


これを用いると(10)、(11)の対数の中身は次のように書き換えられる。

 {
\begin{align}
\frac{P(G_1|\boldsymbol{x})}{P(G_2|\boldsymbol{x})} &= 
\frac{P(G_1)P(\boldsymbol{x}|G_1)}{P(G_2)P(\boldsymbol{x}|G_2)} \\
&= \frac{P(G_1)f(\boldsymbol{x}|\bar{\boldsymbol{x_1}},S_1)}{P(G_2)f(\boldsymbol{x}|\bar{\boldsymbol{x_1}},S_2)}
 \tag{14}
\end{align}
}

データが各群に属する事前確率は等しいと仮定する*1

 {
\begin{align}
P(G_1) = P(G_2) =\frac{1}{2} \tag{15}
\end{align}
}

(11)は、推定されたp次元正規分布の密度関数の比によるベイズ判別法を構成する。

 {
\begin{align} h(\boldsymbol{x}) =
\log
\frac{f(\boldsymbol{x}|\bar{\boldsymbol{x_1}},S_1)}{f(\boldsymbol{x}|\bar{\boldsymbol{x_2}},S_2)}
\begin{cases}
        {\geq 0 \quad \rightarrow \quad \boldsymbol{x} \in G_1}\\
        {< 0 \quad \rightarrow  \quad \boldsymbol{x} \in G_2}
    \end{cases}
\tag{16}
\end{align}
}

(16)の密度関数を詳しく書くと、


 {
\begin{align} 
h(\boldsymbol{x}) &=\log f(\boldsymbol{x}|\bar{\boldsymbol{x_1}},S_1) - \log f(\boldsymbol{x}|\bar{\boldsymbol{x_2}},S_2) \\
&= \frac{1}{2} \left\{ (\boldsymbol{x} - \bar{\boldsymbol{x_2}})^\top S_2^{-1} (\boldsymbol{x} - \bar{\boldsymbol{x_2}}) -
(\boldsymbol{x} - \bar{\boldsymbol{x_1}})^\top S_1^{-1} (\boldsymbol{x} - \bar{\boldsymbol{x_1}}) - \log(|S_1|/|S_2|) \right\}
\tag{17}
\end{align}
}

となり、確率変数の2次式となることから2次判別関数と呼ばれる。\log (|S_1|/|S_2|)=0なら多次元のマハラノビス距離を使った正負の判別と一致する。またS=S_1=S_2のとき、\log (|S_1|/|S_2|) = \log (|S|/|S|) = \log 1 = 0でマハラノビス距離による判別と一致する。さらにフィッシャーの線形判別関数の正負とも一致する。

*1:各群のデータ数n_1,n_2に対してP(G_i)=n_i/(n_1+n_2)と推定することもできる