Вопрос

R имеет много библиотек, которые направлены на анализ данных (например, Jags, Bugs, Arules и т. Д.), И упоминается в популярных учебниках, таких как: J.Krusche, анализ байесовских данных; Б.Ланц, "Машинное обучение с R".

Я видел руководство в 5 ТБ для набора данных, который должен рассматриваться как большие данные.

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

Это было полезно?

Решение

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

Зрелый проект для R и Hadoop Rhadoop

Rhadoop был разделен на несколько субпроектов, RHDFS, RHBASE, RMR2, PLYRMR и QuickCheck (вики).

Другие советы

Основной проблемой с использованием R для больших наборов данных является ограничение оперативной памяти. Причина хранения всех данных в ОЗУ заключается в том, что он обеспечивает гораздо более быстрый доступ и манипуляции с данными, чем хранение на HDD. Если вы готовы получить удар по производительности, то да, это довольно практично работать с Большие наборы данных в R.

  • Пакет RODBC: позволяет подключаться к внешнему БД из R, чтобы получить и обрабатывать данные. Следовательно, данные манипулируется ограничено вашей оперативной памятью. Общий набор данных может стать намного больше.
  • Пакет FF позволяет использовать наборы данных больше, чем RAM, используя страницы отображения памяти.
  • BIGLM: Он создает обобщенные линейные модели на больших данных. Он загружает данные в память в куски.
  • BigMemory: пакет R, который позволяет мощный и экономичный параллельный анализ и интеллектуальный анализ данных массивных наборов данных. Это позволяет хранить большие объекты (матрицы и т. Д.) В памяти (на ОЗУ), используя объекты внешнего указателя для их обозначения.

Некоторые хорошие ответы здесь. Я хотел бы присоединиться к обсуждению, добавив следующие три заметки:

  1. Акцент вопроса на Объем данных При ссылке на Большие данные безусловно, понятен и действителен, особенно с учетом проблема роста объема данных опережая экспоненциальный рост технологических возможностей на Закон Мура (http://en.wikipedia.org/wiki/moore%27s_law).

  2. Сказав это, важно помнить о других аспектах концепции больших данных. На основе ГартнерОпределение (акцент mine - ab): "Большие данные в приоритете объем, высокая скорость, и/или высокий разнообразие Информационные активы, которые требуют новых форм обработки, чтобы обеспечить улучшение принятия решений, обнаружение понимания и оптимизацию процессов »(обычно называется«Модель 3VS") Я упоминаю об этом, потому что это заставляет ученых данных и других аналитиков искать и использовать пакеты R, которые фокусируются на кроме тома аспекты больших данных (включены богатство огромного R экосистема).

  3. В то время как существующие ответы упоминают некоторые пакеты R, связанные с большими данными, для более Комплексное покрытие, Я бы порекомендовал обратиться к Взгляд задачи CRAN "Высокопроизводительные и параллельные вычисления с R" (http://cran.r-project.org/web/views/highperformancecomputing.html), в частности, разделы "Параллельные вычисления: Hadoop" а также "Большая память и данные вне памяти".

R отлично подходит для "больших данных"! Тем не менее, вам нужен рабочий процесс, так как R ограничен (с некоторым упрощением) количеством оперативной памяти в операционной системе. Подход, который я использую, заключается в взаимодействии с реляционной базой данных (см. RSQLite Пакет для создания и взаимодействия с помощью Databse SQLite) запустите запросы в стиле SQL, чтобы понять структуру данных, а затем извлечь определенные подмножества данных для вычисления статистического анализа.

Однако это только один подход: есть пакеты, которые позволяют вам взаимодействовать с другими базами данных (например, MONET) или анализом запуска в R с меньшими ограничениями памяти (например, см. pbdR).

Учитывая еще один критерий, я думаю, что в некоторых случаях использование Python может быть намного превосходить R для больших данных. Я знаю широко распространенное использование R в образовательных материалах Data Science и доступных для него библиотеках анализа данных, но иногда это только зависит от команды.

По моему опыту, для людей, уже знакомых с программированием, использование Python обеспечивает гораздо большую гибкость и повышение производительности по сравнению с таким языком, как R, который не так хорошо разработан и мощный по сравнению с Python с точки зрения языка программирования. В качестве доказательства, в курсе анализа данных в моем университете, лучший окончательный проект был написан в Python, хотя другие имеют доступ к богатой библиотеке анализа данных R. То есть иногда общая производительность (учитывая учебные материалы, документацию и т. Д.) Для Python может быть лучше, чем R, даже в отсутствии библиотек анализа данных специального назначения для Python. Кроме того, есть несколько хороших статей, объясняющих быстрые темпы питона в науке о данных: Python вытесняет r а также Богатые научные структуры данных в Python Это может вскоре заполнить разрыв доступных библиотек для Р.

Другая важная причина не использования R - это работа с проблемами с большими данными реального мира, вопреки только академическим проблемам, существует много необходимости для других инструментов и методов, таких как анализ данных, очистка, визуализация, сеть и многие другие, которые намного проще использовать язык программирования общего назначения. Возможно, именно поэтому язык по умолчанию используется во многих курсах Hadoop (включая Udacity's онлайн курс) это питон.

Редактировать:

Недавно DARPA также инвестировала 3 миллиона долларов, чтобы помочь финансировать возможности обработки и визуализации данных Python для рабочих мест с большими данными, что явно является признаком будущего Python в больших данных. (Детали)

R отлично подходит для большого анализа. Как упоминалось, существуют новые адаптации для больших данных, таких как MAPR, Rhadoop и масштабируемые версии RStudio.

Однако, если вы озаботите библиотеки, следите за искра. Spark была создана для больших данных и намного быстрее, чем Hadoop. Он имеет значительно растущее машинное обучение, SQL, потоковую передачу и графические библиотеки. Таким образом, позволяя многое, если не весь анализ, должен быть проведен в рамках (с несколькими языковыми API, я предпочитаю Scala) без необходимости перетасовать между языками/инструментами.

Как отмечались другие ответы, R может использоваться вместе с Hadoop и другими распределенными вычислительными платформами для масштабирования его до уровня «больших данных». Однако, если вы не приговорены к R конкретно, но готовы использовать «R-подобную» среду, Инсантер это проект, который может хорошо работать для вас, так как он является родным для JVM (на основе Clojure) и не имеет «несоответствия импеданса» между собой и Hadop, который имеет R. То есть, из инсанта, вы можете вызвать API -интерфейсы уроженцев Java Hadoop / HDFS, не проходившего через мост JNI или что -то в этом роде.

Я далеко от эксперта, но мое понимание предмета говорит мне, что R (превосходно по статистике) и, например, Python (превосходно в нескольких из тех вещей, где R не хватает) довольно хорошо дополняют друг друга (как указывается предыдущими посты) Анкет

Я думаю, что на самом деле существует множество инструментов для работы с большими данными в R. Sparklyr, будет отличным игроком в этой области. Sparklyr-это интерфейс R для Apache Spark и позволяет соединяться с локальными и удаленными кластерами, обеспечивая конец DPLYR. Можно также полагаться на библиотеки машинного обучения Apache Spark. Кроме того, параллельная обработка возможна с несколькими пакетами, такими как RMPI и снег (контролируемый пользователем) или DOMC/Foreach (система на основе).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top