特異値分解(SVD)を計算するための効率的なアルゴリズムとは何ですか?


17

主成分分析に関するウィキペディアの記事には、

マトリックスX T Xを形成することなくのSVDを計算する効率的なアルゴリズムが存在するため、SVDの計算は、少数のコンポーネントのみが必要な場合を除き、データマトリックスから主成分分析を計算する標準的な方法になりました。XXTX

誰かがこの記事で話している効率的なアルゴリズムを教えてもらえますか?参照はありません(この計算方法を提案している記事へのURLまたは引用は良いでしょう)。


4
特異値分解アルゴリズムに関するGoogle検索では、関連情報を強調表示することができます。
whuber

1
PCAのSVDの前に平均値を削除することを忘れないでください!
Memming

Lanczos SVDをお試しください!
ciri

回答:


12

SVDの計算の背後にある主な機能は、QRアルゴリズムです。一般的なN列の行列Aの特異値分解を計算する多くの異なるアルゴリズムがあると述べまし。(IntelのMKLのドキュメントから)ここで入手できる問題の優れた回路図は次のとおりです。MNAここに画像の説明を入力してください

ユースケースに応じてわかるように、さまざまなアプローチがあります(ルーチンの命名規則については、こちらをご覧ください)。これは、たとえば、Householder削減Givens回転よりも高額になるマトリックス形式があるためです(QRを取得する2つの「明白な」方法を挙げます)。この問題に関する標準的なリファレンスは、GolubとVan Loanのマトリックス計算です(少なくとも第3版を使用することをお勧めします)。Åも見つけました。Björckの最小二乗問題に対する数値解法そのことに非常に優れたリソース。SVDは本の主要な焦点ではありませんが、SVDの使用をコンテキスト化するのに役立ちます。

問題について一般的なアドバイスを1つ与えなければならない場合、既に数値線形代数のいくつかのクラスを正常に取得し、何をしているのかがわかっている場合を除き、独自のSVDアルゴリズムを記述しないでください。直感に反するように聞こえますが、実際には、多くの問題が発生する可能性があり、最終的に(せいぜい)次善の実装(間違っていない場合)になります。そこ問題に関するいくつかの非常に良い無料のスイートには、(例えば。アイゲンはアルマジロTrilinosは、いくつかの名前を付けます。)


XA

1
MNAXTX

2
うん、私は間違っていた:QRは正方行列に制限されていません。+1、ところで。この質問は、pcaタグで最も多く投票された未回答の質問の1つであったため、最終的に回答されたのは嬉しいことです。
アメーバは、モニカの復活を14

あなたの答えは、さまざまな反復アルゴリズムに言及していません。それは意図的でしたか?誰かが反復SVDアルゴリズムについて質問しました。切り捨てられたSVDを計算するための高速アルゴリズムはどれですか?を参照してください、概要を提供するために回答を投稿しました。おそらく、少なくとも答えを相互にリンクする必要があります。そして、QRアルゴリズムと反復アルゴリズムのいくつかの議論によってあなたのものを拡張できれば、それは確かに素晴らしいでしょう。
アメーバは、モニカーを復活

いいえ、偶然でした。あなたはあなたの投稿であなた自身の質問に答えました。切り捨てられたSVDは、本質的に切り捨てられた固有分解です(たとえばARPACKを参照)。いくつかの細かい違いがありますが、それらは素晴らしいです。一部のソフトウェア(MATLABなどsvds)は、切り捨てられた固有分解(eigs)ルーチンのラッパーとして切り捨てられたSVD関数を使用するだけです。
usεr11852が復活モニック言う
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.