gbdt的核心就在於,每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是乙個加**值後能得真實值的累加量。
同時gbdt是以決策樹(cart)為基學習器的gb演算法,是迭代樹,而不是分類樹。
xgboost:常用來做特徵選擇
xgboost相比於gbdt來說,更加有效應用了數值優化,最重要是對損失函式(**值和真實值的誤差)變得更複雜。目標函式依然是所有樹的**值相加等於**值。
直觀上看,目標要求**誤差盡量小,葉子節點盡量少,節點數值盡量不極端(這個怎麼看,如果某個樣本label數值為4,那麼第乙個回歸樹**3,第二個**為1;另外一組回歸樹,乙個**2,乙個**2,那麼傾向後一種,為什麼呢?前一種情況,第一棵樹學的太多,太接近4,也就意味著有較大的過擬合的風險)
那麼如何得到優秀的組合樹呢?
一種辦法是貪心演算法,遍歷乙個節點內的所有特徵,按照公式計算出按照每乙個特徵分割的資訊增益,找到資訊增益最大的點進行樹的分割。增加的新葉子懲罰項對應了樹的剪枝,當gain小於某個閾值的時候,我們可以剪掉這個分割。但是這種辦法不適用於資料量大的時候,因此,我們需要運用近似演算法。
另一種方法:xgboost在尋找splitpoint的時候,不會列舉所有的特徵值,而會對特徵值進行聚合統計,按照特徵值的密度分布,構造直方圖計算特徵值分布的面積,然後劃分分布形成若干個bucket(桶),每個bucket的面積相同,將bucket邊界上的特徵值作為splitpoint的候選,遍歷所有的候選**點來找到最佳**點。
上圖近似演算法公式的解釋:將特徵k的特徵值進行排序,計算特徵值分布,rk(z)表示的是對於特徵k而言,其特徵值小於z的權重之和佔總權重的比例,代表了這些特徵值的重要程度,我們按照這個比例計算公式,將特徵值分成若干個bucket,每個bucket的比例相同,選取這幾類特徵值的邊界作為劃分候選點,構成候選集;選擇候選集的條件是要使得相鄰的兩個候選**節點差值小於某個閾值。
xgboost與GBDT區別 優勢
傳統gbdt以cart作為基分類器,xgboost還支援線性分類器,這個時候xgboost相當於帶l1和l2正則化項的邏輯斯蒂回歸 分類問題 或者線性回歸 回歸問題 傳統gbdt在優化時只用到一階導數資訊,xgboost則對代價函式進行了二階泰勒展開,同時用到了一階和二階導數。順便提一下,xgboo...
GBDT和XGBOOST的區別
陳天奇的xgboost在kaggle中大放異彩,下面講解gbdt和xgboost的區別 com question 41354392xgboost使用小案例 net hb707934728 article details 70739040分類和回歸樹的學習見李航的統計學習方法cart gbdt和xgb...
GBDT和xgboost的差別
1 模型的scalability,弱分類器除cart外也支援lr和linear 2 策略的scalability,可以支援不同的loss functions,來優化效果,只要 一 二階可導即可 3 演算法的scalability,做了很多細節工作,來優化引數學習和迭代速度,特徵壓縮技術,baggin...