線形回帰
はじめに
多峰性の出力値をもつデータに対する線形回帰モデルを実装しました。ここで多峰性の出力値とは下図のようなデータのことを考えています。 緑のデータ点から青およびオレンジの実線で示された2種類の入出力の関係を見つけることが目的となります。
モデル
データ数およびクラスタ数をそれぞれNおよびKとします。入出力のデータセットおよび潜在変数をそれぞれ
とします。線形回帰モデルを用いるわけですから入出力{x_n, y_n}は次式のように表現します。
ここで、重みパラメータw_kと精度パラメータλ_kを導入しました。 今回のモデルではλ_kはハイパーパラメータとして扱い、w_kは次のようなガウス分布で表現します。
ここで、m_kおよびΣ_kはハイパーパラメータとします。
続いて、潜在変数s_n(n=1,...,N)はカテゴリ分布に従うとします。
ここで、パラメータπを導入しました。πに対しては次のディリクレ分布を与えます。
ここで、αはハイパーパラメータとします。
以上より、今回のモデルは次式のように表すことができます。
変分推論
今回は、以上のモデルに対して変分推論によるアルゴリズムの定式化を行いました。 変分推論では変数およびパラメータの事後分布を次のように近似します。
変数およびパラメータに用意した事前分布は共役な分布であるため、事後分布もそれぞれ同様の分布をもつことになります。
潜在変数s_nの事後分布q(s_n)は
となります。パラメータw_kおよびπの事後分布はそれぞれ
となります。
最後に、各変数およびパラメータの期待値は次のように求まります。
ここで、ψはディガンマ関数を表します。
実験
下図に示したような20個のデータ点(緑のクロス)を用意しました。真の関数も青およびオレンジの実線で示しています。
今回は入力としてx = (1, x, x2)'を用いました。 学習で得られたパラメータの事後分布から求めた予測分布は下図のようになりました。 青およびオレンジの点線は各カテゴリの関数の期待値、薄いグレーは(標準偏差)x2の範囲を表しています。
ちなみに、上の予測分布は次式から計算しました。
さらに、得られたパラメータの事後分布から各カテゴリの予測分布を求めました。下図のようになりました。
上の予測分布は次式から計算しました。