Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 行列分解の導入 | 線形代数の基礎
Pythonによるデータサイエンスのための数学

book行列分解の導入

メニューを表示するにはスワイプしてください

Ax=bA \vec{x} = \vec{b} のような連立方程式の解法は、特に大規模なシステムでは計算コストが高くなる場合があります。

行列分解は、このプロセスを行列 AA をより単純な部分に分解することで簡略化し、段階的に解くことを可能にします。

LU と QR

行列 AA を他の構造化された行列に分解します。

LU分解

AA下三角行列上三角行列に分解:

  • ガウス消去法を用いて構築;
  • 正方行列に最適。
A=LUA = LU

QR分解

AA直交行列上三角行列に分解:

  • 非正方行列によく使用;
  • 最小二乗問題やLU分解が適用できない場合に最適。
A=QRA = QR

LU分解

正方行列から始めます:

A=[4363]A = \begin{bmatrix} 4 & 3 \\ 6 & 3 \end{bmatrix}

この行列を次のように表現することを目指します:

A=LUA = LU

ここで:

L=[10l211],  U=[u11u120u22]L = \begin{bmatrix} 1 & 0 \\ l_{21} & 1 \end{bmatrix},\ \ U = \begin{bmatrix} u_{11} & u_{12} \\ 0 & u_{22} \end{bmatrix}

この分解はAが正方かつ可逆の場合に可能です。

重要なポイント

  • 下三角行列は対角線より上の成分がすべてゼロであり、前進代入を簡単にする;
  • 上三角行列は対角線より下の成分がゼロであり、後退代入が容易;
  • 直交行列は列ベクトルが直交かつ正規化(長さ1)されている;
  • この性質によりベクトルの長さや角度が保たれ、最小二乗法の解法や数値安定性の向上に役立つ。

ガウス消去法

ガウス消去法を適用して、左上のピボットの下の要素を消去:

R2R264R1R_2 \rarr R_2 - \frac{6}{4}R_1

これにより、次のようになります:

R2=[0,1.5]R'_2 = [0, -1.5]

したがって、更新後の行列は次の通り:

U=[4301.5]U = \begin{bmatrix} 4 & 3 \\ 0 & -1.5 \end{bmatrix}

また、行基本変形から次が分かります:

L=[101.51]L = \begin{bmatrix} 1 & 0 \\ 1.5 & 1 \end{bmatrix}

重要なポイント

  • ガウス消去法は、各列のピボット要素の下の要素を、ピボット行の定数倍を下の行から引くことで系統的に消去;
  • この処理により、Aは上三角行列Uに変換;
  • 消去に使われた乗数はLに格納され、AをLUの積として表現可能。

LU分解の結果

検算:

A=LU=[101.51][4301.5]=[4363]A = LU = \begin{bmatrix} 1 & 0 \\ 1.5 & 1 \end{bmatrix} \begin{bmatrix} 4 & 3 \\ 0 & -1.5 \end{bmatrix} = \begin{bmatrix} 4 & 3 \\ 6 & 3 \end{bmatrix}

このとき、連立方程式 Ax=bA \vec{x} = \vec{b} は2段階で解ける:

  1. 前進代入で Ly=bL \vec{y} = \vec{b} を解く;
  2. 後退代入で Ux=yU \vec{x} = \vec{y} を解く。

QR分解

行列 AA を2つの行列の積として表現:

A=QRA = QR

ここで:

  • AA は入力行列(例:データ、係数など);
  • QQ直交行列(列ベクトルが正規直交);
  • RR上三角行列

形状の例:

A=[a1a2a3a4]=[q1q2q3q4][r11r120r22]A = \begin{bmatrix} a_1 & a_2 \\ a_3 & a_4 \end{bmatrix} = \begin{bmatrix} q_1 & q_2 \\ q_3 & q_4 \end{bmatrix} \begin{bmatrix} r_{11} & r_{12} \\ 0 & r_{22} \end{bmatrix}

この分解は以下の場合によく使われる:

  • 行列Aが正方行列でない場合;
  • 最小二乗問題の解法;
  • LU分解が安定しない場合。

直交規格直交ベクトルとは?

直交ベクトル

2つのベクトル u,vu, v が直交するとは、内積がゼロであることを意味します:

uv=0u \cdot v = 0

