ベクトルに対する重回帰分析(各次元独立な時)
何かとあると便利な重回帰分析.
今日はそれを実装してみたいと思います.
matlab とか R とか使えばいいんじゃないのとか言わない.
重回帰分析とは
重回帰分析って,複数の入力から1つの出力を推定するのものですよね.
式で書くと以下のような感じ.
ここで,は出力,が入力,が重み,がバイアスです.
重みとバイアスさえ上手く学習できれば,入力から出力を推定し放題 (∩´∀`)∩ワーイ
で,どない学習したらええねん!
( ゚Д゚)⊃ 最小二乗法
の説明はウィキペディア先生に任せるとして, がベクトルの場合を考えたいと思います!
式で書くとこんな感じ.
小文字はベクトル,大文字は行列です.
ここで,
,
,
Aは,D×Nの行列,bはD次元のベクトルとなります. すなわち,N次元のベクトルxからD次元のベクトルyへの行列Aとベクトルbを用いて,回帰するという意味の式になります.
それでは,観測データから行列Aとベクトルbを求めていきます.
今,入力データとそれに対応する出力データがそれぞれM個観測されたとします.
その観測されたデータを,入力,出力それぞれにおいて横に並べて,行列にすると・・・
となります.
この式を元に,
を最小にするAをもめてやります.
ただし,このままでは計算し難いので,Aとbを結合し,
としてやります.
それに伴い,入力データの各サンプルを
のような形式にした上で結合し,行列X'を生成します.
そうすることで,
と簡略して表すことができます.
後は, のA'に対する微分が=0 になるA'を求めてあげればいい.
結果として,以下の式を実装すれば,重回帰分析が行えます.