Рекомендуемый пакет для обработки очень больших массивов данных и машинного обучения в R

Кажется, что R действительно разработан для обработки наборов данных, которые он может полностью вытянуть в память. Какие пакеты R рекомендуются для обработки сигналов и машинного обучения на очень больших наборах данных, которые невозможно перенести в память?

Если R - просто неправильный способ сделать это, я открыт для других надежных бесплатных предложений (например, scipy, если есть какой-то хороший способ обработки очень больших наборов данных)

 jthetzel15 июн. 2012 г., 19:54
Посмотрите на «Большие объемы памяти и нехватки памяти». подразделhigh performance computing task view на КРАН.bigmemory а такжеff два популярных пакета. Кроме того, рассмотрите возможность хранения данных в базе данных и чтения меньшими партиями для анализа.

Ответы на вопрос(5)

Решение Вопроса

Посмотрите на «Большие объемы памяти и нехватки памяти». подразделпросмотр высокопроизводительных вычислений на КРАН.bigmemory а такжеФ.Ф. два популярных пакета. Для большой памяти (и связанных сbiganalytics, а такжеbigtabulate), тосайт большой памяти имеет несколько очень хороших презентаций, виньеток и обзоров от Джея Эмерсона. Для ff я рекомендую прочесть Adler Oehlschl & # xE4; gel and коллеги & apos; отличные слайд-презентации насайт FF.

Кроме того, рассмотрите возможность хранения данных в базе данных и чтения меньшими партиями для анализа. Существует множество подходов для рассмотрения. Чтобы начать, солдат просматривает некоторые примеры вbiglm пакет, а такжеэта презентация от Томаса Ламли.

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

 John Robertson23 июл. 2012 г., 20:26
Закончился использованием BigMemory и, как правило, доволен этим.
 14 мар. 2015 г., 22:13
Но с ff, bigmemory или базами данных ... можете ли вы выполнить какую-либо операцию, предлагаемую R или любым пакетом напрямую? Или вы можете запускать только те функции, которые реализованы ff, bigmemory или базой данных? (без необходимости разбивать данные на мелкие кусочки). Например, я хочу запустить регрессию для числового файла размером 50 ГБ или рассчитать медиану. Или я хочу применить DBScan, или просто хочу создать еще один вектор, в котором каждый элемент выражается как операция со старыми BB [i] = AA [i] * AA [i-1] + AA [i-2]. Могу ли я сделать это с помощью R и ff, bigmemory или любого соединителя базы данных?

Если памяти недостаточно, одним из решений является передача данных на диск и использование распределенных вычислений. Я думаю, что RHadoop (R + Hadoop) может быть одним из решений для обработки большого количества данных.

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

Однако многие алгоритмы и особенно их реализации действительно требуют всего набора данных. Если размер набора данных соответствует вашему диску (и ограничениям файловой системы), вы можете использоватьММАП пакет, позволяющий отобразить файл на диске в память и использовать его в программе. Однако обратите внимание, что чтение и запись на диск являются дорогостоящими, и R иногда любит часто перемещать данные назад и вперед. Так что будьте осторожны.

Если ваши данные не могут быть сохранены даже на вашем жестком диске, вам необходимо использовать распределенные системы машинного обучения. Одна такая система на основе RRevolution R который предназначен длясправиться действительно большие наборы данных. К сожалению, это не с открытым исходным кодом и стоит довольно много денег, но вы можете попытаться получитьбесплатная академическая лицензия, В качестве альтернативы вы можете быть заинтересованы в JavaApache Mahout - не очень элегантное, но очень эффективное решение, основанное на Hadoop и включающее множество важных алгоритмов.

 14 мар. 2015 г., 22:16
С Revolution R вы можете применять некоторые функции к большим наборам данных, но только к функциям, реализованным в пакете Revoscaler. У вас нет универсального способа использовать любую функцию или пакет R в больших наборах данных. Например, если вы хотите запустить кластеризацию DBSCAN, вам нужно переписать весь метод с помощью основных функций, предлагаемых revoscaler (или аналогичными пакетами).

Для задач машинного обучения я могу рекомендовать использоватьbiglm пакет, используемый для «регрессии для данных, которые слишком велики для размещения в памяти». Для использования R с действительно большими данными, можно использоватьHadoop в качестве бэкэнда, а затем использовать пакетRMR выполнять статистический (или другой) анализ с помощью MapReduce на кластере Hadoop.

Я думаю, что объем данных, которые вы можете обработать, более ограничен навыками программирования, чем чем-либо еще. Хотя многие стандартные функции сосредоточены на анализе памяти, разделение ваших данных на куски уже очень помогает. Конечно, это занимает больше времени для программирования, чем сбор стандартного кода R, но часто это вполне возможно.

Разрезание данных может быть осуществлено для ознакомления с использованием read.table или readBin, которые поддерживают только чтение подмножества данных. В качестве альтернативы вы можете взглянуть на представление высокопроизводительных вычислений для пакетов, которые поставляют готовые функции из памяти. Вы также можете поместить свои данные в базу данных. Для пространственных растровых данных отличный растровый пакет обеспечивает анализ нехватки памяти.

Ваш ответ на вопрос