正規化ベクトル

ベクトル uu が正規化されているとは、u=1|u| = 1 であることを指します。

直交規格直交集合

ベクトルの集合 {q1,q2,...,qk}\{q_1, q_2, ..., q_k\} が直交規格直交であるとは、それぞれが単位長であり、互いに直交していることを意味します:

qiqj={1, if  i=j,0, if  ij.q_i \cdot q_j = \begin{cases} 1,\ \text{if}\ \ i = j,\\ 0,\ \text{if}\ \ i \neq j. \end{cases}

重要性QQ の列が直交規格直交であることで、幾何学的性質が保たれ、射影計算が簡単になり、数値的安定性が向上します。

行列Aの定義

次の例から始めます:

A=[4363]A = \begin{bmatrix} 4 & 3 \\ 6 & 3 \end{bmatrix}

グラム・シュミットの方法を用いて、A=QRA=QR となるような行列 QQRR を求めます。 グラム・シュミットの方法は、AA の列ベクトルから直交規格直交なベクトル集合を作成します。

つまり、QQ のベクトルはすべて互いに直交し(直交)、かつ単位長(正規化)です。この性質により、多くの計算が簡単になり、連立方程式を解く際の数値的安定性が向上します。

ここでの目標は

  • QQ の列を直交規格直交にすること;
  • 射影を表現する行列 RR を作成すること。

最初の基底ベクトルの計算

まず、AA の第1列を取り出します:

a1=[46]a_1 = \begin{bmatrix} 4 \\ 6 \end{bmatrix}

これを正規化するためにノルムを計算します:

a1=42+62=16+36=52|a_1| = \sqrt{4^2 + 6^2} = \sqrt{16 + 36} = \sqrt{52}

次に:

q1=152[46]=[452652]q_1 = \frac{1}{\sqrt{52}} \begin{bmatrix} 4 \\ 6 \end{bmatrix} = \begin{bmatrix} \frac{4}{\sqrt{52}} \\ \frac{6}{\sqrt{52}} \end{bmatrix}

これが QQ の最初の直交規格直交ベクトルです。

ベクトルの正規化方法

ベクトルが与えられたとき:

v=[v1v2vn]v = \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix}

そのノルムを計算します:

v=v12+v22+...+vn2|v| = \sqrt{v_1^2 + v_2^2 + ... + v^2_n}

次に正規化します:

v^=1vv\hat{v} = \frac{1}{|v|}v

例:

v=[34],  v=32+42=5v = \begin{bmatrix} 3 \\ 4 \end{bmatrix},\ \ |v| = \sqrt{3^2 + 4^2} = 5

したがって、正規化ベクトルは:

v^=15[34]=[0.60.8]\hat{v} = \frac{1}{5}\begin{bmatrix} 3 \\ 4 \end{bmatrix} = \begin{bmatrix} 0.6 \\ 0.8 \end{bmatrix}

ベクトルの正規化と直交化の方法が分かれば、グラム・シュミットの方法を用いて QQ 行列を作成し、QR分解で RR を計算できます。

グラム・シュミット法による q2q_2 の計算

q2q_2 を計算するために、まず AA の第2列から始めます:

a2=[33]a_2 = \begin{bmatrix} 3 \\ 3 \end{bmatrix}

次に、a2a_2q1q_1 に射影します:

r12=q1Ta2=152(43+63)=15230r_{12} = q_1^Ta_2 = \frac{1}{\sqrt{52}}(4 \cdot 3 + 6 \cdot 3) = \frac{1}{\sqrt{52}} \cdot 30

a2a_2 から射影成分を取り除きます:

u2=a2r12q1u_2 = a_2 - r_{12}q_1

その後、(上記と同様に)正規化します:

q2=u2u2q_2 = \frac{u_2}{|u_2|}

これで q1q_1q2q_2 の両方が QQ の直交正規基底となります。 最終結果を組み立てます:

Q=[q1q2],  R=[r11r120r22]Q = \begin{bmatrix} q_1 & q_2 \end{bmatrix},\ \ R = \begin{bmatrix} r_{11} & r_{12} \\ 0 & r_{22} \end{bmatrix}

これらは次を満たします:

A=QRA = QR
question mark

QR分解のグラム・シュミット法における最初のステップは何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  8

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  8
some-alt