R言語はビッグデータに適していますか


48

Rには、データ分析(JAGS、BUGS、ARULESなど)を目的とした多くのライブラリがあり、J.Krusche、Doing Bayesian Data Analysisなどの一般的な教科書で言及されています。B.ランツ、「Rによる機械学習」。

データセットをビッグデータと見なすための5TBのガイドラインを見てきました。

私の質問は次のとおりです。Rはビッグデータの問題で一般的に見られるデータ量に適していますか?このサイズのデータ​​セットでRを使用するときに使用する戦略はありますか?


4
以下の回答に加えて、覚えておくべき良いことは、Rがビッグデータに関して必要とするほとんどのことは、生ログと比較して非常に小さい要約データセットで実行できるという事実です。また、生ログからのサンプリングは、生ログの行と行を解析するという頭痛の種なしで、Rを分析にシームレスに使用する方法を提供します。たとえば、作業中の一般的なモデリングタスクでは、定期的にmap reduceを使用して、32 GBの生ログをモデリング用の28MBのユーザーデータに集約します。
cwharland

回答:


40

実際、これは近づいています。R in a Nutshellの本には、ビッグデータ処理のためにRをHadoopで使用するセクションさえあります。Rはメモリ内のすべての作業を行うため、実行する必要がある回避策がいくつかあります。したがって、基本的に、使用可能なRAMの量に制限されます。

RとHadoopの成熟したプロジェクトはRHadoopです

RHadoopは、いくつかのサブプロジェクト、rhdfs、rhbase、rmr2、plyrmr、およびquickcheck(wiki)に分割されています


しかし、RをHadoopで使用すると、この制限(メモリ内で計算を行う必要がある)を克服できますか?
フェリペアルメイダ14年

RHadoopはこの制限を克服しています。こちらのチュートリアル:github.com/RevolutionAnalytics/rmr2/blob/master/docs/…でわかりやすく説明しています。mapreduceの考え方にシフトする必要がありますが、Rのパワーをhadoop環境に提供します。
スティーブカレスタッド14年

2
言及する価値のある2つの新しい選択肢は、SparkRdatabricks.com / blog /2015 / 06 /09 / とh2o.ai h2o.ai/productの両方がビッグデータに適しています。
wacax

30

大きなデータセットにRを使用する場合の主な問題は、RAMの制約です。すべてのデータをRAMに保持する理由は、HDDに保存するよりもはるかに高速なアクセスとデータ操作を提供するためです。パフォーマンスに影響を与えたい場合は、はい、R大規模なデータセットを操作することは非常に実用的です。

  • RODBCパッケージ:Rから外部DBに接続して、データを取得および処理できます。したがって、操作されるデータはRAMに制限されます。全体のデータセットはさらに大きくなる可能性があります。
  • ffパッケージでは、メモリマップページを利用することにより、RAMよりも大きなデータセットを使用できます。
  • BigLM:ビッグデータで一般化線形モデルを構築します。データをチャンクでメモリにロードします。
  • bigmemory:強力でメモリ効率の高い並列分析と大量のデータセットのデータマイニングを可能にするRパッケージ。外部ポインタオブジェクトを使用して、それらを参照する大きなオブジェクト(行列など)をメモリ(RAM上)に格納できます。

1
別のパッケージは、RAM内の分散ファイルを操作できるdistributedRです。
adesantos

17

ここでいくつかの良い答え。次の3つのメモを追加して、ディスカッションに参加したいと思います

  1. ビッグデータを参照しながらデータ量に重点を置いた質問は、特にムーアの法則http://en.wikipedia.org/wiki/Moore による技術的能力の指数関数的成長を上回るデータ量の増加の問題を考慮すると、理解可能で有効です。 %27s_law)。

  2. そうは言っても、ビッグデータの概念の他の側面について覚えておくことは重要です。Gartnerの定義(エンファシスマイニング-AB)に基づく:「ビッグデータは、意思決定、洞察の発見、プロセスの最適化を強化するために、新しい形式の処理を必要とする大量高速、および/または多様な情報資産です。」(通常、「3Vモデル」と呼ばれます)。これは、データサイエンティストや他のアナリストが、ビッグデータのボリューム以外の側面(巨大なRエコシステムの豊富さによって可能になる)以外に焦点を当てたRパッケージを探して使用することを強制するためです。

  3. 既存の回答では、ビッグデータに関連するいくつかのRパッケージについて言及していますが、より包括的なカバレッジについては、CRANタスクビュー 「Rによる高性能および並列コンピューティング」http://cran.r-project。 org / web / views / HighPerformanceComputing.html)、特に「並列コンピューティング:Hadoop」および「大容量メモリとメモリ不足データ」のセクション。


12

Rは「ビッグデータ」に最適です。ただし、RはオペレーティングシステムのRAMの量によって制限されているため(多少簡略化されています)、ワークフローが必要です。私が取るアプローチは、リレーショナルデータベースRSQLiteと対話し(SQLite データベースの作成および対話用パッケージを参照)、SQLスタイルのクエリを実行してデータの構造を理解し、計算集中型のデータの特定のサブセットを抽出することです統計分析。

