2016-08-31 115 views
0

我有一個Spark應用程序,它在libsvm格式的稀疏矩陣上使用梯度增強樹。在紗線叢集模式下花費Spark應用程序的時間

val model = GradientBoostedTrees.train(trainingData, boostingStrategy)
這裏trainingData是RDD [LabeledPoint]。 hadoop上的大小約爲37 MB。

另請參閱連接的兩個圖像 Start After some time

第一個是從什麼時候開始。然後我拍了一段時間的屏幕截圖。

如果你看單獨的任務 - 你會看到毫秒和秒。如果我把它們加起來,他們會給我幾分鐘的時間。不過,在我拍攝第二個屏幕時,我的應用程序運行了1.5小時。

所以我的問題是

  1. 我怎麼知道正在採取的時間(不是UI)90%?

  2. 如何在Spark上固定漸變增強過程。如果您看到大多數任務是ML Lib和決策樹內發生的事情。我使用了5個分區 - 我應該增加更多分區嗎?還有多少 ?

  3. 數據不斷增加,從37MB增加到19GB。爲什麼呢? - 這是一個問題嗎?

  4. 經過一段時間,當我完成了我的訓練,並試圖寫出預測(摺疊) - 我得到一個大小超過INT Max_Value錯誤。原因是 - 似乎有太多的文字被寫出來了?它是每個分區?

  5. 我必須訓練GBT的300輪數。我在3到4小時內掙扎了3次POC。使用MLLib在Spark中完成300輪梯度增強是否可能?

我在斯卡拉2.10.4和mllib 1.5.2

回答

0

問題2:

GBT反覆訓練只有一棵樹。如果你想加快這個過程,嘗試使用隨機森林。 RF平行地訓練樹的整體,這比GBT快。

+0

是的 - 我知道 - 但我已經用GBT在本地完成了,預測比我的訓練數據要好得多。事實上,現在GB已經成爲任何ML問題的默認算法 - 特別是隨着XGBoost的到來。我希望有人能幫助我。感謝您的回覆 – Run2

相關問題