SVD計算機
二次正方行列をU、特異値、Vの転置に分解し、再現性のある数値結果を表示します。
特異値分解
数値を半角カンマ、行を半角セミコロンで区切り、ちょうど二行を入力してください。
数値の間には半角カンマ、二行の間には半角セミコロンを使います。
特異値分解について
特異値分解は通常SVDと略され、実行列を特定の構造を持つ三つの行列に分解します。一般的な式では、元の行列はU、Sigma、Vの転置を順に掛けたものに等しくなります。UとVは直交行列で、その列は互いに垂直な単位方向を表します。Sigmaは対角行列で、非負の特異値が大きい順に並びます。この計算機は任意の二次実正方行列を分解します。
まず、入力行列の転置に入力行列を掛けて対称行列を作ります。その固有値は、ごく小さな浮動小数点誤差を除けば常に非負です。固有値の平方根が特異値となり、正規化した固有ベクトルがVの列になります。元の行列に各右特異ベクトルを掛け、対応する非零の特異値で割ると、Uの対応する列が得られます。特異値が零の場合は、決定論的な方法で正規直交基底を補完し、表示する因子の妥当性を保ちます。
特異値は、行列が特定の方向に空間をどれほど伸縮させるかを示します。最初の値が大きく、二番目がはるかに小さい場合、変換の大部分が一方向に集中しています。二番目の値が零なら、行列の階数は一または零で、平面が直線または点に潰れます。最大特異値と最小の非零特異値の比は数値的な条件の良し悪しに関係しますが、このページでは条件数ではなく分解そのものを表示します。
SVDは最小二乗近似、擬似逆行列、次元削減、画像圧縮、推薦システム、信号処理、ノイズ除去に使われます。固有値分解とは異なり、あらゆる実行列に存在し、対称行列や正方行列に限りません。このフェーズ1の計算機は、簡潔で仕組みが明確な、依存ライブラリ不要の実装と予測可能な表示を実現するため、入力を二次正方行列に限定しています。ただし、基本的な考え方は任意の大きさの長方形行列にもそのまま拡張できます。
結果は小数点以下六桁に丸め、不要な末尾の零を除きます。直交因子は数学的に一意ではありません。UとVの対応する列の符号を同時に反転しても積は変わらず、重複する特異値がある場合は部分空間内でさらに回転できます。そのため、別の信頼できるSVDパッケージで符号や基底ベクトルが異なっても、まったく同じ入力行列を復元できます。この計算機は向きの選び方を統一し、同じ入力や固定の例に対して安定した結果を返します。
SVDの計算例
| 入力行列 | 特異値 | 解説 |
|---|---|---|
| 3,0;0,2 | 3, 2 | 正の対角行列は、すでに特異方向と軸が一致しています。 |
| 4,0;0,1 | 4, 1 | 第一軸を四倍に伸ばし、第二軸は変えない行列です。 |
| 1,0;0,0 | 1, 0 | 零の特異値は階数一の行列を示します。 |
| 0,2;2,0 | 2, 2 | 等しい特異値は、互いに垂直な二方向で伸縮率が等しいことを示します。 |
SVD計算機の使い方
- 第一行の二つの数を半角カンマで区切って入力します。
- 半角セミコロンを加え、第二行も半角カンマ区切りで入力します。
- 「SVDを計算」を選択します。
- 特異値とU、Sigma、Vの転置行列を確認します。
SVD計算機のよくある質問
特異値は何を表しますか?
特異値は、特定の互いに垂直な方向に沿った伸縮の大きさを表します。値が大きいほど拡大率が高く、零は次元が潰れることを示します。
なぜUとVは直交行列なのですか?
各列が互いに垂直な単位ベクトルだからです。直交変換は長さと角度を保つため、これらの因子は追加の拡大縮小ではなく回転や鏡映を表します。
異なるSVDの結果が両方正しいことはありますか?
はい。対応する特異ベクトルの符号を両方反転しても、復元される行列は変わりません。重複特異値がある場合も、異なる正規直交基底を使用できます。
長方形行列に対応していますか?
いいえ。このフェーズ1の実装は任意の二次実正方行列のみを受け付けます。より大きな行列や長方形行列には、汎用的な数値分解ルーチンが必要です。
特異値が零とはどういう意味ですか?
行列が少なくとも一つの独立した方向を失い、特異行列であることを意味します。二次正方行列で一つが正、もう一つが零なら階数は一です。