質問: 現在、業務でRandomforest regressorを使って推論するモデルを作成しています。 そこでお客様に「自分で新しいデータを学習していく仕組みを入れてほしい」と言われています。 学習済みのモデルに追加のデータのみを学習させる追加学習のようなことをさせることはできないでしょうか? (調べた限り、DeepLearningではできそうでしたが、scikit-learnに関する記事が見当たらず...) もしそういった要望をRandomforestで実現する場合は、ひたすらデータをローカルに貯めていって 再学習させるタイミングで今までの全データをもう一度学習させてモデルを作り直すのが、一般的なのでしょうか。 初歩的な質問かと思いますが、宜しくお願いします。
回答: Randomforestのアルゴリズム上、そもそも新しいデータを入れて追加で学習させるというのには向いていません。 全くおすすめしませんが、、、全学習データをアプリケーション側で持たせておき、運用後に投入される全入力データも保存しておき、定期的に入力データも混ぜて学習しなおすことは理論上可能です(が、実用的ではないでしょう)。 追加学習に適したアルゴリズムもあるので、そういうものを使えば質問文で考えているであろう通りのことができます。sklearnのリファレンスで`partial_fit`メソッドのあるモデルを探してください。 ただし、これがあるからといって、運用しながらデータを集めて追加学習させていく・・・という使い方がサポートされているという訳ではありません。性能がどうなるかとか、現実的な時計算リソースで再学習できるかとか(学習には予測より2~3桁リソースを要するのが普通で、)、なんか変なデータが入ってきたときにどうするとか、ぶっ飛んじゃったときどうやって巻き戻すかとか、いろいろ考えるべきことはあります。お手軽とは言えないので、熟考して使うか、最初からやらないかのどちらかです。