2017-05-19 13 views
1

ランダムフォレストモデルを保存するには、次のコードを使用しています。私は訓練されたモデルを保存するためにcPickleを使用しています。新しいデータが表示されるので、モデルを徐々に訓練できますか? 現在、トレインセットには約2年のデータがあります。別の2年を訓練し、既存の保存モデルに追加する方法がありますか?python sklearnを使用したランダムフォレストモデルのインクリメンタルトレーニング

rf = RandomForestRegressor(n_estimators=100) 
print ("Trying to fit the Random Forest model --> ") 
if os.path.exists('rf.pkl'): 
    print ("Trained model already pickled -- >") 
    with open('rf.pkl', 'rb') as f: 
     rf = cPickle.load(f) 
else: 
    df_x_train = x_train[col_feature] 
    rf.fit(df_x_train,y_train) 
    print ("Training for the model done ") 
    with open('rf.pkl', 'wb') as f: 
     cPickle.dump(rf, f) 
df_x_test = x_test[col_feature] 
pred = rf.predict(df_x_test) 

EDIT 1:4年間のデータを一度にモデル化する計算能力はありません。

答えて

1

あなたはインクリメンタルに追加データでモデルを更新し、何を言ってるのか、sklearn User Guideで議論されています

すべてのアルゴリズムは、( が一度にすべてのインスタンスを見ることなくIE)インクリメンタルに学ぶことはできませんが、 partial_fit API を実装するすべての見積もりが候補です。実際には、 のインスタンスのミニバッチから徐々に学習する能力(「オンライン 学習」と呼ばれることもあります)は、特定の時間に の所与の時間に少量のメインの メモリのインスタンス。

これらは、partial_fit()を実装する分類子と回帰者のリストを含んでいますが、RandomForestはその中にはありません。また、RFRegressorが部分一致を実装していないことを確認することもできますon the documentation page for RandomForestRegressor。前方

いくつかの可能な方法:

  • は、SGDRegressorとして、partial_fit()を実装しない説明変数を使用し
  • その後、重要でない落とした後のデータの3〜4年であなたのモデルを再訓練、あなたのランダムフォレストモデルのfeature_importances_属性を確認してください機能
  • 2年しか使用できない場合は、最新の2年間のデータでモデルをトレーニングしてください
  • 4年間のデータすべてから抽出されたランダムなサブセットでモデルをトレーニングしてください。
  • tree_depthパラメータを変更して、モデルの複雑さを制限します。これにより計算時間が節約されるので、すべてのデータを使用することができます。また、過適合を防ぐことができます。クロスバリデーションを使用して、問題に最適なツリー深度のハイパーパラメータを選択してください
  • RFモデルのパラメータn_jobs=-1をまだ設定していない場合は、マシン上で複数のコア/プロセッサを使用します。
  • に良い代替することSGDだろうなxgboostよう
  • は、AWSやdominodatalab
+0

として、クラウドに大規模なマシンのモデルフィッティングのコードを実行し、より高速なアンサンブルツリーベースのアルゴリズムを使用しますランダムな森林?私は新しいモデルがどのように実行されるのか分かりません。 SGDにはpartial_fit APIがありますので、オンライン学習に使用できます – Tammy

+2

SGDクラシファイアのトレーニングを行い、パフォーマンスをRFモデルのパフォーマンスと比較しようとしましたか?これは、その質問に答えるための唯一の方法です。 –

+0

は、可能なステップを進めるために更新されました。 –

関連する問題