GBDT預測時每一棵樹是否能並行?

GBDT在構建的時候,每一輪都必須依賴前一輪的梯度殘差,所以一輪與一輪之間不能並行,在每一輪構建樹的時候內部可以有並行的優化,但這不是我要問的重點,我想問的是GBDT在做預測的時候每一棵樹是否能並行?想不明白了!!!我認為是可以並行的,但是我認識的一個同學說不能!說預測的時候必須要依賴上一輪的結果,我推來推去就是覺得可以並行!普通的adaboost可以並行,我自己也實現過類似的boost的程序,但因為下一輪必須依賴上一輪的結果所以不能並行。


預測的時候可以並行的。訓練的時候下一輪的目標值依賴上一輪的結果,需要iteratively fits,不能並行。而預測的時候每棵樹都已經建好,輸入是原始數據,輸出是把每棵樹的預測值加在一起,這也MART(muliple additive regression trees)得名的由來,預測過程樹之間並沒有依賴,不存在先算後算的問題,所以可以並行。

過程可以參見ESL書中第361頁的演算法偽代碼,如下:

預測其實就是2.d和3,每一棵樹的輸出是Sigma_{j=1}^{J_m}gamma_{jm}I(xin R_{jm}),其中參數J_m,gamma_{jm},R_{jm}都在建樹時確定的,每棵樹的輸入都是測試數據x,也不會互享干擾。


用xgboost的吧,專門用來並行化實現boosting的框架,支持python/java/spark/R/julia等介面,方便的很。

https://github.com/dmlc/xgboost

Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Flink and DataFlow


推薦閱讀:

如何評價中山大學鄭子彬教授?
如何求出libsvm中每個樣本點到超平面的歐式距離?
一張圖片上有上百種顏色,如何在一張圖上篩選出小於五種的基本色,或者在一張圖上進行顏色劃分歸類?
為何DL在NLP效果並不是特別好但是Stanford卻開設cs224d這門課?
簡單解釋一下sparse autoencoder, sparse coding和restricted boltzmann machine的關係?

TAG:機器學習 | xgboost |