2017-12-19 41 views
0

データセットがメモリに収まらないほど大きすぎるので、モデルをバッチでトレーニングする必要があります。私はGridSearchCV、RandomizedSearchCV、またはBayesSearchCV(scikit-optimizeから)でモデルをラップし、私の巨大なデータセットのさまざまな部分でこれらの複数のインスタンスを訓練することができず、それぞれが見いだした最良のハイパーパラメータを期待しています。sklearnのGridSearchCVをメモリに収まらないデータで使用するにはどうすればよいですか?

バッチでデータベースからの読み取りを管理し、モデルのリストを保持するBatchVoter(自分の設計の)で推定をラッピングすることを検討しました。これをXSeachCVに渡し、すべてのキーが 'estimator__'で始まるようにパラメータスペース辞書を更新すると、サブオブジェクトのパラメータを設定するように検索が指示されるかもしれませんが、まだ問題があります。 .fit()メソッド。データを取得する必要があります。

ネイティブのGridSearchCVを.fit()メソッドに渡すには大きすぎるデータを使用する巧妙な方法がありますか?

答えて

0

お試しdaskデータフレーム、配列、コレクションをサポートしています。スケジューラと作業者で構成されています。また、distributedスケジューラもあり、複数のPCでデータフレームを処理することができます。

Hereは、モデルを並列化する方法の説明です。

Hereは、私が大幅にこのプロジェクトを遅らせることなく任意のさまざまなパッケージを使用することはできませんGridSearchCV

+0

のドロップイン置換可能性があり、完全なモジュールへのリンクです。新しいパッケージが承認されなければならないので、私は新しいデザインの上にあるものすべてをリファクタリングする必要があります。私たちのデータベースは非常に速く、私たちのためにうまく動作するnumpyのmemmapsに基づいており、daskはベイズの最適化をしません。これは私が現在リファクタリングしているポイントの一種です。複数のコアへの配布は今のところ十分であり、n_jobs = Xはこれを簡単に実行します。しかし、私は将来の仕事のために心に留めておきます。 – pvlkmrv

+0

私はdaskが基本的なバッチ処理の問題を解決できるかどうかはまだ分かりません。学習者がすべてのデータを一度に見て学習する必要がある場合は、どこかでメモリに収まる必要があります。ディスク上のメモリマップされたファイルを見渡しているフォールトは遅くなります。私の問題では、実際には読み取り時に2つのデータベーステーブルを結合しているため、ディスク上の100 GBはTBに爆発的に訓練されます。 – pvlkmrv

関連する問題