4

いくつかの値を予測するために、Random Forest Regressor python の scikit-learn モジュールを使用しています。モデルの保存には joblib.dump を使用しました。24 個の joblib.dump ファイルがあり、それぞれの重みは 45 メガバイトです (すべてのファイルの合計 = 931 MB)。私の問題は次のとおりです。

この 24 個のファイルすべてを 1 つのプログラムにロードして、24 個の値を予測したいのですが、できません。これは MemoryError を返します。エラーなしで 1 つのプログラムに 24 個の joblib ファイルすべてをロードするにはどうすればよいですか?

前もって感謝します...

4

1 に答える 1

1

メモリが不足している正確な場所に応じて、いくつかのオプションがあります。

  • 同じ入力データに基づいて 24 の異なる値を予測しているため、順次予測を行うことができます。したがって、一度にメモリに保持できる RFR は 1 つだけです。

例えば:

predictions = []
for regressor_file in all_regressors:
    regressor = joblib.load(regressor_file)
    predictions.append(regressor.predict(X))
  • (あなたのケースには当てはまらないかもしれませんが、この問題は非常に一般的です)。入力データの大規模なバッチをロードするときに、メモリが不足している可能性があります。この問題を解決するには、入力データを分割し、サブバッチで予測を実行します。これは、予測をローカルで実行することから EC2 に移行したときに役立ちました。より小さな入力データセットでコードを実行して、これが役立つかどうかをテストしてください。

  • RFR のパラメーターを最適化したい場合があります。より浅いツリーまたはより少ない数のツリー (またはその両方) で同じ予測力を得ることができる場合があります。不必要に大きなランダム フォレストを構築するのは非常に簡単です。もちろん、これは問題固有のものです。モデルを本番環境で効率的に実行するには、ツリーの数を減らしてツリーを小さくする必要がありました。私の場合、AUC は最適化の前後で同じでした。モデル調整のこの最後のステップは、チュートリアルから省略されることがあります。

于 2015-09-04T10:49:49.250 に答える