SSブログ

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

ずいぶん間があいてしまった。前回までにGivens回転を使ったQR分解をやったので、もうあとほんの少しだけ残っている。完全に忘れないうちにやってしまおう。

追記:(2/23)
符号間違ってた。修正。

3.3  Householder変換

もうずいぶん前になるけど、前回やったGivens回転によるQR分解は、回転だけを使って実行した。ある平面内での回転操作は直交行列になり、その積も直交行列なので、回転を使って上三角行列にできればそれはQR分解したことになる。

直交行列には回転以外にも鏡映という操作もある(操作そのものとしては独立ではないけど。例えば鏡映の組み合わせで任意の回転は表現できることは直感的にもわかる。ついでに言えば逆は成り立たない。つまり回転の組み合わせでは鏡映を表すことはできない)。もちろんこれを使ってもQR分解は可能である。この方法をHouseholder変換によるQR分解と言う。

Householder変換はHouseholder行列Hで表される。HWikipediaによると
0221eq60.png
であるという(転置の記号はこれまでのとあわせた)。ここでuは任意のベクトルで、Iは単位行列である。なんだかへんな形でこれだけではよくわからない。しかし、普通のベクトルxにこのHをかけてみると
0221eq61.png
となる。tux = u·xでスカラになるので、もうちょっと読みやすいように書きなおすと
0221eq62.png
で(大きなカッコの中はスカラ)、ここでu = u/||u||という規格化されたベクトルだとすると、書くまでもなく
0221eq63.png
となって、これは3次元の場合では、図-14に示すようにずっと昔やった反射の式-47と全く同じである。
0221fig14.png
n次元の場合はn−1次元超平面での反射、ということになる。全然イメージがわかなくなるけど。

つまりHouseholder行列をかけるということは(列)ベクトルを、法線がuを向いた面で反射させる、ということと同じ、つまり鏡映をとるということに等しい。これをベクトル間の演算ではなく、行列の形で書いたのが式-60のHouseholder行列である、ということがわかる。

3.4  Householder行列によるQR分解

このHouseholder行列を使ったQR分解は、さっきのGivens回転でネタバレのようなものだけど、簡単にやってみる。

一般の行列Gの第1列の第1要素以外を0にすることを考える。
0221eq64.png
Gの第1列ベクトルg1G′の第1列ベクトルg1に鏡映で変換できればいい。これは式-60を
0222eq65.png
とすればいいことは、もう図を書くのが面倒なのでやめるけど、3次元の場合のミラーによる反射を想像してみればすぐわかる。g1の第1要素以外は0にしたいのだから、
0221eq67.png
なので
0222eq68.png
と簡単になる。

よく考えればこれだけではなくもうひとつ
0222eq69.png
も、式-64の形になることがわかる。このときg11の符号がさっきとは逆になる。 とりあえずは好きなほうを選べばいいけど、式-60には||u||が分母にくるので、このノルムが大きくなるほうを選ぶのが数値的には安全である(g11と同符号を選べばいいが、なんども言うように数値的な安定性が悪化しないだけであって、改善されるわけではない)。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

献立02/22献立02/23 ブログトップ

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