SSブログ

最小2乗法 - その7 [最小2乗法のイメージ]

しばらく間があいてしまって何をやってたのかまた例によって忘れそうになる。前回までは行列GがQR分解できたとしたら、という話だった。ここからはどうやってQR分解するか、という話に入る。

7  QR分解の実行

QR分解にはいろいろなやり方があって、やりかたによって見た目異なる結果が得られることがあるが、列ベクトルの相対関係が変わらないと言う意味では同じである。

考え方としては、もとのm ×n行列Gの列ベクトルを回転させたり鏡に映したり座標軸を入れ替えたりして、上三角行列にすればいい。上三角行列Rって
1221eq51.png
こんなだから、幾何学的なイメージを考えてみる。列ベクトルの空間Rmの軸にそった単位ベクトルをeiとする。最初の列ベクトルは回転させたり鏡に映したり座標軸を入れ替えたりして、e0の向きにあわせる、ということになる。その次のベクトルは最初の列ベクトルを変えずにこんどはe0e1がはる2次元平面内にはいるようにする。その次はe0e1e2がはる3次元超平面内に入るようにする。これを最後の列ベクトルが残るところまでやればいい。

めんどくさそうだけど、3次元で考えれば簡単にわかる。
1221eq52.png
こんな3 ×3の行列Geを考えてみる。なんだか恣意的な数字が並んだ行列だけど、これはなんでもいい。後の操作がわかりやすいように選んだのと、列ベクトルが適度に独立で長さが1になるようにした。この列ベクトルを絵に描いてみたのが図-10である。
1221fig10.png
立体的に見たいので、公差法の裸眼立体視で描いた。列ベクトルの順に緑青赤である。

これをQR分解しよう。まず第1例ベクトルのe3成分が0になるように、つまりe1-e2平面内に入るようにe2を軸に(つまりe1-e3平面内で)回転させる。とりあえず今はベクトルの成分からヒューリスティックにπ/6だけ向かって右回りに(図中の矢印のように)回転させる。そうすると図-11のようになる。
1221fig11.png
こうすると行列は
1221eq53.png
となって、第1列のe3要素は0になる。

さらに今度は図-12のようにe3を軸に(つまりe1-e2平面内で)−π/6だけ回転させると、第1列ベクトルの方向はe1と一致して
1221fig12.png
1221eq54.png
となる。

また、さらにこんどは図-13のように2番目の列ベクトルのe3成分を0にするためにe1を軸に(つまりe2-e3平面内で)−π/3だけ回転させると、
1221fig13.png
1221eq55.png
となって、めでたく上三角行列になった。回転操作を整理するために、ei-ej平面内でθだけ回転させる行列をΦi,j(θ)とすると、
1221eq56.png
だから、
1221eq57.png
と分解できたと言うことになる。

これがいわゆるGivens回転によるQR分解のエッセンスである。
Givens 回転は、ベクトル幾何なんかで使う回転の行列を多次元に拡張したもので、n次元のGivens 回転の行列Φi,j(θ)は
1221eq58.png
というようなものである(都合によりWikipediaと符号が違うが、回転方向が逆なだけで同じである)。3次元の場合でもいちいち回転軸をいうついでに○○平面内で、と断っていたのは、3次元以上の場合には回転軸の指定よりも、「どの面内で」回転させるかを指定した方が簡単(n次元での軸を指定しようとするとn−2本の軸を指定する必要がある)で、Givens回転はその拡張と見やすいと思ったからである。

i,j面内のGivens回転によって、どの列ベクトルもi番目要素とj番目要素以外は変わらないことは実際に計算してみればわかる。列ベクトルej番目の要素ejを0にするようなGivens回転Φi,j(θ)は
1221eq59.png
となるようなθを持っていればいい(複号は、お互い異なる符号を持っていればいいと言う意味)。これも実際にかけ算してみればすぐわかる。

このGivens回転を使って、まず第1列の第1要素e1,1以外を全部0にできる。次に第2列の第3要素までを同じように0にできるが、第2列の第2要素e2,2を0にしようとすると、第1列の第2要素e1,2が0でなくなってしまうのでこれはできない。これをずっと繰り返せば上三角行列になる、と言う次第である。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立12/21献立12/22 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。