ベイズ統計予測の概論 (Bayes Approach)

機械学習は基本的にベイズ理論をベースにしているが、ベイズではない(それ以前の)方法は「古典的確率(classical probability)」あるいは「頻度主義的(frequentist)」な確率解釈と呼ぶ。

  • 注:
    • 頻度主義的統計やベイズ主義的統計という分類については長く議論があるようです。http://norimune.net/708 やそのページなどの引用参照
    • 前項の記事を読んだ感想: 数学的には通底するものがあり、矛盾があるわけではないが、分析対象のちがいによる結果の用い方(見方、考え方)には違いがあるし、データの分析の仕方には見方の影響があると思います。(分類に批判的なのは統計理論や数学者だというのはそのようなことに関連しているでしょう。)

条件付確率

ある事象(データ)Xが与えられたもとでのYが起こる確率$p(Y|X)$は $$ p(Y|X) = \frac{p(X|Y)p(Y)}{p(X)} $$ で与えられる。これをベイズの定理という。ただ基本はこれであるといっても、なんでそれがありがたいの?ということになるだろう。これで済まさないでほしい。

ちなみに、当たり前のような上記の分母は、Yが取りうるすべての値について確率の和をとったら1になるようにするために書いておく: $$ \sum_Y p(Y|X) = \frac{1}{p(X)}\sum_Y p(X|Y)p(Y) = 1 \quad {つまり}\quad p(X) = \sum_Y p(X|Y)p(Y) $$

あるデータ$X$が得られる前の$Y$の確率$p(Y)$を事前確率、$X$が得られたもとでの$Y$の確率$p(Y|X)$を事後確率と呼ぶ。

予測の場合、$X$は観測データ$\mathcal{D}$、$Y$はフィッティング関数の係数${\bf w}$であり、 $$ p({\bf w}| \mathcal{D}) = \frac{p(\mathcal{D}|{\bf w})p({\bf w})}{p(\mathcal{D})} $$ のような意味合いになる。

ベイズ曲線フィッティング

訓練データとして、説明変数${\bf x}=\{x_1, x_2, \dots, x_N\}$に対する目的変数の値${\bf t}=\{t_1,t_2, \cdots, t_n\}$が与えられたとき、テストデータの値$x$に対する目的変数の値$t$を推定することを行いたい。

$x$とtの関係としてはたとえばべき関数を想定すると $$ t = y(x, {\bf w}) = w_0 + w_1 x + w_2 x^2 + \cdots + w_M x^M = \sum_{j=0}^{M} w_j x^j $$ のようにかける。係数をベクトル${\bf w}^T = (w_0, w_1, \cdots, w_M)$、各べきを${\bf \phi}^T = (1, x, x^2, \cdots, x^M)$のようにあらわすと、$t={\bf w}^T{\bf \phi}(x)$のよう書くことができる。以後このような表記をする。

最小2乗法による${\bf w}$の決定は、ここでいう「古典的確率解釈」に対応する。

ベイズ統計でも、最も尤もらしい${\bf w}$を求めることになるが、その値の周りにべつの${\bf w}$の可能性をも考えることになる。

学習データが与えらえたもとでの${\bf w}$の確率分布を$p({\bf w} | {\bf x}, {\bf t})$と書く。このとき、テストデータ$x$に対する予測値の確率分布は $$ p(t|x, {\bf x},{\bf t}) = \int p(t|x, {\bf w}) p ({\bf w}| {\bf x}, {\bf t}) d{\bf w} $$ で与えられる。

詳細はあとにするが(かなりの準備が必要でPRMLの第3章にある)、最も尤もらしい値の周りの分布がガウス分布であると仮定すると、結果もガウス分布になる。

$x$値に対する目的変数の値の分布イメージ図(PRMLの図1.16): この図では最尤推定値が赤の曲線(最小2乗法と同じ)で、確からしさを表す意味で、その周辺のばらつきを標準偏差$\sigma$で表している。ベイズ的アプローチでは、この$\sigma$が場所$x$によって変わることになる。

