2017-01-03 7 views
0

特に、RandomForestModelを使用して、spark-mllibでクラスを作成しようとしています。spark-mllib retraining saved models

私はこの例をspark(RandomForestClassificationExample.scala)から見てきましたが、私は幾分拡張されたアプローチが必要です。

私はモデルを訓練することができ、将来の使用のためにモデルを保存するだけでなく、それをロードしてさらに訓練できるようにする必要があります。同様に、データセットを拡張して、再びトレーニングします。

答えて

1

将来の使用のためにモデルをエクスポートおよびインポートする必要性を完全に理解しています。

残念ながら、スパークでは「さらに」トレーニングは不可能ではありません。したがって、リトレインのモデルを使用して、最初のモデル+新しいデータを訓練するのに使用することをお勧めします。あなたはより多くのデータ(例えば機能、切片、係数、など)私はこれがあなたの質問に答えることを願っています

を追加したい場合は

あなたの最初のトレーニング値は/メトリックはもうあまり意味がありません。

+0

追加するには、新しい/拡張データセットを使用してモデルをトレーニングする際の出発点として、以前に訓練されたモデルパラメータを使用することが理にかなっています。しかし、あなたが過度に適合していないかどうかを確認するためのパラメータについては、_clean slate_状態でモデルを実行する必要があります。したがって、私はeliasahに賛成することはほとんど意味がないことに同意します。 – TDrabas

+0

オンライン学習が大きな分野であることを考えると、なぜさらなるトレーニングは意味をなさないのでしょうか?可能なときはいつでも基本的なSGDを少なくともサポートするのは間違いではありません。 – user31415

0

だけJavaRDD[Object]を保存する必要がある場合は、あなたが

model.saveAsObjectFile() 

値は、Java直列化を使用してwritterされます(Javaで)行うことができます。次に、あなたのデータを読むには:

JavaRDD[Object] model = jsc.objectFile(pathOfYourModel) 

オブジェクトファイルはPythonでは利用できないので注意してください。しかし、saveAsPickleFile()を使ってモデルを書くことができ、それを読むにはpickleFile()を使うことができます。

0

古いモデルを使用して新しいデータで再学習する場合は、ランダムフォレストの代わりにいくつかの強化学習手法を探す必要があります。

私が知っているように、deeplearning4jはSpark(およびHadoop)の上に深い強化学習アルゴリズムを実装しています。