PRML　演習問題  4.11（標準）　解答

## はじめに
本記事は, 機械学習の教科書の決定版ともいえる, **Christopher Bishop先生**による[**『Pattern Recognition and Machine Learning （パターン認識と機械学習）』**](https://www.microsoft.com/en-us/research/people/cmbishop/prml-book/), 通称**PRML**の演習問題のうち, 私が解いた問題の解答を記したものです. これは, 私の所属する[生物測定学研究室](https://www.ut-biomet.org/)の輪読会で**PRML**を取り扱っており, その勉強の一環として演習問題を解いたときのものです. なお, 他の演習問題の解答例に関する記事については, [PRML　演習問題　解答集　まとめ](https://qiita.com/Lab_of_Biomet/items/15e38ca34fafa8176d89)をご覧ください.


## 問題
> 各々が $L$ の離散状態を取ることのできる $M$ 個の要素を持つ特徴ベクトル $\boldsymbol { \phi }$ に対する $K$ クラスの分類問題を考える. $1$-of-$L$ 符号化法によって成分の値は表現されるとする. さらに, クラス $C _ { k }$ に対し $\boldsymbol { \phi }$ の $M$ 個の成分が独立であり, クラスの条件付き確率密度は特徴ベクトルの要素に分解できると仮定する. クラスの事後確率を記述しているソフトマックス関数の引数に現れる 
$$
\begin {align*}
a _ { k } = \ln p \left ( \mathbf { x } ~ | ~ \mathcal { C } _ { k } \right) p \left( \mathcal { C } _ { k } \right )
\tag {4.63}
\end{align*}
$$
によって与えられる量 $a _ { k }$ が $\boldsymbol { \phi }$ の成分の線形関数であることを示せ. これが, $8.2.2$ 節で議論されるナイープベイズモデルの一例であることに注意せよ．

## 解答の指針
教科書本文の $4.2.3$ 節では, 入力が $2$ 値の離散変数 $x _ { i } \in \left \\{ 0, 1 \right \\}$ である場合についての議論を行いました （日本語版: p.201, 英語版: p.202）. この演習問題では, その議論を $L$ の離散状態を取ることのできる変数に対する分類問題に拡張してやればいいですね.


## 証明
問題文にある通り, クラス $C _ { k }$ に対し $\boldsymbol { \phi }$ の $M$ 個の成分が独立であると仮定するので, 

```math
\begin {align*}
p \left( \boldsymbol { \phi } ~ | ~ \mathcal { C } _ { k } \right) = 
\prod _ { m = 1 } ^ { M } p \left( \boldsymbol { \phi } _　{ m } ~ | ~ \mathcal { C } _ { k } \right)
\tag{4.11.1}
\end{align*}
```

なお, $\boldsymbol { \phi } _ { m }$ は, 特徴ベクトル $\boldsymbol { \phi }$ の $m$ 番目の要素で, $1$-of-$L$ 符号化法によって表現される, 長さ $L$ のベクトルとします.
$p \left( \boldsymbol { \phi } _　{ m } ~ | ~ \mathcal { C } _ { k } \right)$ に関しては, 

```math
\begin {align*}
p \left( \mathbf { x } ~ | ~ \mathcal { C } _ { k } \right) = \prod _ { i = 1 } ^ { D } \mu _ { k i } ^ { x _ { i } } \left( 1 - \mu _ { k i } \right) ^ { 1 - x _ { i } }
\tag{4.81}
\end{align*}
```
の右辺の各特徴に関する部分を, $L$ 個の離散値をとりうる変数に拡張することで,

```math
\begin {align*}
p \left( \boldsymbol { \phi } _ { m } ~ | ~ \mathcal { C } _ { k } \right) = \prod _ { l = 1 } ^ { L } \mu _ { k m l } ^ { \phi _ { m l } } 
\tag{4.11.2}
\end{align*}
```
を得ることができます. なお, $\mu _ { k m l }$ は, $\boldsymbol { \phi }$ の多項モデルのパラメータで, $\phi _ { m l }$ は $\boldsymbol { \phi } _ { m }$ の $l$ 番目の要素を表します.

したがって, $(4.11.1)$, $(4.11.2)$ 式を $(4.63)$ 式に代入してやれば,

```math
\begin {align*}
a _ { k } & = \ln p \left( \boldsymbol { \phi } ~ | ~ \mathcal { C } _ { k } \right) p \left ( \mathcal { C } _ { k } \right )\\
& = \ln p \left ( \mathcal { C } _ { k } \right ) + \sum _ { m = 1 } ^ { M } \ln p \left( \boldsymbol { \phi } _　{ m } ~ | ~ \mathcal { C } _ { k } \right) \\
& = \ln p \left ( \mathcal { C } _ { k } \right ) + \sum _ { m = 1 } ^ { M }  \sum _ { l = 1 } ^ { L } { \phi _ { m l } }  \ln \mu _ { k m l }
\tag{4.11.3}
\end{align*}
```

と変形でき, 確かに $a _ { k }$ が $\boldsymbol { \phi }$ の成分の線形関数として表されていることがわかります.


## ナイーブベイズとの関係
### ナイーブベイズとは？
ナイーブベイズ (Naive Bayes) とは, クラス分類をおこなう際に用いられる, 機械学習の学習器の1つです.
一般に, 入力が与えられたときのクラスの事後確率

```math
\begin {align*}
p \left( \mathcal { C } _ { k } ~ | ~ \mathbf { x } \right) 
& = \frac { p \left( \mathbf { x } ~ | ~ \mathcal { C } _ { k } \right) p \left( \mathcal { C } _ { k } \right) } { \sum _ { j } p \left( \mathbf { x } ~ | ~ \mathcal { C } _ { j } \right) p \left( \mathcal { C } _ { j } \right) } \\ 
& = \frac { \exp \left( a _ { k } \right) } { \sum _ { j } \exp \left( a _ { j } \right) }
\tag{4.62}
\end{align*}
```

が最大となるような $\mathcal { C } _ { k } $ にデータ点を分類するような分類器をベイズ分類器とよびます.
ナイーブベイズは, ベイズ分類器の中でも, 入力変数 $\mathbf { x }$ の各特徴量が独立であることを仮定するモデルで, すなわち

```math
\begin {align*}
p \left( \mathbf { x } ~ | ~ \mathcal { C } _ { k } \right) = 
\prod _ { m = 1 } ^ { M } p \left( x _　{ m } ~ | ~ \mathcal { C } _ { k } \right)
\tag{4.11.4}
\end{align*}
```
を仮定します.
このように, ナイーブベイズ分類器は非常に単純なモデルで分類を行うため, 「単純ベイズ分類器」などとよばれることもありますが, 興味深いことに, $(4.11.4)$ 式のような強い仮定が成り立たないような場合においても, ナイーブベイズが良い結果を示す例が多く報告されています.

### 演習問題 4.11 と ナイーブベイズ の関係
もうお分かりかと思いますが, $(4.11.1)$ 式の仮定は, ナイーブベイズの仮定 $(4.11.4)$ と全く等価ですね. したがって, $a _ { k }$ をもとにクラス分類を行うことは, ナイーブベイズの一例である, と言えます.
ここで興味深いのは, $(4.62)$ 式のようなソフトマックス関数によるクラス分類では, 結果的に入力に対する非線形な変換を考えることが多いですが, ナイーブベイズの仮定を加える場合については, $a _ { k }$ は入力の線形和として表され, 確率として出力するのに非線形な変換を加える, という2段階のステップに分けて考えられることですね.