私のデータセットは大きくなりすぎており、sklearnでオンライン学習ソリューションを探しています。これはアウトオブコアラーニングと呼ばれています。
これらは、パーシャルフィットAPIを使用するいくつかのクラスを提供します。これにより、基本的に、データのサブセットをメモリに保持して操作できます。ただし、多くの前処理段階(データスケーリングなど)は、トレーニングデータの適合段階でパラメーターを保持し、それが変換に使用されます。
たとえば、最小-最大スケーラーを使用して機能を[-1、1]にバインドしたり、データを標準化したりする場合、学習し、最終的にデータの変換に使用するパラメーターは、操作しているトレーニングデータのサブセットから学習されます。与えられた反復でオン。
これは、トレーニングデータのあるサブセットで適合段階中に学習されたパラメーターは、トレーニングセット固有であるため、トレーニングデータの別のサブセットとは異なる可能性があることを意味します。そして、私の質問の核心があります:
学習したパラメーターがトレーニングデータの関数である場合、オンライン/アウトオブコア学習を使用するときに、前処理ステップの適合段階で学習したパラメーターをどのように組み合わせることができますか?
StandardScaler
一度にRAMに収まる十分な大きさのサブセット(たとえば、数GBのデータ)にインスタンスを収めてから、スケーラーの同じ固定インスタンスを再利用して、残りのデータを一度に1バッチずつ変換できます。数千のサンプルで各特徴の平均値と標準値を適切に推定できるはずなので、スケーラーだけで完全なデータの実際の適合度を計算する必要はありません。
完全を期すためにストリーミングの平均と分散の推定を実装partial_fit
して、StandardScaler
クラスにメソッドを追加するのもよいでしょう。
ただしStandardScaler
、partial_fit
メソッドがある場合でも、データのいくつかのパスを実行する必要があります(オプションで、前処理されたデータを後で再利用できるようにドライブに保存します)。
standard_scaler.partial_fit()
すべての元のデータチャンクを呼び出しますstandard_scaler.transform
元のデータの各チャンクを呼び出し、その結果をmodel.partial_fit
メソッドに渡します。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加