2012-02-25 3 views
0

私は一部のデータベースでMath.NETのSingular Decompositionを使用してPCA分析を行っています。列と行の量に応じて、アルゴリズムは無期限に実行され続けます(つまり、収束していないと仮定しています)。数値ライブラリー(計算)に特異値分解を解く際には、どのような制限がありますか?

私はMath.NETのSVD実装がLAPACKに基づいていると思います。

私は、このアルゴリズムまたはこれを引き起こす可能性のあるデータセットの特性に何らかの制限があるかどうか疑問に思っています。

PS:データは各属性間の共分散があまりないようです。

+2

データセットのサイズはどれくらいですか?マトリックスのサイズはどれくらいですか? – duffymo

+0

aprox以上。 70列と70行私は収束しません。 – Jonas

答えて

1

特異値分解を計算するためのアルゴリズムの大部分(すべてではないにしても)で、アルゴリズムが終了するという保証はありませんが、そうでないことはごくまれです。 LAPACKのような良い実装は、一定回数の繰り返しの後に停止し、エラーを返します。

あなたのケースでは、約100のサイズの行列があります(約70を超えると言うと、それほど多くないと思います)。SVDを計算するには、数秒かかることがあります。時間がかかりすぎると、ライブラリが使用するアルゴリズムが収束しない極端なまれなケースの1つになります。あなたがバグを見つけた可能性が高いと言いたいのですが、その場合はおそらくライブラリの保守担当者に連絡してください。

関連する問題