ベイズ線形回帰
動機
MCMCで計算をすると,カルマンフィルタを実装したときは実感できたベイズ更新の部分がよくわからないという僕の気持ちの問題がありました。
そこで,須山さんの「ベイズ推論による機械学習入門」
機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)
- 作者: 須山敦志,杉山将
- 出版社/メーカー: 講談社
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
の3章で,学習と推論を解析的に導出していたため,自分で計算・実装を行い理解を深めたいというのがこの記事を書く動機です。
線形回帰の式
1次関数での線形回帰
想像しやすいように,1次関数での線形回帰を行います。式はです。
はノイズで,回帰分析の事後分布として求めたい値は,となります。
ノイズは簡単のために正規分布に従うと仮定して,
と定義します。テキストに習っては既知であるとします。
ある一つの観測値とある一つの入力値が得られたときに,事後分布が導出できれば,学習と予測ができることになります。
まず,簡単のために,bは既知であるとして,aの事後分布を解析的に求めてみます。
ベイズの定理より,求めたい事後分布は,
と書けます。
このときに,事前分布は正規分布していると仮定し
と書けるとします。ここで,は事前分布の平均と分散で固定値で与えるハイパーパラメータです。
さて,事前分布と入力値が与えられた元で,観測値が得られる度合いを表す尤度を考えます。
先程,ノイズが正規分布に従うとしたため,
と書くことができます。ここで,この正規分布を真面目に書いてみると
となります。
今はの事後分布だけが気になっているので,計算を簡単にするために事前分布,尤度をそれぞれの対数()を取って,について整理していきます。
事前分布
第一項はに関係のない項なので,第二項を展開して,に関する項を昇順に並べていきます。
(1)
となります。
尤度
次に,先程定義した尤度も同様に計算することで,
(2)
と書けます。
事前分布と尤度の積
ベイズの定理の分子であるは事前分布と尤度の積ですので,対数を取ったあとは和になります。
なので,(1)と(2)の和を計算して,について昇順に並べることで,事後分布のについてはどのような形になるのか想像することができます。和を取ると
(3)
と書けます。
この形は事前分布や尤度で仮定した正規分布と全く同じ形になっていることから,事後分布も正規分布であると考えることができます。*1
分母は,周辺尤度を求めれば,正規化されていると思います。
このあたりの数式は天下り的に計算はしませんが,任意の事後分布の正規化の数式などは例えば,
ノンパラメトリックベイズ 点過程と統計的機械学習の数理 (機械学習プロフェッショナルシリーズ)
- 作者: 佐藤一誠
- 出版社/メーカー: 講談社
- 発売日: 2016/04/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
こちらの本などに書かれているように思えます。
さて,事後分布も正規分布であるとして,一点を観測したあとの傾きの事後分布は
(4)
として計算できます。*2
今,観測点が一点だけの場合を考えていましたが,複数観測する場合には,式(3)は更に一般化することができて,
(3)
と,書けます。このとき,(4)は
(5)
となりますので,この式を使うことで,一点一点を更新していく様子がみることができます。
実装
実装コードはこちらにあります。
傾き , 切片 , ノイズが の正規分布に従って生成されるとして,データをランダムに200点ほど作成します。
図1のような,データが得られます。
データが得られたので,上の計算で行ったように,切片aをベイズ線形回帰で計算してみます。
事前分布は,中心ピークを4.5,標準偏差 の正規分布を仮定します。
この仮定の元,上記の計算を実行して,事後分布が毎回どのような形状になるのか計算してみます。
結果は次の動画で,
一点ごとの更新となりますので,徐々に予測の幅が狭くなり,値が真値である5に収束していく様子が見えます。
これは僕が当初見たかったベイズ線形回帰におけるベイズ更新の様子になります。
現在の仮定では事前分布の幅が広く,ピークも真値に近いので,パラメータを変えて実験を行ってみました。
事前分布:ピーク3, 標準偏差 , 観測データ点数100点
事前分布:ピーク3, 標準偏差 , 観測データ点数100点
標準偏差が小さいときには,事前分布に引っ張られて真の値になかなかたどり着かない様子がこれらの動画から見ることができました。
事前分布,大事!