特異値分解

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

特異値分解(とくいちぶんかい、英語:singular value decomposition、しばしばSVDと略される)とは、線形代数学における、複素数あるいは実数を成分とする行列に対する行列分解の一手法である。信号処理統計学の分野で用いられる。特異値分解は、行列に対するスペクトル分解定理の一般化とも考えられ、正方行列に限らず任意の形の行列を分解できる。

特異値分解定理[編集]

M を、mn 列の 行列 とする。行列の要素は、 K から取られているものとする。体は 実数体であっても複素数体であってもよい。このとき、

M = U\Sigma V^*, \,\!

という M の分解が存在する。 Umm 列のユニタリ行列、行列 Σmn 列の実対角行列で対角成分は非負。V*nnユニタリ行列 V随伴行列複素共役かつ転置行列)。この分解を特異値分解と呼ぶ。

  • 行列 V は、M入力の基底となる正規直交ベクトルを表す。
  • 行列 U は、M出力の基底となる正規直交ベクトルを表す。
  • 行列 Σ は特異値を対角成分に持つ。特異値増幅率を表し、入力成分がそれぞれ何倍されて出力されるかを表す。

便宜的に Σ の対角成分 Σi,i は、大きいものから小さいものに並べる。こうすると、UV は一意には決まらないが、Σ は一意に定まる。

特異値、特異ベクトルと特異値分解との関係[編集]

非負の数 σ は、

Mv = \sigma u

かつ

M^{*} u = \sigma v

という条件を満たす単位長さの Km 上のベクトル uKn 上のベクトル v が存在するときに限って、行列 M の特異値であるといえる。 ベクトル uv は、それぞれ σ左特異ベクトル右特異ベクトルと呼ばれる。

任意の特異値分解

M = U\Sigma V^{*} \,\!

において、Σ の対角成分は、M の特異値に等しい。UV の列ベクトルは、それぞれ左特異ベクトル、右特異ベクトルを並べたものである。すなわち、

  • mn 列行列 M は、少なくともひとつ、多くとも p = min(m,n) 個の異なる特異値を持つ。
  • 常にKm 上のユニタリ基底が存在して、それは M の左特異ベクトルから成る。
  • 常にKn 上のユニタリ基底が存在して、それは M の右特異ベクトルから成る。

1つの特異値に対し、2つ以上の線形独立な右(あるいは左)特異ベクトルが存在する場合、その特異値は縮退しているという。縮退していない特異値に対しては、常に左右の特異ベクトルがそれぞれただ1つ存在する。結果として、もし行列Mにおけるすべての特異値が縮退しておらず、かつ0ではない場合、特異値分解はただ1つに定まる。

特異値分解はmn 列行列 Mに対して一般的に適用可能な手法である。一方、固有値分解は正方行列にのみ適用可能である。それにもかかわらず、2つの分解には関連性がある。M正定値エルミート行列という特殊なケースの場合、固有値は実数かつ非負であり、特異値と特異ベクトルはそれぞれMの固有値と固有ベクトルに一致する。


幾何的な意味[編集]

行列 UV はユニタリ行列だから、U の列ベクトル u1,...,um は、体 Km 上の正規直交基底を成し、V の列ベクトル v1,...,vn は、体 Kn 上の正規直交基底を成す。

ベクトル xMx に写す線形変換(線型写像) T: K^{n} \rightarrow K^{m} は、これらの正規直交基底を用いて簡単な形に表される。すなわち、 T(v_{i}) = \sigma_{i} u_{i}, ここで i = 1,...,min(m,n) に対しては σi は Σ の i 番目の対角成分、i > min(m,n) に対し T(vi) = 0。

このことから、特異値分解定理の幾何的な意味は以下のように説明できる。線型写像 T: K^{n} \rightarrow K^{m} に対し、次のような性質を持つ正規直交基底 KmKn が存在する。ここに、TKni 番目の基底ベクトルを Kmi 番目の基底ベクトルについて σi 倍したものに写す。σi は負でない数。つまり、これらの基底を用いて、写像 T は、負でない数を成分に持つ対角行列で表される。

特異値分解の応用[編集]

疑似逆行列[編集]

特異値分解を用いて、擬似逆行列を計算することができる。行列 M の擬似逆行列は、その特異値分解  M = U\Sigma V^* を用いて

 M^+ = V \Sigma^+ U^*, \,

と表せる。ここに Σ+ は、Σ の零でない成分の逆数を成分とする行列の転置である。この擬似逆行列を用いて、線形最小二乗法を行うことができる。

値域、零空間、行列の階数[編集]

特異値分解を用いて、行列 M値域零空間を表現することができる。M の特異値の中で零になるものに対応する右特異ベクトルが零空間の基底となる。M の特異値の中で零でないものに対応する左特異ベクトルが値域の基底となる。すなわち M行列の階数は、零でない特異値の数と一致する。さらに、MM^*MM M^* の階数は一致し、 M^*MM M^* の固有値は一致する。

数値計算上では、特異値を用いて行列の有効な階数を求めることができる。数値計算上では丸め誤差の影響で、階数が退化した行列に対し、非常に小さいが零ではない特異値が得られてしまう場合に有効である。

行列の近似[編集]

行列 M を、ある特定の階数 r を持つ別の行列 \tilde{M} で近似すると便利な場合がある。この場合の近似を\mbox{rank}(\tilde{M}) = r という条件のもとで M\tilde{M} の差(フロベニウスノルム)が最小なものという意味であるとすると、行列 M の特異値分解によって、\tilde{M} を求めることができる。すなわち、


\tilde{M} = U \tilde{\Sigma} V^*

ここに、 \tilde{\Sigma} は、\Sigma から大きい方から数えて r 個の特異値を残して、それ以外の特異値を零とおいたもの。

参考文献[編集]

関連項目[編集]