2016-10-22 46 views
1

在此鏈接 - LINK中,提到可以使用離線構建的機器學習模型來針對流數據進行測試。從Apache星火流MLlib鏈接Spark Streaming - 可以針對數據流使用離線模型

摘錄:

您也可以方便地使用所有的MLlib首先提供的機器學習算法,有流機器學習算法(如流線性迴歸,流KMEANS,等等),它可以同時從流數據中學習,並在流數據上應用模型。除此之外,對於更大類的機器學習算法,您可以離線學習學習模型(即使用歷史數據)和然後在流式數據上在線應用模型查看MLlib指南瞭解更多詳情

  1. 這是否意味着您可以使用像Spark中構建的Random Forest模型這樣的複雜學習模型來測試Spark Streaming程序中的流數據?在Spark Streaming程序中,引用已經構建的「Model」並調用「predictOnValues()」就可以簡單得多嗎?

  2. 在這種情況下,現有的火花流式機器學習算法(AND)之間的主要區別在於這種方法是流式算法將隨着時間演化並且離線(反)在線流式方法仍將使用從之前學到什麼而沒有任何在線學習可能性的見解?

我是否明白這一點?請讓我知道,如果我對上述兩點的理解是正確的。

+1

下面是你如何堅持訓練有素的模型。 'model.save(sc,「myModelPath」)'。然後加載'sameModel = RandomForestClassificationModel.load(sc,「myModelPath」)'。流式學習可以使用相同的模型。這取決於你的算法更新模型並保存以反映在線學習的結果。 –

+0

謝謝Kenji! – AC24

回答

3

這是否意味着您可以使用像Spark中構建的Random Forest模型這樣的複雜學習模型來測試Spark Streaming程序中的流數據?

是的,您可以在批處理模式下訓練Random Forest等模型,並在稍後存儲模型進行預測。如果你想將它與流應用程序集成在一起,這些應用程序中的值將持續進行預測,則只需要在內存中加載模型(實際上可以讀取特徵向量及其權重)並進行預測直到結束。


是化繁爲簡的星火流節目指已建成「模型」,並呼籲「predictOnValues()」過嗎?

是的。


在這種情況下,將現有的火花之間的主要區別流機器學習算法(AND)這種做法是一個事實,即流算法將隨着時間的推移和離線(反對)的在線流的方法會仍然在使用以前學到的知識而沒有任何在線學習的可能性?

訓練模型只不過是更新要素的權向量。您仍然必須選擇alpha(學習率)和lambda(正則化參數)。所以,當你使用StreamingLinearRegression(或其他流媒體等價物)時,你將有兩個dStreams用於訓練和其他用於明顯目的的預測。

+1

謝謝@amit_kumar。這確實是一個非常清晰和詳細的解釋! – AC24

相關問題