- 正方行列を適当に作るとき、個の成分を指定できる
- 自由度が
- 今、適当に作った正方行列の本の列ベクトルが、線形独立になっているものとするととQR分解できる
- は正規直交基底でありは上三角行列である
- という上三角行列は非0の成分の数が個あるから、自由度が
- これをで回転させたら、が出来上がるから、の作り方にはを作るときの自由度との自由度の差であるだけが残っていることになる
- 回転行列の自由度がであることは、こんな風にも考えられる
- 回転行列は、すべての列ベクトルのノルムが1(ここで自由度を使っている)
- 回転行列は、すべての列ベクトルペアのなす角が直交(ここで自由度をつかっている)
- が回転行列を自由に作るために残された自由度
- このことは、こちらで、本の次元単位ベクトルの相対配置をするときに、本のベクトルのペアワイズ角の情報があると、一意に相対配置が決まったことと同じこと。回転行列の場合の「すべてのペアワイズ角が直角」の部分が「ペアワイズ角の情報」に代わっただけ
- 正方行列がQR分解されるっていうのはどういうことだろう
- 正方行列を方向のRの対角成分と成分間の遠近関係成分(Rの非対角上三角成分)と、それを回転することで表している
- 正方行列を固有値分解する()と、対角成分がとれるが、残りのは必ずしも「良い意味」がとれるとは限らない
- 正方行列が対称(分散共分散行列のような)の場合には、固有値分解のは回転・逆回転
- これは対称行列はではなくての自由度があるが、それは、回転の自由度と個々のベクトルの長短の情報である、という自由度の分解にできるから
- RでQR分解をしてみよう
k<-3
m<-matrix(rnorm(k^2),k,k)
qr.m<-qr(m)
Q<-Q.qr(qr.m)
R<-R.qr(qr.m)
Q
R
Q%*%t(Q)
- GPArotationパッケージでは、QR分解を用いて、ランダムな正規直交基底(回転行列)を作っている
library(GPArotation)
Random.Start(k)
> Random.Start
function (k)
{
qr.Q(qr(matrix(rnorm(k * k), k)))
}
<environment: namespace:GPArotation>