階層ベイズ法

正直なところ、参考にした書籍には数学的に丁寧な説明がなく、ふわっとした説明で式が示されただけで具体例の計算に突入という構成であったため、理解度は甚だ怪しい。自分で隙間を埋めるような式の導出を行ってみたが、盛大に間違っている可能性も否定できない。あしからず。

過分散

例として、学生のテスト結果(点数)から学生の能力を推定するケースを考える。母集団の学生が共通の能力を持つと仮定したモデルでその能力を推定すると、モデルから推定された分散と実際のデータから得られる分散が大きく乖離してしまう場合がある。この場合はそもそも学生全員が共通の能力を持つというモデルが誤っていて、実際には各学生には個性がありそれぞれの能力が異なっていたということである。このように分散が大きく乖離してしまうことを過分散という。

テストは10点満点とし、学生の能力を \(q\) とする。このとき点数 \(x\) 点を取る確率は次式で与えられる。

\[P(x) = _{10}C_x q^x(1-q)^{10-x}\]

能力 \(q\) が全学生に共通とモデル化したことが過分散の原因であった。 過分散を防ぐためには、各学生ごとに異なる能力 \(q_i\) を割り当てて、学生が持つ個性を織り込んだモデルを作る必要がある。これが階層ベイズ法の動機となる。

階層ベイズ法の骨子

ベイズの基本公式は次式であった。

\[\pi(\theta|D) = \frac{f(D|\theta)\pi(\theta)}{P(D)}\]

ここでは \(D\) として n 人の学生の得点データ \(x_1,\cdots,n_n\) を考えよう。

\[\pi(\theta|x_1,\cdots,x_n) = \frac{f(x_1,\cdots,x_n|\theta)\pi(\theta)}{P(x_1,\cdots,x_n)}\]

過分散が生じる原因は、学生の能力を単一の母数 \(\theta\) で規定したことにあった。学生の個性をモデルに織り込んで過分散を防ぐためには、各学生ごとに母数を「乱発」しなくてはならない。

母数を学生ごとに用意した場合は次式となる。

\[\pi(\theta_1,\cdots,\theta_n\mid x_1,\cdots,x_n) = \frac{1}{P(x_1,\cdots,x_n)} f(x_1,\cdots,x_n|\theta_1,\cdots,\theta_n)\pi(\theta_1, \cdots, \theta_n)\]

ここで、各学生が持つ能力は互いに独立であると考えられる。各母数 \(\theta_i\) が独立であるとすると、

\[\pi(\theta_i\mid x_i) = \frac{1}{P(x_i)}f(x_i\mid\theta_i)\pi(\theta_i)\]

として次式が成り立つ。

\[\begin{split}\pi(\theta_1,\cdots,\theta_n\mid x_1,\cdots,x_n) &= \prod_{i=1}^n \pi(\theta\mid x_i) \\ &= \prod_{i=1}^n \frac{1}{P(x_i)}f(x_i\mid\theta_i)\pi(\theta_i)\end{split}\]

次に、各母数 \(\theta_i\) が別のパラメータ \(\alpha\) を母数とする確率分布に従うとしよう。学生ごとに能力は異なるが、その能力の分布は共通の母数 \(\alpha\) によって規定されると考えるのである。これは母数の母数であるので、ハイパーパラメータと呼ばれる。

\[\pi(\theta_1,\cdots,\theta_n,\alpha\mid\cdots) = \prod_{i=1}^n \frac{1}{P(x_i)}f(x_i\mid\theta_i)\pi(\theta_i,\alpha)\]

(※ \(\alpha\)\(\theta_i\) の裏に隠れたパラメータであるため、尤度 \(f\) の中に直接は現れない)

\(\theta_i\)\(\alpha\) は独立ではないので、条件付き確率密度関数を用いた次式を考える必要がある。

\[\pi(\theta_i, \alpha) = \pi(\theta_i\mid\alpha)\pi(\alpha)\]

これを代入すると次式が得られる。

\[\pi(\theta_1,\cdots,\theta_n,\alpha\mid\cdots) = \prod_{i=1}^n \frac{1}{P(x_i)} f(x_i\mid\theta_i)\pi(\theta_i\mid\alpha)\pi(\alpha)\]

さらに、 \(\alpha\) の分布を規定するハイパーパラメータ \(\beta\) を階層的に考えることもできる。その場合には次式となる。

\[\pi(\theta_1,\cdots,\theta_n,\alpha,\beta|\cdots) = \prod_{i=1}^n \frac{1}{P(x_i)} f(x_i\mid\theta_i)\pi(\theta_i\mid\alpha)\pi(\alpha\mid\beta)\pi(\beta)\]

さて、個々の学生の能力 \(\theta_i\) そのものよりも、それらを規定するハイパーパラメータ \(\alpha, \beta\) のほうに関心がある。そこで \(\theta_i\) で積分して些末な変数を消してしまおう。これを経験ベイズ法と呼ぶ。

\[\begin{split}\pi_{\alpha\beta}(\alpha,\beta\mid\cdots) &= \int\cdots\int \pi(\theta_1,\cdots,\theta_n,\alpha,\beta|\cdots)d\theta_1\cdots d\theta_n \\ &= \prod_{i=1}^n \frac{1}{P(x_i)} \int f(x_i\mid\theta_i)\pi(\theta_i\mid\alpha)\pi(\alpha\mid\beta)\pi(\beta) d\theta_i\end{split}\]

この事後分布を最大化するような \(\alpha,\beta\) を推定値とする。