為什麼xgboost/gbdt在調參時為什麼樹的深度很少就能達到很高的精度?
提主剛接觸機器學習,參加kaggle的時候,用xgboost/gbdt在在調參的時候把樹的最大深度調成6就有很高的精度了。但是用DecisionTree/RandomForest的時候需要把樹的深度調到15或更高。
用RandomForest所需要的樹的深度和DecisionTree一樣我能理解,因為它是用bagging的方法把DecisionTree組合在一起,相當於做了多次DecisionTree一樣。但是xgboost/gbdt僅僅用梯度上升法就能用6個節點的深度達到很高的預測精度,使我驚訝到懷疑它是黑科技了0.0請問下xgboost/gbdt是怎麼做到的?它的節點和一般的DecisionTree不同嗎?
原諒提主對xgboost/gbdt了解的不夠深入....
參見這個問題,為什麼說bagging是減少variance,而boosting是減少bias? - 機器學習。
---------------------------------------------------------------------------------------------------------------------------這是一個非常好的問題,題主對各演算法的學習非常細緻透徹,問的問題也關係到這兩個演算法的本質。這個問題其實並不是一個很簡單的問題,我嘗試用我淺薄的機器學習知識對這個問題進行回答。
一句話的解釋,來自周志華老師的機器學習教科書( 機器學習-周志華):Boosting主要關注降低偏差,因此Boosting能基於泛化性能相當弱的學習器構建出很強的集成;Bagging主要關注降低方差,因此它在不剪枝的決策樹、神經網路等學習器上效用更為明顯。
隨機森林(random forest)和GBDT都是屬於集成學習(ensemble learning)的範疇。集成學習下有兩個重要的策略Bagging和Boosting。
Bagging演算法是這樣做的:每個分類器都隨機從原樣本中做有放回的採樣,然後分別在這些採樣後的樣本上訓練分類器,然後再把這些分類器組合起來。簡單的多數投票一般就可以。其代表演算法是隨機森林。Boosting的意思是這樣,他通過迭代地訓練一系列的分類器,每個分類器採用的樣本分布都和上一輪的學習結果有關。其代表演算法是AdaBoost, GBDT。
其實就機器學習演算法來說,其泛化誤差可以分解為兩部分,偏差(bias)和方差(variance)。這個可由下圖的式子導出(這裡用到了概率論公式D(X)=E(X^2)-[E(X)]^2)。偏差指的是演算法的期望預測與真實預測之間的偏差程度,反應了模型本身的擬合能力;方差度量了同等大小的訓練集的變動導致學習性能的變化,刻畫了數據擾動所導致的影響。這個有點兒繞,不過你一定知道過擬合。
你自己不都說了嗎,一個是隨機bagging,一個是boosting。bagging就是大家都是學渣,每道題都由隨機選出的一群學渣投票決定,這樣需要的學渣比較多,而且每個學渣還都得很努力學習。boosting也是一群學渣,但每個人雖然總分菜,卻是因為偏科導致的,每個學渣都貢獻自己最擅長的那個題目。這樣boosting需要的每個學渣都豪不費力,但是整體上更強了。xgb的學渣還通過預習,讓自己偏科的科目學得更省力。所以整體上xgb看起來是非常省力的一群學渣組成,但是拿到的分數卻很高。
GBDT,樹之間是有聯繫的,後面的樹學習的是前面樹的殘差,也可以理解成之前學習的不太好的地方。後面的樹會對之前樹學習不太好的地方,重點學習。因此哪怕樹的深度比較少,也可以取得很好的效果。而RandomForest每棵樹都是獨立的。
這幾天我自己也在思考答案,想出了一些結果吧。
其實我想問的是,在gbdt演算法調參的過程中,為什麼把樹的深度設定很小就能達到很高的預測或分類精度。
我的答案是,考慮這個簡化的操作:試想把樹的深度設為2,那麼gbdt裡面的基學習器都是二分類決策樹,然後自己在二維坐標繫上畫很多點,然後不停的用boosting的方法用二分類決策樹去進行分類,不同的是,我們簡化權重的計算方式,初始化權重都為1,每次分錯權重不變,分對則權重將為原來的一半,最終能用深度為2的樹成功對很多不規則的點進行分類。然而用深度為2的樹,用類似RF的bagging方法也能成功對不規則的點分類。所以到這裡,我們實際操作了,用深度低的樹通過ensemble對於不規則的點的分類這種「黑科技」。那麼為什麼gbdt在樹的深度很小的時候能很快達到很高的預測或分類精度呢?或者說,它比RF明顯。我的理解是,因為gbdt更多的是一種優化演算法。具體怎麼優化的,期待牛人用公式解答。這個問題gbm的論文有提到,先佔坑,後面有空來答
推薦閱讀:
※如何看待mahout和milib之間的關係,mahout真的死了么?
※天池大數據競賽和Kaggle、DataCastle的比較,哪個比較好?
※用R語言的公司多嗎?
※SVD 降維體現在什麼地方?
※随机梯度下降是坐标下降的一种?