svdsketch
構文
説明
例
入力引数
出力引数
ヒント
svds
にどのランクを指定するかは事前にわからないが、SVD の近似が満たすべき許容誤差はわかる場合にはsvdsketch
を使用します。svds
は (既定の"largest"
メソッドを使用して) SVD の可能な限り最善のランク k 近似を計算します。svdsketch
はそのランク k 近似が最善であることを保証するものではありません。svds
に対する速度の面での優位性が考慮されます。
アルゴリズム
svdsketch
は許容誤差を適用して、入力行列 A
の低ランク行列近似 を形成します。この低ランクの近似は "行列スケッチ" と呼ばれます。行列スケッチは、A
から不要な情報をフィルターで除外して重要な特徴のみを保持します。行列スケッチの相対近似誤差 apxErr
は、指定された許容誤差 tol
を満たすことを目的としています。
行列スケッチの形成のために svdsketch
が従うプロセスは次のとおりです。
svdsketch
は行列スケッチを反復して形成します。各反復では新しい列を Q に、新しい行を B に追加します。新しい列と行は、ランダムなサンプル行列を使用してA
から特徴を抽出して作成されます。各反復で追加される列と行の数をBlockSize
の名前と値のペアで制御できます。それぞれの反復中、
svdsketch
はべき乗の反復を使用して Q の新しい列の直交性を向上させます。NumPowerIterations
名前と値のペアを使用してべき乗の反復の数を調整できます。行列スケッチを形成する反復は、次の場合に停止します。Q の列の数と B の行の数が
MaxSubspaceDimension
について指定された値に到達するとき、反復の回数がMaxIterations
に到達するとき、または相対近似誤差が収束 (apxErr <= tol
) するとき。収束速度を向上させるため、
svdsketch
は、apxErr
の減衰が十分でない場合にBlockSize
の指定された初期値を反復ごとに増加させる場合があります。
行列スケッチ が形成された後、svdsketch
は行列スケッチの特異値分解 (SVD) を [U1,S,V] = svd(B,'econ')
を通じて次のように計算します。
svdsketch
が指定された許容誤差に基づいて A
のいくつかの特徴をフィルターで除外できる場合、結果として得られる SVD 係数に含まれる特異値と特異ベクトルは、A
に対して完全な SVD を実行した場合よりも少なくなります。
参照
[1] Yu, Wenjian, Yu Gu, and Yaohang Li. “Efficient Randomized Algorithms for the Fixed-Precision Low-Rank Matrix Approximation.” SIAM Journal on Matrix Analysis and Applications 39, no. 3 (August 2018): 1339–1359. https://doi.org/10.1137/17M1141977.
拡張機能
バージョン履歴
R2020b で導入