обработка больших не разреженных матриц для вычисления SVD

#python-3.x #numpy #large-data #svd #eigenvalue

#python-3.x #numpy #большие данные #svd #собственное значение

Вопрос:

У меня есть большая матрица (прямо сейчас около 450000 x 50, может быть, даже больше), и я хочу вычислить ее разложение по SVD. Матрица не разреженная, и numpy, похоже, не может с ней справиться и завершает работу с ошибкой памяти.

Я попробовал использовать np.float16, но это не помогло. пакет таблиц python, похоже, тоже не может помочь (поскольку мне нужно использовать всю матрицу позже, чтобы найти собственные значения).

У кого-нибудь из вас есть идея, как я могу вычислять и использовать массивные матрицы?

Комментарии:

1. Пожалуйста, опубликуйте код, который вы пробовали до сих пор, так будет намного проще помочь вам.

2. Распространенным подходом к решению таких проблем является создание эскизов . Одним из примеров является аппроксимация вашей матрицы путем выборки некоторых столбцов, а затем вычисления SVD на этой матрице меньшего размера (после соответствующего масштабирования). Это , пожалуй, самое известное введение в тему. Если вам нужно более подробное объяснение, вы могли бы попробовать опубликовать в math stackexchange.

3. На данный момент я использовал быстрое решение, применив выделение объектов (по строкам). Я попробую сделать набросок, если мое решение не будет работать должным образом. @tch Спасибо!