Rには、データ分析(JAGS、BUGS、ARULESなど)を目的とした多くのライブラリがあり、J.Krusche、Doing Bayesian Data Analysisなどの一般的な教科書で言及されています。B.ランツ、「Rによる機械学習」。
データセットをビッグデータと見なすための5TBのガイドラインを見てきました。
私の質問は次のとおりです。Rはビッグデータの問題で一般的に見られるデータ量に適していますか?このサイズのデータセットでRを使用するときに使用する戦略はありますか?
Rには、データ分析(JAGS、BUGS、ARULESなど)を目的とした多くのライブラリがあり、J.Krusche、Doing Bayesian Data Analysisなどの一般的な教科書で言及されています。B.ランツ、「Rによる機械学習」。
データセットをビッグデータと見なすための5TBのガイドラインを見てきました。
私の質問は次のとおりです。Rはビッグデータの問題で一般的に見られるデータ量に適していますか?このサイズのデータセットでRを使用するときに使用する戦略はありますか?
回答:
実際、これは近づいています。R in a Nutshellの本には、ビッグデータ処理のためにRをHadoopで使用するセクションさえあります。Rはメモリ内のすべての作業を行うため、実行する必要がある回避策がいくつかあります。したがって、基本的に、使用可能なRAMの量に制限されます。
RとHadoopの成熟したプロジェクトはRHadoopです
RHadoopは、いくつかのサブプロジェクト、rhdfs、rhbase、rmr2、plyrmr、およびquickcheck(wiki)に分割されています。
大きなデータセットにRを使用する場合の主な問題は、RAMの制約です。すべてのデータをRAMに保持する理由は、HDDに保存するよりもはるかに高速なアクセスとデータ操作を提供するためです。パフォーマンスに影響を与えたい場合は、はい、Rで大規模なデータセットを操作することは非常に実用的です。
ここでいくつかの良い答え。次の3つのメモを追加して、ディスカッションに参加したいと思います。
ビッグデータを参照しながらデータの量に重点を置いた質問は、特にムーアの法則(http://en.wikipedia.org/wiki/Moore による技術的能力の指数関数的成長を上回るデータ量の増加の問題を考慮すると、理解可能で有効です。 %27s_law)。
そうは言っても、ビッグデータの概念の他の側面について覚えておくことは重要です。Gartnerの定義(エンファシスマイニング-AB)に基づく:「ビッグデータは、意思決定、洞察の発見、プロセスの最適化を強化するために、新しい形式の処理を必要とする大量、高速、および/または多様な情報資産です。」(通常、「3Vモデル」と呼ばれます)。これは、データサイエンティストや他のアナリストが、ビッグデータのボリューム以外の側面(巨大なRエコシステムの豊富さによって可能になる)以外に焦点を当てたRパッケージを探して使用することを強制するためです。
既存の回答では、ビッグデータに関連するいくつかのRパッケージについて言及していますが、より包括的なカバレッジについては、CRANタスクビュー 「Rによる高性能および並列コンピューティング」(http://cran.r-project。 org / web / views / HighPerformanceComputing.html)、特に「並列コンピューティング:Hadoop」および「大容量メモリとメモリ不足データ」のセクション。
Rは「ビッグデータ」に最適です。ただし、RはオペレーティングシステムのRAMの量によって制限されているため(多少簡略化されています)、ワークフローが必要です。私が取るアプローチは、リレーショナルデータベースRSQLite
と対話し(SQLite データベースの作成および対話用パッケージを参照)、SQLスタイルのクエリを実行してデータの構造を理解し、計算集中型のデータの特定のサブセットを抽出することです統計分析。
ただし、これは1つのアプローチにすぎません。他のデータベース(Monetなど)と対話したり、メモリ制限の少ないRで分析を実行したりできるパッケージがあります(例を参照pbdR
)。
別の基準を考慮すると、場合によっては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の将来の兆候です。(詳細)
reshape2
、plyr
と今dplyr
)と私はあなたがより良いよりも行うことができるとは思わないggplot2
/ ggvis
可視化のために
Rは多くの分析に最適です。既に述べたように、MapR、RHadoop、RStudioのスケーラブルバージョンなどのビッグデータには、より新しい適応があります。
ただし、ライブラリが心配な場合は、Sparkに注意してください。Sparkはビッグデータ用に作成されており、Hadoop単独よりもはるかに高速です。機械学習、SQL、ストリーミング、グラフライブラリが大幅に増加しています。したがって、言語/ツールをシャッフルすることなく、フレームワーク内で(複数の言語APIを使用して、Scalaを好む)分析のすべてではないにしても大部分を許可します。