2018年6月12日火曜日

正規方程式の導出と計算例

AA が正則なとき,Axb を最小にする x はただ一つであり,それは正規方程式:AAx=Ab を解くことで得られる。
前半は正規方程式を用いた最小二乗法の計算の具体例。後半は正規方程式の導出。

最小二乗法と正規方程式

  • x,b は縦ベクトル,A は行列です。 x はベクトル x の長さを表します。
  • A と b が与えられたとき,Axb を最小にするような x を求める問題は非常に重要です。→最小二乗法の行列表現(単回帰,多変数,多項式)
  • 連立方程式 Ax=b が解を持つときは嬉しいけども,解を持たない時にも諦めるのではなく,Ax が b に近くなるような x を探したいというモチベーションです。
  • 正規方程式は,Ax=b の両辺に左から A をかけただけなので覚えやすいです。

正規方程式を用いた計算例

例題

(2,3),(4,7),(9,11) というデータの組に対して最小二乗法を適用してもっともらしい直線を引け。

解答

求める直線の傾きを p,切片を q とおくと,以下のように行列表現できる:
目標:Axb を最小にする x=(pq) を求める。
ただし,A=(214191)b=(3711)
よって,答えは正規方程式を解くことにより,
x=(AA)1Ab=(14132113)
求める直線の方程式は y=1413x+2113

正規方程式の導出

考え方は非常に単純です。凸な二次関数なので微分して=0 とするだけです。ただし,計算は慣れていないとやや大変です(行列の基本的な演算や微分公式を用いる)。
(正規方程式の導出)
まず,目的関数の二乗 Axb2 を整理する:
Axb2=(Axb)(Axb)=(xAb)(Axb)=xAAx2xAb+bb
ただし,最後の変形で補足1を用いた。
これを x で微分する(各要素で偏微分する,つまり勾配ベクトルを求める→補足2)と,2AAx2Ab となる。よって,Axb が最小となる必要条件として,AAx=Ab が得られる。
特に,AA が正則なときは,x=(AA)1Ab が唯一の解であり,この x が最小値を与える。
補足1:bAx はスカラーなので,転置を取っても同じ。つまり,bAx=xAb
補足2:対称行列 A に関する二次形式 xAx の微分(勾配ベクトル)は 2Ax
線形関数 xAb の微分は Ab
(単純計算で簡単に証明できる)

0 件のコメント:

コメントを投稿