svdsketch
低ランクの行列スケッチの SVD の計算
構文
説明
例
入力引数
名前と値の引数
出力引数
ヒント
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 で導入