ただし、これは1つのアプローチにすぎません。他のデータベース(Monetなど)と対話したり、メモリ制限の少ないRで分析を実行したりできるパッケージがあります(例を参照pbdR)。


9

別の基準を考慮すると、場合によってはPythonの使用がR for Big Dataよりもはるかに優れていると思います。データサイエンスの教材でRが広く使用されていることと、Rで使用できる優れたデータ分析ライブラリを知っていますが、チームに依存する場合もあります。

私の経験では、既にプログラミングに精通している人々にとって、Pythonを使用すると、プログラミング言語の観点からPythonに比べて十分に設計されておらず強力なRのような言語と比較して、はるかに柔軟性と生産性が向上します。証拠として、私の大学のデータマイニングコースでは、他の人はRの豊富なデータ分析ライブラリにアクセスできますが、最良の最終プロジェクトはPythonで作成されました。つまり、Pythonの特別な目的のデータ分析ライブラリがなくても、Pythonの全体的な生産性(学習教材、ドキュメントなどを考慮)がRよりも優れている場合があります。また、データサイエンスにおけるPythonの速いペースを説明するいくつかの良い記事があります。PythonでのPythonの置き換えリッチな科学データ構造 Rで利用可能なライブラリのギャップをすぐに埋めることができます。

Rを使用しないもう1つの重要な理由は、現実世界のビッグデータの問題を扱うときです。学術的な問題だけでなく、データ解析、クリーニング、視覚化、Webスクラップなど、他の多くのツールやテクニックが必要です。汎用プログラミング言語を使用するとはるかに簡単です。これが、多くのHadoopコース(Udacityのオンラインコースを含む)で使用されるデフォルト言語がPythonである理由です。

編集:

最近、DARPAは300万ドルを投資して、ビッグデータジョブのためのPythonのデータ処理および視覚化機能への資金提供を支援しました。これは、ビッグデータにおけるPythonの将来の兆候です。(詳細


3
Rは、(データ操作用と仕事への喜びですreshape2plyrと今dplyr)と私はあなたがより良いよりも行うことができるとは思わないggplot2/ ggvis可視化のために
オーガニックアガベ

@pearpies回答の冒頭で述べたように、Rで利用できる優れたライブラリを認めていますが、全体として、ビッグデータに必要なすべての領域を考慮すると(回答でそれらのいくつかを述べたように)、RはありませんPythonで利用できる成熟した巨大なライブラリに適合します。
アミールアリアクバリ


5
この答えは完全に逸話的であり、RがPythonに比べて弱い場所をほとんど示していません。
スタネカム14年

あら!「証拠として、私の大学のデータマイニングコースでは、他の人はRの豊富なデータ分析ライブラリにアクセスできますが、最良の最終プロジェクトはPythonで作成されました。」そして、読者にあなたの分析を尊重してもらいたいですか?ワオ。pythonプロジェクトである最高のプロジェクトに関係する他の要因は、記述されている言語以外にありますか?本当に....
ショーンMehan

7

Rは多くの分析に最適です。既に述べたように、MapR、RHadoop、RStudioのスケーラブルバージョンなどのビッグデータには、より新しい適応があります。

ただし、ライブラリが心配な場合は、Sparkに注意してください。Sparkはビッグデータ用に作成されており、Hadoop単独よりもはるかに高速です。機械学習、SQL、ストリーミング、グラフライブラリが大幅に増加しています。したがって、言語/ツールをシャッフルすることなく、フレームワーク内で(複数の言語APIを使用して、Scalaを好む)分析のすべてではないにしても大部分を許可します。


4

他の回答が指摘しているように、RをHadoopおよび他の分散コンピューティングプラットフォームとともに使用して、「ビッグデータ」レベルまでスケールアップできます。ただし、特にRに結婚していないが、「Rに似た」環境を使用したい場合、IncanterはJVM(Clojureに基づく)にネイティブであり、うまく機能するプロジェクトです。 Rが持つHadopとの間に「インピーダンスの不一致」がありません。つまり、Incanterから、JNIブリッジなどを介さずにJavaネイティブのHadoop / HDFS APIを呼び出すことができます。


2

私は専門家とはほど遠いですが、私の主題の理解は、R(統計の優れた)と例えばPython(Rが欠けているいくつかの点で優れている)が互いに非常によく補完することを教えてくれます(以前の投稿で指摘したように) 。


0

実際、Rのビッグデータを操作するためのツールがたくさんあると思います。sparklyrはその分野で素晴らしいプレーヤーになるでしょう。sparklyrはApache SparkへのRインターフェイスであり、ローカルおよびリモートクラスターとの接続を可能にし、dplyrバックエンドを提供します。Apache Sparkの機械学習ライブラリにも依存できます。さらに、rmpiやsnow(ユーザー制御)やdoMC / foreach(システムベース)などのいくつかのパッケージで並列処理が可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.