seegongsik
単語帳
工業数学

QR は行列を回転と三角に分ける

A=QR、直交行列 Q と上三角 R に分ければ最小二乗を安定に解ける

行列の列はたいてい歪んでいます。互いに直角でもなく、長さもばらばらです。QR はこれらの列を二つの部品にきれいに分けます。まず列をグラム・シュミットでまっすぐに伸ばし、互いに垂直な単位ベクトルにします。これが Q で、長さも角度も触らない純粋な回転(または反射)です。そして伸ばす際に削り取った長さと重なりをすべて集めたのが R で、不思議なことにつねに上側だけが埋まった三角形です。A = QR、回転ひとつと三角ひとつ。この一行が最小二乗を最も安定に解く道であり、数値線形代数の働き手です。

ボタンで段階を踏んでください。段階0は A の二列 a1, a2 です。斜めで長さも違いますね。段階1では直前の講のグラム・シュミットがこの二つをまっすぐにします。a1 の向きを単位長に縮めたのが q1、a2 から q1 への影を引いて残った直交成分を単位化したのが q2 です。いま q1 と q2 はちょうど直角で、ともに長さ1です(点積が0と出ます)。段階2で R が現れます。R = Qᵀ A なので自動的に上三角となり、左下の成分 r21 は0です。A は歪んだ列、Q はまっすぐにした正規直交列、R はその間をつなぐ小さな三角。これが A = QR です。

Q の二列は互いに垂直な単位ベクトルです。だから Q を平面に作用させても格子は歪まず、全体が剛体のように回るだけです。角度のスライダーを動かしてみてください。マスは伸びも歪みもせず、正方形は正方形のままです。長さも角度も保たれるからです。反射ボタンを押すと鏡のように裏返りますが、列は依然として正規直交なので形は変わりません。これが直交行列の定義そのものです:QᵀQ = I。下の QᵀQ を見ると、どの角度でも単位行列のままです。Q が回転か反射にすぎない証拠です。

なぜ R はつねに上側の三角だけ埋まるのでしょう。各成分は rij = qi · aj、すなわち i 番目のまっすぐにした方向に j 番目の元の列を映した影の長さです。マスを切り替えて点積の値を確かめてください。鍵は対角の下のマスです。r21 = q2 · a1 ですが、q2 は a2 から a1 の方向を取り除いて残った成分なので、a1 にちょうど垂直です。垂直なら点積は0、だから r21 は0です。一般に、後で作った方向 qi は前の列 aj(j < i)にはまったく入りません。その列はすでに前の方向たちで表しきられているからです。だから対角の下はすべて0、R は上三角です。

今度は逆に、R を手に取って A を組み直します。Q は20度回転に固定し、スライダーで R の三成分を動かすと、A = QR がリアルタイムに描き直されます。r11 は第一列 a1 の長さを決めます。大きくすれば a1 は長くなります。r22 は第二の方向へどれだけ伸びるか、つまり直交成分の長さです。r12 はせん断です。第二列を第一の方向へどれだけ傾けるかを決めます。この三つの数が長さと傾きをすべて担い、Q はその結果を丸ごと20度回すだけです。R が形を、Q が向きを受け持つという分業が目に見えます。

さて QR が本当に役立つところ、最小二乗です。先の射影の講で、データに最もよく合う直線とは、残差(縦の点線)の二乗和を最も小さくする線でした。傾きと切片のスライダーを動かして SSE を縮めてみてください。教科書はたいてい AᵀA を作って正規方程式を解けと言います。しかし AᵀA は誤差に敏感で、数値的に不安定なことが多いのです。QR はその段階を飛ばします。A = QR を代入すると正規方程式は R x = Qᵀ b に縮み、R が三角なので後退代入一回で終わります。ボタンを押すとその QR 解に跳び、SSE が最小になります。AᵀA を作らずに同じ答えをより安定に得る、それが QR の値打ちです。

実際に使うQR は行列を A = QR、すなわち回転と三角に分けます。Q はグラム・シュミットでまっすぐにした正規直交列なので回転(または反射)であり、QᵀQ = I で長さと角を保ちます。R は上三角で、各成分は rij = qi · aj、列の長さと重なりを担います。対角の下が0なのは、後の方向が前の列に入らないからです。QR の最大の用途は最小二乗です。AᵀA を作らずに R x = Qᵀ b を後退代入で解き、同じ答えをより安定に得ます。だから QR は線形回帰、最小二乗、固有値アルゴリズム(QR 反復)まで、数値線形代数の至る所で働く基本分解です。
工業数学
このページがお役に立ったなら支援する