我想用spark-mllib做一個分類,特別是使用RandomForestModel。Spark-mllib再培訓保存模型
我看了這個來自spark的例子(RandomForestClassificationExample.scala),但我需要一個稍微擴展的方法。
我需要能夠訓練模型,保存模型以備將來使用,還能夠加載並進一步訓練。比如,擴展數據集並重新訓練。
我想用spark-mllib做一個分類,特別是使用RandomForestModel。Spark-mllib再培訓保存模型
我看了這個來自spark的例子(RandomForestClassificationExample.scala),但我需要一個稍微擴展的方法。
我需要能夠訓練模型,保存模型以備將來使用,還能夠加載並進一步訓練。比如,擴展數據集並重新訓練。
我完全理解需要導出和導入模型以備將來使用。
不幸的是,用Spark培訓「進一步」是不可能的,也沒有意義。因此,建議重新訓練該模型與使用的數據一起訓練第一個模型+新數據。
你的第一次訓練值/如果你想添加更多的數據(例如功能,攔截,係數等)
我希望這回答你的問題的指標沒有多大意義了。
如果你只需要保存JavaRDD[Object]
,你可以做(在Java中)
model.saveAsObjectFile()
值將使用Java序列化來writter出來。然後,讀取您的數據:
JavaRDD[Object] model = jsc.objectFile(pathOfYourModel)
請注意,目標文件在Python中不可用。但是您可以使用saveAsPickleFile()
來編寫模型,然後使用pickleFile()
來讀取它。
如果您想使用舊模型並用新數據重新訓練,您可能需要尋找一些強化學習技術而不是隨機森林。
我知道,有deeplearning4j在Spark(和Hadoop)之上實現了深度強化學習算法。
要添加,唯一可能有意義的是使用先前訓練的模型參數作爲您使用新/擴展數據集訓練模型的起點。但是,您還應該使用參數的_clean slate_狀態運行模型,以檢查您是否過度配合。因此,我同意eliasah說_retraining_沒有什麼意義。 – TDrabas
鑑於在線學習是一個很大的領域 - 爲什麼進一步的培訓沒有意義?在可能的情況下,至少支持基本的新加坡元似乎並不合適......? – user31415