Большая матрица: решить (crossprod (X)), когда dim (X) = 100 000: 5000 - PullRequest
3 голосов
/ 20 апреля 2011

Мне нужно выполнить простую двухэтапную регрессию наименьших квадратов для больших матриц данных.Это просто требует некоторых команд crossprod() и solve(), но матрицы имеют размеры 100 000 на 5000 матриц.Насколько я понимаю, что удержание такой матрицы в памяти заняло бы чуть меньше 4 ГБ памяти.К сожалению, моя 64-разрядная машина Win7 имеет только 8 ГБ оперативной памяти.Когда я пытаюсь манипулировать соответствующими матрицами, я получаю обычное сообщение «невозможно выделить вектор размера».

Я рассмотрел несколько вариантов, таких как пакеты ff и bigmemory.Однако базовые функции R для матричных операций, которые мне нужны, поддерживают только обычный тип объекта матрицы, а не тип bigmatrix.

Кажется, что возможно расширить код с biglm(), ноУ меня плотный график работы над этим проектом, поэтому я хотел проверить со всеми вами, чтобы увидеть, существует ли готовое решение для подобных проблем.Извинения, если это было обращено ранее (я не мог найти это), или если вопрос слишком общий.

1 Ответ

2 голосов
/ 20 апреля 2011

Да, готовое решение существует в biglm , пакете, который вы уже определили. Линейная регрессия может работать со схемой обновления; это базовое свойство реализовано в пакете.

Скопируйте ваши данные на диск, скажем, в SQLite, изучите документацию по пакету и, скажем, выполните 10 кусков по 10000 каждый.

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