PRML第3章で導かれる結果は、平均値が$m$、分散が$s^2$であるガウス分布を$\mathcal{N}(t|m, s^2)$で表すことにすると

$$ p(t|x, {\bf x},{\bf t}) = \mathcal{N}(t| m(x), s^2(x)) $$

ただし、

$$ m(x) = \beta \phi(x)^T {\bf S} \sum_{n=1}^N \phi (x_n) t_n $$$$ s^2(x) = \beta^{-1} + \phi (x)^T {\bf S}\phi (x) $$

行列${\bf S}$は $$ {\bf S}^{-1} = \alpha {\bf I} + \beta \sum_{n=1}^N \phi(x_n)\phi(x_n)^T $$ である。

これを実際に行ってみるプログラムと結果が

https://qiita.com/ctgk/items/555802600638f41b40c5

にあるのでみてほしい。ピンク色の領域は尤もらしい値から標準偏差の範囲である。データが多い$x$の値のところでは幅が小さくなっており、値がないところは広がっていることに注意してほしい。なお尤もらしい値(ベイズでは最尤解)は、この場合は、最小2乗法の結果と一致する。

予測の中心(最も確率が高いところ)は各$x$での平均値$m(x)$で、幅(標準偏差)は$s(x)$で与えられる。上の図の青線の分布が、平均値$m(x)$、分散$s^2(x)$のガウス分布になっており、分散が場所$x$によって変化していることがわかる。

PRML_chap1example

このように、最も確からしい曲線を引くだけではなく、その確からしさもデータから推定する方法をベイズ推論(ベイズ統計)と呼ぶ。

ここでは$M$次べき関数を用いて(これをモデルの選択という)フィッティングを行ったが、モデルの選択自体もデータから推定するいろいろな方法が開発されている。(図では$M=9$。)

さらに、いつも分布がガウス分布とは限らない。2項分布やポアソン分布と考えるべき対象もある。それも使う人の選択にゆだねられる。

また、フィッティング関数を求めるのではなく、確からしい曲線の範囲(上のピンクの帯)を求める方法もある。その一つとしてカーネル法というのがあり、そのなかでも有力な方法がSVRである。

RRMLテキストの3章では次のような図が載っている。データが増えるにしたがって推定の範囲が狭くなっていく様子がわかる。

参考

説明の参考にしているのは、上述のqiitaのWebページも含めて「パターン認識と機械学習」(C.M.ビショップ、丸善)である。

補足等の情報は http://ibisforest.org/index.php?PRML にあり、そこには原著のページへのリンクもある。(原著ページからは画像がダウンロードできる。上の図はそれを使わせてもらった。)

ベイズ線形回帰

PRMLの第3章「線形回帰モデル」にある図を使ってベイズ統計を線形回帰に適用する事例を説明する。

$y=ax + b$, $a=0.5$, $b=-0.3$の周りに標準偏差$0.2$でランダムに発生させたデータに対し、線形回帰式を $$ y(x,{\bf w}) = w_0 + w_1 x $$ として${\bf w} = (w_0, w_1)^T$をベイズ回帰により推定する。

最初は何もわからないので、初期の事前分布は$w_0=w_1=0$を中心とするガウス分布としておく。(下の図の1段目の真ん中の図)

2段目右図の〇の1点が観測されたとする。その時の尤度(そのデータを生じさせた元の$(w_0, w_1)$可能性)は2段目左のようになる。与えられたデータが$(x_1,y_1)=(0.9, -0.1)$だとすると$0.9w_1 + w_0 =-0.1$、つまり$w_1 = -(1/0.9) w_0 + 1/9.$のような直線の周りのガウス分布となる。それを描いたのが2段目左の図である。

このときの事後確率は、事前確率(上の2列目)と尤度(左図)の掛け算で与えられ、2列目の図のようになる。右図は、その事後確率に基づいていくつかの直線を発生させたものである。

2つ目のデータが3段目の右図の〇のように得られたとき、その尤度は3段目左図のようになり、その前の確率に尤度をかけて事後確率を得る。

これを繰り返すと事後確率は$(0.5,-0.3)$を中心とする狭いガウス分布に収斂していく。

In [ ]: