タグ付けされた質問 「svd」

10
SVDの堅牢なアルゴリズム
行列のSVDを計算するための簡単なアルゴリズムは何ですか?2×22×22 \times 2 理想的には、数値的に堅牢なアルゴリズムが欲しいのですが、単純な実装とそれほど単純ではない実装の両方を見てみたいと思います。Cコードが受け入れられました。 論文やコードへの参照はありますか?

3
特異値分解のアルゴリズムに関する最新技術は何ですか?
私は可能な限りシンプルなパッケージである程度の線形代数機能を提供するためにヘッダーのみのマトリックスライブラリに取り組んでおり、現在の最先端が何であるかを調査しようとしています:SVDの計算複雑なマトリックス。 私は、2相分解、2重対角化とそれに続く特異値計算を行っています。今、私はbidiagonalization(私はLAPACKは同様にこれを使用すると信じて)、と私は考えるために世帯主の方法を使用していることについての、現在につれて良いとして(誰かがを知っているしない限り、そのためのアルゴリズム...) 。 O(N2)O(N2)\mathcal{O}(N^2) 特異値の計算は私のリストの次にあり、私はこれを行うための一般的なアルゴリズムが何であるかについてのループからやや外れています。ここで、研究は複雑性との直交性を保証する逆反復法に向かっていることを読みました。私はそれまたは他の進歩について聞いてみたいです。O(N)O(N)\mathcal{O}(N)

1
純粋に回転する最小二乗一致
誰でも次の最小二乗問題の方法を推奨できますか? 最小化するを見つける:、ここでRはユニタリ(回転)マトリックス。R∈R3×3R∈R3×3R \in \mathbb{R}^{3 \times 3}∑i=0N(Rxi−bi)2→min∑i=0N(Rxi−bi)2→min\sum\limits_{i=0}^N (Rx_i - b_i)^2 \rightarrow \minRRR ∑i=0N(Axi−bi)2→min∑i=0N(Axi−bi)2→min\sum\limits_{i=0}^N (Ax_i - b_i)^2 \rightarrow \min(任意のA∈R3×3A∈R3×3A \in \mathbb{R}^{3 \times 3})を最小化することにより、近似解を得ることができますマトリックスAAAおよび: SVDの計算:A=UΣVTA=UΣVTA = U \Sigma V^T、ΣΣ\Sigmaをドロップし、R \ approx UV ^ Tを近似R≈UVTR≈UVTR \approx U V^T 極分解の計算:A=UPA=UPA = U P、スケールのみの対称(および私の場合は正定値)PPPをドロップし、R \ approx Uを近似するR≈UR≈UR \approx U QR分解も使用できますが、アイソメトリックではありません(座標系の選択に依存します)。 少なくともおおよそですが、上記の2つの方法よりも優れた近似でこれを行う方法を知っている人はいますか?

2
切り捨てられたSVDの計算、一度に1つの特異値/ベクトル
特異値を1つずつ計算する切り捨てSVDアルゴリズムはありますか? 私の問題:大きな密行列の最初の特異値(および特異ベクトル)を計算したいのですが、適切な値がわかりません。は大きいため、効率上の理由から、後で最小のSVを切り捨てるためだけに完全なSVDを評価するのではなく、kkkMMMkkkMMM 理想的には、特異値を最大()から最小()まで連続的に計算する方法があるでしょう。そうすれば、があるしきい値を下回った場合に、番目の特異値を計算した後で計算を停止することができます。σ1、σ2、…σ1,σ2,…\sigma_1, \sigma_2,\ldotsσ1σ1\sigma_1σんσn\sigma_nkkkσk/ σ1σk/σ1\sigma_k/\sigma_1 そのようなアルゴリズムは存在しますか(できればPython実装で)?私のグーグル検索では、kをパラメーターとして使用する切り捨てられたSVD関数のみを見つけたので、アプリオリに推測する必要があります。


2
SVDを安定させるためにどれだけの正則化を追加しますか?
インテルMKLのSVD(dgesvdSciPyを介して)を使用していて、マトリックスの条件が悪い/フルランクではない場合float32と精度を変更すると、結果が大幅に異なることに気付きましたfloat64。結果がfloat32-> float64変更の影響を受けないようにするために追加する必要がある正則化の最小量に関するガイドはありますか? 際、特に、、Iはその参照L ∞ノルムV T Xの Iとの間の精度を変更した場合約1による移動とを。AのL 2ノルムは10 5であり、合計784のうち約200のゼロ固有値があります。A = UD VTA=UDVTA=UDV^{T}L∞L∞L_\inftyVTバツVTXV^{T}Xfloat32float64L2L2L_2あAA10510510^5 上のSVDをやっでλ = 10 - 3は違いワニスを作りました。λ I+ AλI+A\lambda I + Aλ = 10− 3λ=10−3\lambda=10^{-3}

4
部分特異値分解(SVD)のメモリー効率の高い実装
モデルの縮小のために、行列の最大20の特異値に関連付けられた左特異ベクトルを計算したい A ∈ RN、kあ∈RN、kA \in \mathbb R^{N,k}、 どこ N≈ 106N≈106N\approx 10^6 そして K ≈ 103k≈103k\approx 10^3。残念ながら、私のマトリックスああA どんな構造もなしで密になります。 このサイズのランダムマトリックスに対してPython svdのnumpy.linalgモジュールからルーチンを呼び出すだけの場合、メモリエラーが発生します。これは、V∈ RN、NV∈RN、NV\in \mathbb R^{N,N} 分解のために A = VSUあ=VSUA = VSU。 この落とし穴を回避するアルゴリズムが周りにありますか?たとえば、非ゼロの特異値に関連付けられた特異ベクトルのみを設定します。 計算時間と精度をトレードする準備ができています。

1
行列の
与えられた大行列あAAと固有値σ1≥ σ2≥ …σ1≥σ2≥…\sigma_1\ge \sigma_2 \ge \dotsc 、私は、これらの値のサブセットのみを決定言いたいσ5、σ8σ5,σ8\sigma_5,\sigma_8およびσ19σ19\sigma_{19}。これを実行できるアルゴリズムはありますか、または上位19の固有値を実行できる最高のものを見つけていますか?

4
MATLABでのインクリメンタルSVD実装
MATLABでインクリメンタルSVDを実装したライブラリ/ツールボックスはありますか?私はこのペーパーを実装しました、それは速いですがうまくいきません。私はこれを試しましたが、これでもエラーが速く伝播します(5〜10ポイントの更新内でエラーが高くなります)。

3
特異値の受け入れ/拒否の基準は何ですか?
特異値分解を使用してシステムを解いています。特異値(スケーリング前)は次のとおりです。 1.82277e+29 1.95011e+27 1.15033e+23 1.45291e+21 4.79336e+17 7.48116e+15 8.31087e+12 1.71838e+11 5.63232e+08 2.17863e+08 9.02783e+07 1.72345e+07 1.73889e+05 8.09382e+02 2.16644e+00 すべての特異値と、それに関連する私のソリューションベクトルへの寄与を受け入れると、結果が悪くなることがわかりました。すべてを最大数でスケーリングし、次の特異値を生成します。 1.0 1.06986e-02 6.31091e-07 7.97089e-09 2.62971e-12 4.10428e-14 4.55948e-17 9.42732e-19 3.08998e-21 1.19523e-21 4.95281e-22 9.45510e-23 9.53980e-25 4.44040e-27 1.18854e-29 最善の解決策は、私が最後の二つが含まれている場合に悪くなり始めると、わずか約良好となる10−1910−1910^{-19}用語。 最後の2項を含めると、精度が大幅に低下します。何故ですか?特異値を含める/含めないための基準は何ですか? m×nm×nm \times nm≫nm≫nm \gg nA⋅X=BA⋅X=BA\cdot X = BAAAA⊤AX=A⊤XA⊤AX=A⊤XA^\top A X = A^\top X 私のソリューションへの回答は、ノイズの多いデータをどれだけよく近似しているかで判断しています。 また、「良好」な適合であっても、ゼロに近いとうまく適合しないことにも気づきました(データの範囲はから10です)。何故ですか?−10−10-10101010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.