R имеет много библиотек, которые предназначены для анализа данных (например, JAGS, BUGS, ARULES и т. Д.), И упоминается в популярных учебниках, таких как: J. Krusche, Doing Bayesian Data Analysis; Б.Ланц, "Машинное обучение с R".
Я видел рекомендацию в 5 ТБ для набора данных, который следует рассматривать как большие данные.
Мой вопрос: подходит ли R для того объема данных, который обычно встречается в проблемах с большими данными? Есть ли стратегии, которые следует использовать при использовании R с таким размером набора данных?
Ответы:
На самом деле это происходит вокруг. В книге R в двух словах даже есть раздел об использовании R с Hadoop для обработки больших данных. Есть некоторые обходные пути, которые необходимо выполнить, потому что R выполняет всю свою работу в памяти, поэтому вы в основном ограничены объемом доступной вам оперативной памяти.
Зрелым проектом для R и Hadoop является RHadoop
RHadoop был разделен на несколько подпроектов: rhdfs, rhbase, rmr2, plyrmr и quickcheck ( wiki ).
источник
Основной проблемой при использовании R для больших наборов данных является ограничение ОЗУ. Причина сохранения всех данных в оперативной памяти заключается в том, что они обеспечивают гораздо более быстрый доступ и манипулирование данными, чем при хранении на жестких дисках. Если вы готовы принять удар по производительности, то да, это довольно практично работать с большими наборами данных в R .
источник
Несколько хороших ответов здесь. Я хотел бы присоединиться к обсуждению, добавив следующие три примечания :
Акцент в вопросе об объеме данных при обращении к « Большим данным» , безусловно, понятен и обоснован, особенно если учесть проблему роста объема данных, опережающую экспоненциальный рост технологических возможностей в соответствии с Законом Мура ( http://en.wikipedia.org/wiki/Moore % 27s_law ).
Сказав это, важно помнить о других аспектах концепции больших данных. Основано на определении Gartner (выделено мое - AB): « Большие данные - это информационные ресурсы большого объема , высокой скорости и / или большого разнообразия, которые требуют новых форм обработки для обеспечения улучшенного принятия решений, обнаружения и оптимизации процессов». (обычно упоминается как " модель 3Vs "). Я упоминаю об этом, потому что это заставляет исследователей данных и других аналитиков искать и использовать пакеты R, которые фокусируются не только на объемных аспектах больших данных (что обеспечивается богатством огромной экосистемы R ).
Хотя в существующих ответах упоминаются некоторые пакеты R, связанные с большими данными, для более полного охвата , я бы рекомендовал обратиться к представлению задач CRAN «Высокопроизводительные и параллельные вычисления с R» ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), в частности, разделы «Параллельные вычисления: Hadoop» и «Большие объемы памяти и нехватка памяти» .
источник
R отлично подходит для "больших данных"! Однако вам необходим рабочий процесс, поскольку R ограничено (с некоторым упрощением) объемом оперативной памяти в операционной системе. Подход, который я
RSQLite
выбрал, заключается во взаимодействии с реляционной базой данных (см. Пакет для создания и взаимодействия с базой данных SQLite), выполнении запросов в стиле SQL, чтобы понять структуру данных, а затем извлекать определенные подмножества данных для вычислительно интенсивной работы. статистический анализ.Однако это всего лишь один из подходов: существуют пакеты, которые позволяют вам взаимодействовать с другими базами данных (например, Monet) или выполнять анализ в R с меньшими ограничениями памяти (например, см.
pbdR
).источник
Учитывая другие критерии, я думаю, что в некоторых случаях использование Python может быть намного лучше, чем R для больших данных. Я знаю широко распространенное использование R в учебных материалах по науке о данных и хорошие библиотеки анализа данных, доступные для него, но иногда это зависит только от команды.
По моему опыту, для людей, уже знакомых с программированием, использование Python обеспечивает гораздо большую гибкость и повышение производительности по сравнению с таким языком, как R, который не так хорошо разработан и мощен по сравнению с Python с точки зрения языка программирования. Как доказательство, на курсе по интеллектуальному анализу данных в моем университете лучший финальный проект был написан на Python, хотя у остальных есть доступ к богатой библиотеке анализа данных R. То есть иногда общая производительность (с учетом учебных материалов, документации и т. Д.) Для Python может быть выше, чем у R, даже при отсутствии специализированных библиотек анализа данных для Python. Кроме того, есть несколько хороших статей, объясняющих быстрые темпы Python в науке о данных: Python Displacing R и Rich Scientific Data Structures в Python что может вскоре заполнить пробел в доступных библиотеках для R.
Другая важная причина, по которой не используется R, заключается в том, что при работе с реальными проблемами больших данных, вопреки академическим проблемам, существует большая потребность в других инструментах и методах, таких как анализ данных, очистка, визуализация, удаление из Интернета и многие другие, которые гораздо проще, используя язык программирования общего назначения. Это может быть причиной того, что языком по умолчанию, используемым во многих курсах Hadoop (включая онлайн-курс Udacity ), является Python.
Редактировать:
Недавно DARPA также инвестировала 3 миллиона долларов, чтобы помочь финансировать возможности обработки и визуализации данных Python для работы с большими данными, что является явным признаком будущего Python в области больших данных. ( подробности )
источник
reshape2
,plyr
и сейчасdplyr
), и я не думаю, что вы можете сделать лучше, чемggplot2
/ggvis
для визуализацииR отлично подходит для большого анализа. Как уже упоминалось, есть новые адаптации для больших данных, такие как MapR, RHadoop и масштабируемые версии RStudio.
Однако, если вас интересуют библиотеки, следите за Spark. Spark был создан для больших данных и НАМНОГО быстрее, чем один Hadoop. Он имеет значительно растущие библиотеки машинного обучения, SQL, потоковой передачи и графов. Таким образом, позволяя выполнять, если не весь анализ, в рамках фреймворка (с многоязычными API, я предпочитаю Scala) без необходимости перемещаться между языками / инструментами.
источник
Как отмечалось в других ответах, R можно использовать вместе с Hadoop и другими распределенными вычислительными платформами для масштабирования до уровня «больших данных». Однако, если вы не привязаны к R специально, но хотите использовать «R-подобную» среду, Incanter - это проект, который может хорошо работать для вас, поскольку он является родным для JVM (на основе Clojure) и не не имеет "несоответствия импеданса" между собой и Hadop, которое имеет R То есть из Incanter вы можете вызывать нативные API Java Hadoop / HDFS без необходимости проходить через мост JNI или что-то еще.
источник
Я далеко не эксперт, но мое понимание предмета говорит мне, что R (превосходный в статистике) и, например, Python (превосходный в некоторых из тех вещей, где R отсутствует) довольно хорошо дополняют друг друга (как указывалось в предыдущих постах) ,
источник
Я думаю, что на самом деле существует множество инструментов для работы с большими данными в R. sparklyr будет отличным игроком в этой области. sparklyr - это интерфейс R к Apache Spark, который позволяет подключаться к локальным и удаленным кластерам, предоставляя серверную часть dplyr. Можно также полагаться на библиотеки машинного обучения Apache Spark. Кроме того, параллельная обработка возможна с несколькими пакетами, такими как rmpi и snow (контролируемые пользователем) или doMC / foreach (на основе системы).
источник