Несколько общий вопрос.
В каком виде работают с большими матрицами?
Под словом большие подразумеваются матрицы, которые не помещаются в оперативную память.
Как хранить матрицы? Есть, например, формат HDF5(более продвинутое PyTables для python).
В идеале хотелось бы, чтобы строки матрицы можно было бы добавлять(т.е. было бы что то типа resize/append)
Я знаю, что в python и matlab есть свои варианты memory-mapped file.
В R есть тоже есть свои пакеты для работы с большими данными.
Понятно, что, скорее всего, можно было бы для каждого конкретного случая подобрать отдельный специализированный умный алгоритм(out-of-core), но хотелось бы, чтобы матрица хранилась на диске и к ней был прозрачный доступ, как к обычной матрице в памяти. Получается некоторая аналогия ram<->cache ram<->hdd.
Есть еще hadoop (mapreduce), но это уже несколько из другой области.
Может быть, вы неверно ставите задачу? Обычно поместить матрицу в память не является проблемой. Если все же проблема - работают minibatch-методы, либо что-то вроде online-обучения, где данные могут скармливаться в модель последовательно небольшими кусками.
я знаю что есть minibatch, out-of-core, randomized, stream алгоритмы. Но это именно вопрос о дизайне алгоритма, а я именно про то что я описал, чтобы программа не выдавала ошибку out-of-memory, а пусть долго, но работала.Причем это еще полезно, если я хочу чтобы моя программа использовала ограниченные ресурсы(например 200 мб).
Имхо.Способ хранения в вашем случае очень тесно перекликается с теми алгоритмами, которыми вы пользуетесь для обработки матриц. В каждом конкретном случае разная структура данных может быть по разному применима для разных алгоритмов, или вообще быть не применима.