Какие ограничения существуют при решении разложения сингулярных значений в числовой библиотеке (вычислительной)? - PullRequest
0 голосов
/ 26 февраля 2012

Я использую Math.NET 'Singular Decomposition для выполнения анализа PCA в некоторой базе данных. В зависимости от количества столбцов и строк алгоритм продолжает работать неопределенно (поэтому я предполагаю, что он не сходится).

Я думаю, что реализация SVD в Math.NET основана на LAPACK.

Так что мне интересно, есть ли какие-либо ограничения в этом алгоритме или характеристики моего набора данных, которые могут вызвать это.

PS .: данные не имеют большой ковариации между каждым атрибутом.

1 Ответ

1 голос
/ 26 февраля 2012

При использовании большинства (если не всех) алгоритмов для вычисления разложения по сингулярным значениям нет гарантии, что алгоритм завершится, хотя это крайне редко случается. Хорошие реализации, такие как LAPACK, остановятся после определенного числа итераций и вернут ошибку.

В вашем случае с матрицами размером около 100 (я полагаю, когда вы говорите больше, чем приблизительно 70, вы имеете в виду не очень больше), для вычисления SVD может потребоваться не более нескольких секунд. Если это занимает больше времени, ваша матрица, возможно, является одним из крайне редких случаев, когда алгоритм, используемый библиотекой, не сходится. Я бы сказал, что более вероятно, что вы нашли ошибку, и в этом случае вам, вероятно, следует обратиться к сопровождающим библиотеки.

...