制御系CADに関わる数値計算では実行列の特異値分解(Singular-Value Decomposition, SVD)を多用しますが、データ駆動分野の計算でも基盤技術となっています。
●いまデータは次の複素行列にまとめられているとします。
ここで列ベクトルはn次元数ベクトルですが、データ駆動分野では、nの値は数個ではなく、数千、数万のオーダーになります。
●をサイズの複素行列()とします。このとき、ユニタリ行列とが存在して
が成り立ちます()。ここで、実行列は次のように表されます。
MATLABのコマンドでは、次のように求めます。
>> [U,S,V]=svd(X)
●いまとします。このとき(2)は次式となります。
MATLABのコマンドでは、次のように求めます。
>> [U1,S1,V]=svd(X,’econ’)
(2)の場合はは大規模な行列となりますが、(3)の場合はスリムな行列となりますので、Economic SVDと呼ぶことがあります。
●いま実効階数をとします。すなわち微小なに対して
とします。このとき(3)から次式のように近似できます。
●(2.1)、(3.1)、(5.1)の関係はダイアディック形式を用いて次のように表されます。
●相関行列またはは、(3.1)より、次式のように表されます。
これらより
すなわち、非零の特異値は相関行列またはの固有値の正の平方根です。もしの場合はの特異値はの固有値の絶対値となります。これはスカラの場合、次式を意味しています。
データ駆動分野では、nの値は数個ではなく、数千、数万のオーダーになります。一方、mの値はそのように大きな値とはなりません。したがって、(8.2)の小規模な固有値問題を解いてとを求め、(3.1)に基づいて、(8.1)の大規模な固有値問題の固有ベクトルの一部を、次式により求めることが行われます。
(5.1)に基づく場合は次式となります。
このような手法はスナップショットと呼ばれています。
●観測データを行ベクトルとしてもつを考えます。
ここで、回の観測が行われ、各観測では個のデータを得るものとしています。これから
を引いた行列の特異値分解を
とします。このとき、共分散行列は
のように表されます。すなわち共分散行列の主成分ベクトルと、その方向に沿う不変分散値が、行列の特異値分解から得られることに留意します。