一般逆行列

提供: floatingexception
移動: 案内検索

一般逆行列

数学的背景

一言で説明すると、正方でない行列について、逆行列のようなものを定義しようというのが、 一般逆行列です。

m\times n行列Aに対し、

AGA=A

を満足するn\times m行列GA一般逆行列(generalized inverse)といいA^{{-}}と書きます。

m>nの場合、直線回帰問題

m>nの場合、即ち連立一次方程式

A{\vec  {x}}={\vec  {b}}

の未知数の数よりも 方程式の数が多い場合には、最小二乗型一般逆行列と、 統計学における最小二乗法による直線回帰が等価です。

直線回帰問題

{\vec  {y}}=A{\vec  {x}}+{\vec  {f}}

についての正規方程式は

A^{T}A{\vec  {x}}=A^{T}{\vec  {y}}

です。

Aに対し

{\left(A^{T}A\right)}^{{-1}}A^{T}

が一般逆行列になります。

m<n の場合、過小定義問題

m<n{\mbox{rank}}(A)=mのときは、 {\vec  {b}}-A{\vec  {x}}={\vec  {0}}を 正確に満たす無数の解があります。 この場合、\vert \vert {\vec  {x}}\vert \vert を最小にするただ1つの解 {\vec  {x}}を見つけると、しばしば有用になります。 この問題は過小定義の連立一次方程式に対して 最小ノルム解を見つけることです。

数値例

A=\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)

A^{T}=\left({\begin{array}{ccc}1&2&3\\4&5&6\end{array}}\right)

A^{T}A=\left({\begin{array}{ccc}1&2&3\\4&5&6\end{array}}\right)\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)=\left({\begin{array}{cc}14&32\\32&77\end{array}}\right)

{\left(A^{T}A\right)}^{{-1}}={\left({\begin{array}{cc}14&32\\32&77\end{array}}\right)}^{{-1}}={\frac  {1}{54}}\left({\begin{array}{cc}77&-32\\-32&14\end{array}}\right)

G={\left(A^{T}A\right)}^{{-1}}A^{T}={\frac  {1}{54}}\left({\begin{array}{cc}77&-32\\-32&14\end{array}}\right)\left({\begin{array}{ccc}1&2&3\\4&5&6\end{array}}\right)={\frac  {1}{54}}\left({\begin{array}{ccc}-51&-6&39\\24&6&-12\end{array}}\right)

AG={\frac  {1}{54}}\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)\left({\begin{array}{ccc}-51&-6&39\\24&6&-12\end{array}}\right)={\frac  {1}{54}}\left({\begin{array}{ccc}45&18&-9\\18&18&18\\-9&18&45\end{array}}\right)={\frac  {1}{6}}\left({\begin{array}{ccc}5&2&-1\\2&2&2\\-1&2&5\end{array}}\right)

(AG)A={\frac  {1}{6}}\left({\begin{array}{ccc}5&2&-1\\2&2&2\\-1&2&5\end{array}}\right)\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)={\frac  {1}{6}}\left({\begin{array}{cc}6&24\\12&30\\18&36\end{array}}\right)=\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)=A

GA={\frac  {1}{54}}\left({\begin{array}{ccc}-51&-6&39\\24&6&-12\end{array}}\right)\left({\begin{array}{cc}1&4\\2&5\\3&6\end{array}}\right)={\frac  {1}{54}}\left({\begin{array}{cc}54&0\\0&54\end{array}}\right)=\left({\begin{array}{cc}1&0\\0&1\end{array}}\right)


SSL2のGINVの機能

m\times nの行列Aに対して、 次の関係を満足するn\times m行列Xを、 AMoore-Penroseの一般逆行列といいます。

AXA=A

XAX=A

{(AX)}^{T}=AX {(XA)}^{T}=XA

この一般逆行列XAに対して一意的に定まります。

SSL2のGINV (単精度)およびDGINV (倍精度)サブルーチンは、 m\times nの実行列Aを与えられて、 特異値分解を使い、 Aの一般逆行列の転置行列を返します。

特異値分解と一般逆行列

一言で説明すると、行列の対角化を、 正方でない行列に一般化したものが、 特異値分解(singular value decomposition)です。

m\times n行列Aに対して、

A=ULV^{T}

を特異値分解といいます。 ここで、Uは、m\times nU^{T}U=Eとなる行列、 Lは、n\times nの対角行列、 Vは、n\times nV^{T}V=VV^{T}=Eとなる行列です。

Lの対角要素\ell _{{i}}を、 A特異値(singular value)といいます。

\ell _{i}^{+}=\left\lbrace {\begin{array}{ccc}\ell _{i}^{{-1}}&,&\ell _{i}\not =0\\0&,&\ell _{i}=0\end{array}}\right.

を対角要素とするn\times n対角行列をL^{+}とおきます。

A^{+}=VL^{+}U^{T}

は、Aの一般逆行列です。

特異値分解には、第一にハウスホルダー法でAを二重対角行列に変換し、 第二にQR法で対角行列に変換する方法が使われます。 SSLマニュアルのASVD1サブルーチンの項目に、 詳細な解説があります。