GBDT與XGB區別
1. 傳統GBDT以CART作為基分類器,xgboost還支持線性分類器(gblinear),這個時候xgboost相當於帶L1和L2正則化項的邏輯斯蒂回歸(分類問題)或者線性回歸(回歸問題)
2. 傳統GBDT在優化時只用到一階導數信息,xgboost則對代價函數進行了二階泰勒展開,同時用到了一階和二階導數。順便提一下,xgboost工具支持自定義代價函數,只要函數可一階和二階求導
3. xgboost在代價函數里加入了正則項,用於控制模型的復雜度。正則項里包含了樹的葉子節點個數、每個葉子節點上輸出的score的L2模的平方和。從Bias-variance tradeoff角度來講,正則項降低了模型的variance,使學習出來的模型更加簡單,防止過擬合,這也是xgboost優於傳統GBDT的一個特性
4. Shrinkage(縮減),相當於學習速率(xgboost中的eta)。xgboost在進行完一次迭代后,會將葉子節點的權重乘上該系數,主要是為了削弱每棵樹的影響,讓后面有更大的學習空間。實際應用中,一般把eta設置得小一點,然后迭代次數設置得大一點。(補充:傳統GBDT的實現也有學習速率)
5. 列抽樣(column subsampling)。xgboost借鑒了隨機森林的做法,支持列抽樣,不僅能降低過擬合,還能減少計算,這也是xgboost異於傳統gbdt的一個特性
6. 對缺失值的處理。對於特征的值有缺失的樣本,xgboost可以自動學習出它的分裂方向。
7. xgboost工具支持並行。boosting不是一種串行的結構嗎?怎么並行的?注意xgboost的並行不是tree粒度的並行,xgboost也是一次迭代完才能進行下一次迭代的(第t次迭代的代價函數里包含了前面t-1次迭代的預測值)。xgboost的並行是在特征粒度上的。我們知道,決策樹的學習最耗時的一個步驟就是對特征的值進行排序(因為要確定最佳分割點),xgboost在訓練之前,預先對數據進行了排序,然后保存為block結構,后面的迭代中重復地使用這個結構,大大減小計算量。這個block結構也使得並行成為了可能,在進行節點的分裂時,需要計算每個特征的增益,最終選增益最大的那個特征去做分裂,那么各個特征的增益計算就可以開多線程進行。
8. 可並行的近似直方圖算法。樹節點在進行分裂時,我們需要計算每個特征的每個分割點對應的增益,即用貪心法枚舉所有可能的分割點。當數據無法一次載入內存或者在分布式情況下,貪心算法效率就會變得很低,所以xgboost還提出了一種可並行的近似直方圖算法,用於高效地生成候選的分割點。大致的思想是根據百分位法列舉幾個可能成為分割點的候選者,然后從候選者中根據上面求分割點的公式計算找出最佳的分割點.
9. 在XGBoost里,對於稀疏性的離散特征,在尋找split point的時候,不會對該特征為missing的樣本進行遍歷統計,只對該列特征值為non-missing的樣本上對應的特征值進行遍歷,通過這個工程trick來減少了為稀疏離散特征尋找split point的時間開銷。在邏輯實現上,為了保證完備性,會分別處理將missing該特征值的樣本分配到左葉子結點和右葉子結點的兩種情形。
GBDT與RF區別
1、組成隨機森林的樹可以是分類樹,也可以是回歸樹;而
GBDT只由回歸樹組成,GBDT的會累加所有樹的結果,而這種累加是無法通過分類完成的,因此GBDT的樹都是CART回歸樹,而不是分類樹(盡管GBDT調整后也可以用於分類但不代表GBDT的樹為分類樹)
2、組成隨機森林的樹可以並行生成;而GBDT只能是串行生成
3、對於最終的輸出結果而言,隨機森林采用多數投票等;而GBDT則是將所有結果累加起來,或者加權累加起來
4、隨機森林對異常值不敏感,GBDT對異常值非常敏感
5、隨機森林對訓練集一視同仁,GBDT是基於權值的弱分類器的集成
6、隨機森林是通過減少模型方差提高性能,GBDT是通過減少模型偏差提高性能
RF的優點
1、容易理解和解釋,樹可以被可視化。
2、不需要太多的數據預處理工作,即不需要進行數據歸一化,創造啞變量等操作。
3、隱含地創造了多個聯合特征,並能夠解決非線性問題。
4、和決策樹模型,GBDT模型相比,隨機森林模型不容易過擬合。
5、自帶out-of-bag (oob)錯誤評估功能。 RF的重要特性是不用對其進行交叉驗證或者使用一個獨立的測試集獲得無偏估計,它可以在內部進行評估,也就是說在生成的過程中可以對誤差進行無偏估計,由於每個基學習器只使用了訓練集中約63.2%的樣本,剩下約36.8%的樣本可用做驗證集來對其泛化性能進行‘包外估計’。
6、易於並行化。
RF和Bagging對比:RF的起始性能較差,特別當只有一個基學習器時,隨着學習器數目增多,隨機森林通常會收斂到更低的泛化誤差。隨機森林的訓練效率也會高於Bagging,因為在單個決策樹的構建中,Bagging使用的是‘確定性’決策樹,在選擇特征划分結點時,要對所有的特征進行考慮,而隨機森林使用的是‘隨機性’特征數,只需考慮特征的子集
R
F
的缺點
隨機森林的缺點:
1、不適合小樣本,只適合大樣本。
2、大多數情況下,RF模型的精度略低於GBDT模型的精度。
3、適合決策邊界是矩形的,不適合對角線型的。
預剪枝方法:
a.節點達到完全純度
b.樹的深度達到用戶所要的深度
c.節點中樣本個數少於用戶指定個數
d.不純度指標下降的最大幅度小於用戶指定的幅度
后剪枝方法:
CART: Cost-Complexity Pruning(代價-復雜度剪枝法)
XGB是如何得到特征重要性的?
XGBoost的特征重要性是如何得到的?
某個特征的重要性(feature score),等於它被選中為樹節點分裂特征的次數的和,比如特征A在第一次迭代中(即第一棵樹)被選中了1次去分裂樹節點,在第二次迭代被選中2次…..那么最終特征A的feature score就是 1+2+….
RF獲得特征重要性