Каковы ограничения памяти R?

10

В обзоре « Прикладное прогнозирующее моделирование » рецензент заявляет :

Одна критика, которую я имею в отношении педагогики статистического обучения (SL), - это отсутствие соображений производительности вычислений при оценке различных методов моделирования. С его акцентом на начальной загрузке и перекрестной проверке для настройки / тестирования моделей, SL довольно интенсивно использует вычислительные ресурсы. Добавьте к этому повторную выборку, встроенную в такие методы, как пакетирование и бустинг, и у вас появится призрак вычислений для контролируемого изучения больших наборов данных. Фактически, ограничения памяти R накладывают довольно жесткие ограничения на размер моделей, которые можно уместить с помощью самых эффективных методов, таких как случайные леса. Хотя SL хорошо справляется с калибровкой производительности модели по небольшим наборам данных, было бы неплохо понять производительность в сравнении с вычислительными затратами для больших данных.

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

просчеты
источник
Также см. Подходит ли язык R для больших данных .
Амир Али Акбари

Ответы:

10

Как указал Константин, R выполняет все свои вычисления в системной памяти, т.е. в оперативной памяти. Следовательно, объем оперативной памяти является очень важным ограничением для ресурсоемких операций в R. Преодолев это ограничение, в наши дни данные хранятся в системах HDFS, где данные не загружаются в память и вместо этого запускается программа, программа переходит к данным и выполняет операции, тем самым преодолевая ограничения памяти. RHadoop ( https://github.com/RevolutionAnalytics/RHadoop/wiki ) - это разъем, который вы ищете.

В связи с воздействием на алгоритмы, которые требуют значительных вычислительных ресурсов, метод случайных лесов / деревьев решений / ансамблей для значительного объема данных (минимум 50 000 наблюдений в моем опыте) занимает много памяти и значительно медленнее. Чтобы ускорить процесс, распараллеливание - это путь, а распараллеливание изначально доступно в Hadoop! Вот где Hadoop действительно эффективен.

Так что, если вы собираетесь использовать ансамблевые методы, которые требуют значительных вычислительных ресурсов и работают медленно, вам нужно попробовать систему HDFS, которая дает значительное улучшение производительности.

Бинга
источник
1
+1 Спасибо, что нашли время улучшить существующий ответ, и, по моему мнению, ваш ответ теперь является лучшим ответом, я выбрал ваш ответ в качестве ответа. Ура!
промахи
Рад ответить!
Бинга
8

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

Константин В. Салихов
источник
3

Эта критика больше не оправдана:

Хотя верно, что большинство стандартных и наиболее уважаемых библиотек R были ограничены вычислениями в памяти, растет число специализированных библиотек для работы с данными, которые не помещаются в память.
Например, для случайных лесов в больших наборах данных у вас есть библиотека bigrf. Более подробная информация здесь: http://cran.r-project.org/web/packages/bigrf/

Другая область роста - это связь R с такими средами больших данных, как hadoop, что открывает еще один мир возможностей.

nassimhddd
источник