私は、機械学習技術の使用を含む TREC タスクに取り組んでいます。このデータセットは、5 テラバイトを超える Web ドキュメントで構成されており、そこから bag-of-words ベクトルが抽出される予定です。scikit-learn
私のニーズに合っていると思われる優れた機能のセットがありますが、ビッグデータを処理するためにうまく拡張できるかどうかはわかりません. たとえば、HashingVectorizer
5 テラバイトのドキュメントを処理できますか? また、それを並列化することは可能ですか? さらに、大規模な機械学習タスクにはどのような代替手段がありますか?
1 に答える
HashingVectorizer
たとえば、データをメモリに収まる 10k または 100k ドキュメントのバッチに繰り返しチャンクする場合に機能します。
次に、変換されたドキュメントのバッチをpartial_fit
メソッド (SGDClassifier
または などPassiveAggressiveClassifier
) をサポートする線形分類器に渡し、新しいバッチで反復処理を行うことができます。
すべてのサンプルを確認するのを待たずに、部分的にトレーニングされたモデルの精度を監視するために、ホールドアウトされた検証セット (10,000 ドキュメントなど) でモデルのスコアリングを開始できます。
coef_
また、データのパーティションで複数のマシンでこれを並行して実行し、結果と属性を平均しintercept_
て、すべてのデータセットの最終的な線形モデルを取得することもできます。
これについては、2013 年 3 月に PyData で行ったこの講演で説明します: http://vimeo.com/63269736
このチュートリアルには、 https ://github.com/ogrisel/parallel_ml_tutorial から取得した IPython.parallel を使用して scikit-learn を麻痺させるサンプル コードもあります。