web-dev-qa-db-ja.com

Rの非常に大規模なデータセット処理および機械学習に推奨されるパッケージ

Rは、メモリに完全に取り込むことができるデータセットを処理するように実際に設計されているようです。メモリにプルできない非常に大きなデータセットでの信号処理と機械学習に推奨されるRパッケージは何ですか?

Rが単にこれを行うのに間違った方法である場合、他の堅牢な無料の提案を受け入れます(たとえば、非常に大きなデータセットを処理する素敵な方法がある場合はscipy)

41
John Robertson

CRANの 高性能コンピューティングタスクビュー の「大容量メモリとメモリ不足データ」サブセクションをご覧ください。 bigmemoryff は2つの一般的なパッケージです。 bigmemory(および関連する biganalytics 、および bigtabulate )の場合、 bigmemory website には、Jay Emersonの非常に優れたプレゼンテーション、ビネット、および概要がいくつかあります。 ffについては、AdlerOehlschlägelと同僚の優れたスライドプレゼンテーションを ffウェブサイト で読むことをお勧めします。

また、データベースにデータを保存し、分析のために小さなバッチで読み取ることを検討してください。考慮すべき多くのアプローチがありそうです。始めるには、 biglm パッケージの例のいくつかと、Thomas Lumleyの このプレゼンテーション を検討してください。

また、高性能コンピューティングタスクビューで他のパッケージを調べ、他の回答で言及しました。上記のパッケージは、私がたまたま経験したパッケージです。

32
jthetzel

処理できるデータの量は、他の何よりもプログラミングスキルによって制限されると思います。多くの標準機能がメモリ分析に焦点を当てていますが、データをチャンクに分割することはすでに非常に役立ちます。もちろん、これは標準のRコードを取得するよりもプログラミングに時間がかかりますが、多くの場合、かなり可能です。

データの切り取りは、データのサブセットの読み取りのみをサポートするread.tableまたはreadBinを使用して実行できます。または、すぐに使用できるメモリ機能を提供するパッケージの高性能コンピューティングタスクビューを確認できます。データをデータベースに入れることもできます。空間ラスターデータの場合、優れたラスターパッケージはメモリ不足の分析を提供します。

8
Paul Hiemstra

機械学習タスクの場合、「 biglm パッケージ」を使用することをお勧めします。これは、「メモリに収まらないほど大きいデータの回帰」を行うために使用されます。本当に大きなデータでRを使用するには、 Hadoop をバックエンドとして使用し、次にパッケージ rmr を使用して、HadoopクラスターでMapReduceを介して統計(またはその他)分析を実行できます。

8
Grega Kešpret

それはすべて、必要なアルゴリズムに依存します。それらがincremental形式に変換される可能性がある場合(特定の時点でデータのごく一部のみが必要な場合、たとえばNaive Bayesの場合はメモリのみに保持できます)モデル自体と現在の観察結果が処理されている場合)、最良の提案は、機械学習をインクリメンタルに実行し、ディスクからデータの新しいバッチを読み取ることです。

ただし、多くのアルゴリズム、特にその実装には、データセット全体が実際に必要です。データセットのサイズがディスクに収まる場合(およびファイルシステムの制限)、mmapファイルをマップできるパッケージを使用できますディスクからメモリへ、プログラムで使用します。ただし、ディスクへの読み書きは高価であり、Rは頻繁にデータを頻繁にやり取りすることを好むことに注意してください。ので注意してください。

データをハードドライブにも保存できない場合は、分散型機械学習システムを使用する必要があります。そのようなRベースのシステムの1つは、 Revolution R で、これは handle 本当に大きなデータセットに設計されています。残念ながら、オープンソースではなく、かなりの費用がかかりますが、 無料のアカデミックライセンス を取得しようとする場合があります。別の方法として、Javaベースの Apache Mahout に興味があるかもしれません-それほどエレガントではありませんが、非常に効率的なソリューションHadoopおよび多くの重要なアルゴリズムが含まれています。

7
ffriend

メモリが十分でない場合、1つの解決策は、データをディスクにプッシュし、分散コンピューティングを使用することです。 RHadoop(R + Hadoop)は、大量のデータセットに取り組むための解決策の1つかもしれません。

3
yanbohappy