2017-01-03 116 views
0

我想用spark-mllib做一個分類,特別是使用RandomForestModel。Spark-mllib再培訓保存模型

我看了這個來自spark的例子(RandomForestClassificationExample.scala),但我需要一個稍微擴展的方法。

我需要能夠訓練模型,保存模型以備將來使用,還能夠加載並進一步訓練。比如,擴展數據集並重新訓練。

回答

1

我完全理解需要導出和導入模型以備將來使用。

不幸的是,用Spark培訓「進一步」是不可能的,也沒有意義。因此,建議重新訓練該模型與使用的數據一起訓練第一個模型+新數據。

你的第一次訓練值/如果你想添加更多的數據(例如功能,攔截,係數等)

我希望這回答你的問題的指標沒有多大意義了。

+0

要添加,唯一可能有意義的是使用先前訓練的模型參數作爲您使用新/擴展數據集訓練模型的起點。但是,您還應該使用參數的_clean slate_狀態運行模型,以檢查您是否過度配合。因此,我同意eliasah說_retraining_沒有什麼意義。 – TDrabas

+0

鑑於在線學習是一個很大的領域 - 爲什麼進一步的培訓沒有意義?在可能的情況下,至少支持基本的新加坡元似乎並不合適......? – user31415

0

如果你只需要保存JavaRDD[Object],你可以做(​​在Java中)

model.saveAsObjectFile() 

值將使用Java序列化來writter出來。然後,讀取您的數據:

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

請注意,目標文件在Python中不可用。但是您可以使用saveAsPickleFile()來編寫模型,然後使用pickleFile()來讀取它。

0

如果您想使用舊模型並用新數據重新訓練,您可能需要尋找一些強化學習技術而不是隨機森林。

我知道,有deeplearning4j在Spark(和Hadoop)之上實現了深度強化學習算法。