ベイズ線形回帰の精度の検証
はじめに
PRMLでベイズ線形回帰の勉強をした。
普通の線形回帰だと複雑なパラメータを選ぶと過学習する
正則化項を入れるとパラメータの調整が大変・・・
そこでベイズ線形回帰!!
モデルを複雑にしても過学習しないらしい・・・
本当か??
そこで実験!!
実験条件
理想曲線(緑):sin関数、ノイズを加えてサンプリング
ベイズ線形回帰(赤):alpha=0.005、beta=10.0
線形回帰(青)
線形回帰+L2正則化:λ=0.001
基底関数は[1, x, x^2, x^3]と[1, x, x^2, …, x^20]の2パターン(M=3とM=20)
コードは下記にあげています。
https://github.com/kenchin110100/machine_learning/blob/master/sampleBAYES.py
結果
基底関数M=3
基底関数M=3だとどれもあまり違いは・・・
基底関数M=20
基底関数M=20にしてモデルを複雑にすると・・・
おお〜〜(正則化もなかなか・・・)
結論
確かに複雑なモデルに適用すると違いが瞭然!!
L2正則化だとパラメータを工夫しなければいけないことを考えれば、
ベイズさまさまですね。