web-dev-qa-db-ja.com

大規模な機械学習-PythonまたはJava?

私は現在、膨大な量のデータ(数百ギグ)をクロールして処理し、構造化データの抽出、固有表現抽出、重複排除、分類などのためにそれらをマイニングするプロジェクトに着手しています。

私はJavaとPythonの世界:Lingpipe、Mahout、NLTKなどの両方のMLツールに精通しています。しかし、それを選ぶことになるとこのような大規模な問題のためのプラットフォーム-JavaまたはPythonのどちらかを決定するのに十分な経験がありません。

これは漠然とした質問のように聞こえますが、JavaまたはPythonのいずれかを選択する際の一般的なアドバイスを探しています。JVMはPythonよりも優れたパフォーマンス(?)を提供しますが、Lingpipeなどのライブラリです。Pythonエコシステムと一致しますか?このPythonを使用した場合、複数のマシン間でスケーリングおよび管理するのはどれほど簡単でしょうか。

どちらを選ぶべきですか、そしてその理由は何ですか?

33
jeffreyveon

Apacheが強力になり、Lucene/Solr/Nutch for Search、Mahout for Big Data Machine Learning、Hadoop for Map Reduce、OpenNLP for NLP、多くのNoSQLなどの優れたものを生み出しています。最良の部分は統合を表す大きな「I」であり、これらの製品は互いにうまく統合できます。もちろん、ほとんどの場合、それら(これらの製品)は互いに補完し合っています。

Pythonも素晴らしいですが、ASFから上記を検討する場合は、Java SeanOwenのようになります。Pythonは常に上記で利用できますが、ほとんどの場合、実際のものではなくアドオンを追加します。たとえば、ストリーミングなどを使用してPythonを使用してHadoopを実行できます。

Lucene、Solr、OpenNLPなどの非常に人気のあるApache製品や、その他の人気のあるオープンソースNoSQL Javaを利用するために、C++からJava Neo4jやOrientDBなどの製品。

18
Yavar

Javaは、Hadoopです。本当に大規模な場合は、そのようなものを使用できるようにしたいと思います。一般的に言えば、Javaにはパフォーマンス上の利点があり、より多くのライブラリを利用できます。つまり、Javaです。

11
Sean Owen

MLタスクに適したNoSQLデータベースを検討している場合、Neo4Jは(比較的)本番環境に対応し、BigDataを処理できるもののひとつであり、Java)にネイティブですが、美しいものが付属していますREST APIはすぐに使用できるため、選択したプラットフォームと統合できます。Javaは、ここでパフォーマンスエッジを提供します。

5
subiet