特異値計算機 - SVD行列分解
SVD分解を使って任意の実行列の特異値を計算します。行は改行、列はカンマ区切りで入力すれば、すべての特異値、行列ランク、ノルムをすぐに確認できます。
行列を入力して、特異値分解(SVD)で特異値を計算します。計算機は、降順のすべての特異値と行列の各種特性を表示します。
特異値計算機 - SVD行列分解
SVD分解を使って任意の実行列の特異値を計算します。行は改行、列はカンマ区切りで入力すれば、すべての特異値、行列ランク、ノルムをすぐに確認できます。
各行は1行ずつ入力してください。行内の要素はカンマまたはスペースで区切ります。すべての行は同じ列数である必要があります。
特異値計算機について
特異値分解(SVD)は、線形代数で最も重要な分解の1つです。任意の実数 m×n 行列 A に対して、SVD は A = UΣV^T と表します。ここで U は m×m の直交行列、Σ は対角成分が非負の m×n 対角行列、V は n×n の直交行列です。Σ の対角成分 σ₁ ≥ σ₂ ≥ … ≥ 0 が A の特異値です。
特異値は、元の行列に負の値や複素的な構造が含まれていても、常に非負の実数です。これらは行列によって一意に定まり、特異値が重複する場合には U や V のベクトルが一意でないことがあります。非ゼロ特異値の個数は行列のランクに等しく、これは列空間(行列 A で表される線形変換の取り得る出力全体の次元)を表します。
SVD と固有値の関係は厳密です。A の特異値は、対称半正定値行列 A^T·A(あるいは左特異ベクトルに対しては A·A^T)の固有値の平方根です。この計算機では、まず A^T·A を求め、次に Jacobi 固有値アルゴリズム——Givens 回転と呼ばれる直交回転を繰り返して対称行列の非対角成分を0にしていく反復法——を適用して固有値を求め、その平方根を取ります。
最大特異値 σ₁ は行列のスペクトルノルム(2-ノルム、作用素ノルムとも呼ばれます)に等しく、単位ベクトルをどれだけ最大に伸ばせるかを表します。Frobeniusノルムはすべての特異値の二乗和の平方根であり、行列要素の二乗和の平方根と等しくなります。これらのノルムは実用的な意味を持ち、Frobeniusノルムは行列全体のエネルギーを表す最も自然な尺度であり、スペクトルノルムは摂動に対する感度を制御します。
条件数 κ = σ₁/σₙ(最大特異値と最小特異値の比)は、連立一次方程式を解く際の行列の条件の良さを定量化します。条件数が1に近いとき、系は条件が良く、正確に解きやすいといえます。条件数が非常に大きい——たとえば 10⁶ や 10¹² を超える——場合は、入力のわずかな摂動が解に大きな変化を引き起こす病的な系であり、科学計算や機械学習における数値不安定性の典型的な原因です。
SVD は幅広い用途を持ちます。データサイエンスでは、次元削減の主力である主成分分析(PCA)は、中心化したデータ行列の SVD を計算することと数学的に同値です。主成分は右特異ベクトル V であり、各成分で説明される分散は対応する特異値の二乗に比例します。画像処理や圧縮では、最大の k 個の特異値とそれに対応するベクトルだけを残すことで、画像行列のランク-k 近似が得られ、すべてのランク-k 行列の中で Frobeniusノルム誤差を最小化します。これは Eckart-Young の定理です。推薦システム(協調フィルタリング)では、SVD による行列分解を用いて未見アイテムのユーザー評価を予測します。工学では、擬似逆 A† = VΣ†U^T により、過剰決定系や未決定系に対する最小ノルム最小二乗解を得られ、これはロボティクス、制御理論、信号処理で重要です。
この計算機では、Jacobi アルゴリズムにより、およそ 10×10 までの行列を安定して扱えます。非常に大きい行列や、ほぼ同じ特異値を多く持つ行列では、浮動小数点の丸め誤差の蓄積により精度が多少落ちることがありますが、一般的な入力では少なくとも6桁の有効数字まで正確です。
特異値の例
代表的な行列例と、その特異値および主な特性です。
| 行列 | 特異値 | 特性 |
|---|---|---|
| [[1, 2], [3, 4]] | σ₁ ≈ 5.4650, σ₂ ≈ 0.3660 | 一般的な 2×2 行列。ランク = 2、条件数 ≈ 14.93。 |
| [[1, 0, 0], [0, 2, 0], [0, 0, 3]] | σ₁ = 3, σ₂ = 2, σ₃ = 1 | 対角行列。特異値は対角成分の絶対値に等しいです。 |
| [[1, 2, 3], [4, 5, 6]] | σ₁ ≈ 9.5080, σ₂ ≈ 0.7729 | ランク2の 2×3 行列。SVD では min(2,3)=2 個の特異値が得られ、ここでは両方とも非ゼロです。 |
| [[1, 2], [2, 4]] | σ₁ = 5, σ₂ = 0 | ランク落ちした行列(第2行 = 第1行の2倍)。1つの特異値は0です。 |
特異値計算機の使い方
- テキストエリアに行列を入力します。各行は1行ずつ、行内の要素はカンマまたはスペースで区切ります。
- すべての行の要素数が一致していることを確認します。行の長さが不揃いだと、計算機はパースエラーを表示します。
- 「特異値を計算」をクリックします。ツールは A^T·A を計算し、Jacobi 固有値アルゴリズムを適用して、すべての特異値を降順で表示します。
- 追加の特性として、ランク(非ゼロ特異値の個数)、Frobeniusノルム、スペクトルノルム(σ₁)、および行列がフルカラムランクのときの条件数(σ₁/σₙ)を確認できます。
- 例のボタンを使ってあらかじめ入力された行列を読み込み、行列構造の違いが特異値にどう影響するかを試してください。
特異値に関するFAQ
特異値とは何ですか?
特異値は、線形変換の大きさを表す非負のスカラーです。行列 A に対して、特異値は A^T·A の固有値の平方根です。これにより、A が方向ごとにベクトルをどれだけ伸ばしたり縮めたりするかが分かります。最大特異値は最大の伸長率を、最小特異値は最小の伸長率を表します。
特異値と固有値はどう違いますか?
固有値は正方行列にのみ定義され、負や複素数になることがあります。特異値は任意の行列(長方行列を含む)に定義でき、常に非負の実数です。対称正定値行列では、特異値と固有値は一致します。一般には、A の特異値は A^T·A の固有値の平方根です。
条件数は何を教えてくれますか?
条件数(σ₁/σₙ)は感度を測る指標です。小さい条件数(1に近い)は、行列が扱いやすく、連立方程式 Ax = b を正確に解けることを意味します。大きい条件数(>10⁶)は、ほぼ特異であることを示し、行列はほぼランク落ちしていて、丸め誤差の数値増幅により解が信頼できない可能性があります。
なぜ特異値は必ず非負なのですか?
特異値は σᵢ = √λᵢ と定義され、λᵢ は A^T·A の固有値です。A^T·A は半正定値行列なので(すべての固有値が ≥ 0)、平方根も必ず非負の実数になります。これは任意の実行列または複素行列 A に対して成り立ちます。
SVD と PCA の関係は何ですか?
主成分分析(PCA)は、中心化したデータ行列の SVD を計算することと数学的に同値です。右特異ベクトル(V の列)が主方向(主成分)です。対応する特異値は、その方向の標準偏差に比例します。具体的には、σᵢ/√(m-1) が m 行のデータ行列における第 i 主成分の標準偏差です。
この計算機は長方行列に対応していますか?
はい。SVD は、m > n、m = n、m < n のいずれでも任意の実数 m×n 行列に対して定義されます。m×n 行列では、特異値の個数は min(m, n) です。m > n の場合、非ゼロ特異値は最大でも n 個です。m < n の場合、非ゼロ特異値は最大でも m 個です。