1、GBDT的原理算法
GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一種迭代的決策樹算法,該算法由多棵決策樹組成,全部樹的結論累加起來作最終答案。它在被提出之初就和SVM一塊兒被認爲是泛化能力較強的算法。
GBDT中的樹是迴歸樹(不是分類樹),GBDT用來作迴歸預測,調整後也能夠用於分類。
GBDT的思想使其具備自然優點能夠發現多種有區分性的特徵以及特徵組合。業界中,Facebook使用其來自動發現有效的特徵、特徵組合,來做爲LR模型中的特徵,以提升CTR預估(Click-Through Rate Prediction)的準確性(詳見參考文獻五、6);GBDT在淘寶的搜索及預測業務上也發揮了重要做用(詳見參考文獻7)。網絡
提高樹利用加法模型和前向分步算法實現學習的優化過程。當損失函數時平方損失和指數損失函數時,每一步的優化很簡單,如平方損失函數學習殘差迴歸樹。dom
但對於通常的損失函數,每每每一步優化沒那麼容易,如上圖中的絕對值損失函數和Huber損失函數。針對這一問題,Freidman提出了梯度提高算法:利用最速降低的近似方法,即利用損失函數的負梯度在當前模型的值,做爲迴歸問題中提高樹算法的殘差的近似值,擬合一個迴歸樹。(注:鄙人私覺得,與其說負梯度做爲殘差的近似值,不如說殘差是負梯度的一種特例)算法以下(截圖來自《The Elements of Statistical Learning》):機器學習
算法步驟解釋:函數
2、GBDT的參數設置性能
一、推薦GBDT樹的深度:6;(橫向比較:DecisionTree/RandomForest須要把樹的深度調到15或更高)學習
二、【問】xgboost/gbdt在調參時爲何樹的深度不多就能達到很高的精度?
用xgboost/gbdt在在調參的時候把樹的最大深度調成6就有很高的精度了。可是用DecisionTree/RandomForest的時候須要把樹的深度調到15或更高。用RandomForest所須要的樹的深度和DecisionTree同樣我能理解,由於它是用bagging的方法把DecisionTree組合在一塊兒,至關於作了屢次DecisionTree同樣。可是xgboost/gbdt僅僅用梯度上升法就能用6個節點的深度達到很高的預測精度,使我驚訝到懷疑它是黑科技了。請問下xgboost/gbdt是怎麼作到的?它的節點和通常的DecisionTree不一樣嗎?優化
【答】spa
(1)Boosting主要關注下降誤差(bais),所以Boosting能基於泛化性能至關弱的學習器構建出很強的集成;Bagging主要關注下降方差(variance),所以它在不剪枝的決策樹、神經網絡等學習器上效用更爲明顯。
(2)隨機森林(random forest)和GBDT都是屬於集成學習(ensemble learning)的範疇。集成學習下有兩個重要的策略Bagging和Boosting。
Bagging算法是這樣作的:每一個分類器都隨機從原樣本中作有放回的採樣,而後分別在這些採樣後的樣本上訓練分類器,而後再把這些分類器組合起來。簡單的多數投票通常就能夠。其表明算法是隨機森林。Boosting的意思是這樣,他經過迭代地訓練一系列的分類器,每一個分類器採用的樣本分佈都和上一輪的學習結果有關。其表明算法是AdaBoost, GBDT。
(3)其實就機器學習算法來講,其泛化偏差能夠分解爲兩部分,誤差(bias)和方差(variance)。這個可由下圖的式子導出(這裏用到了機率論公式D(X)=E(X^2)-[E(X)]^2)。誤差指的是算法的指望預測與真實預測之間的誤差程度,反應了模型自己的擬合能力;方差度量了同等大小的訓練集的變更致使學習性能的變化,刻畫了數據擾動所致使的影響。這個有點兒繞,不過你必定知道過擬合。
以下圖所示,當模型越複雜時,擬合的程度就越高,模型的訓練誤差就越小。但此時若是換一組數據可能模型的變化就會很大,即模型的方差很大。因此模型過於複雜的時候會致使過擬合。
當模型越簡單時,即便咱們再換一組數據,最後得出的學習器和以前的學習器的差異就不那麼大,模型的方差很小。仍是由於模型簡單,因此誤差會很大。rest
也就是說,當咱們訓練一個模型時,誤差和方差都得照顧到,漏掉一個都不行。
對於Bagging算法來講,因爲咱們會並行地訓練不少不一樣的分類器的目的就是下降這個方差(variance) ,由於採用了相互獨立的基分類器多了之後,h的值天然就會靠近.因此對於每一個基分類器來講,目標就是如何下降這個誤差(bias),因此咱們會採用深度很深甚至不剪枝的決策樹。
對於Boosting來講,每一步咱們都會在上一輪的基礎上更加擬合原數據,因此能夠保證誤差(bias),因此對於每一個基分類器來講,問題就在於如何選擇variance更小的分類器,即更簡單的分類器,因此咱們選擇了深度很淺的決策樹。
3、參考文獻
一、http://www.jianshu.com/p/005a4e6ac775