1)在訓練的過程中,通過gini指數選擇分離點的特徵,乙個特徵被選中的次數越多,評分越高。2)xgboost對缺失值有預設的處理方法,對於特徵的值有缺失的樣本,xgboost可以自動學習出它的**方向,可以大大的提公升演算法的效率。
2、什麼是oob?隨機森中oob如何計算的?(為什麼不用交叉驗證?)
隨機森林採用的bagging方法,其中有放回的取樣過程,每次都有一定比例的資料沒被選中,也就是說沒有參加當前決策樹的建立,把這部分資料成為袋外資料,可用來取代測試集做誤差估計。所以在隨機森林演算法中,不需要再進行交叉驗證或單獨的測試集。
3、學習器結合的好處?
1)統計學角度,由於學習任務的假設空間往往很大,很多假設在訓練集上表現的差不多,如果僅僅使用單個學習器,可能會導致泛化效能降低,而通過結合多個學習器,可以減小這一問題。2)計算角度看,單個學習器容易陷入區域性最優,通過多次執行之後結合,可降低陷入區域性最優的風險。
4、訓練過程中,每輪訓練一直存在分類錯誤的問題,整個adaboost卻能快速收斂,為何?
每輪訓練結束後,adaboost框架會對樣本的權重進行調整,該調整的結果是越到後面被錯誤分類的樣本權重會越高。這樣到後面,單個弱分類器為了達到較低的帶權分類誤差都會把樣本權重高的樣本分類正確。雖然單獨來看,單個弱分類器仍會造成分類錯誤,但這些被錯誤分類的樣本的權重都較低,在adaboost框架的最後輸出時會被前面正確分類的高權重弱分類器「平衡」掉。這樣造成的結果就是,雖然每個弱分類器可能都有分錯的樣本,然而整個adaboost框架卻能保證對每個樣本進行正確分類,從而實現快速收斂。
面試同樣經常被問到,記錄一下!
相同點:
(1)gbdt與xgb同屬於boosting方法;
(2)xgb可以說是gbdt的高配版。
不同點:
(1).從基分類器來說,gbdt只能使用cart樹,而xgb同時支援cart樹和線性分類器,這個體現在python裡就是
gbtree和dart是基於樹的(後者引入了神經網路中的dropout),gblinear是線性分類器。
(2).gbdt在優化時只用到一階導數,xgb則對代價函式進行了二階泰勒展開,同時用到了一階和二階導數,順便,xgb支援自定義代價函式,只要函式一階、二階可導。
(3) .列抽樣(column subsampling),xgb借鑑了隨機森林的做法,支援列抽樣,不僅能降低過擬合,還能減少計算。
(4).對於特徵的值有缺失的樣本,xgb可以自動學習出它的**方向。
(5).xgb支援並行(在特徵粒度上並行(xgboost在訓練之前,預先對資料進行排序,然後儲存為block結構,後面的迭代中重複地使用這個結構,大大減小計算量,這個block結構也使得在進行節點**時可以並行的需要計算每個特徵的增益,最終選擇增益最大的那個特徵去做**)),樹的生成還是序列的。
(6).可並行的近似直方圖演算法。樹節點在進行**時,需要計算每個特徵的每個**點對應的增益,即用貪心法列舉所有可能的分割點。當資料無法一次載入記憶體或者在分布式情況下,貪心演算法效率會變得很低,所以xgb還提出了一種可並行的近似直方圖演算法,用於高效地生成候選的分割點。(這個具體怎麼實現搞不清楚,大致的思想是根據百分位法列舉幾個可能成為分割點的候選者,然後從候選者中根據上面求分割點的公式計算找出最佳的分割點。)
(7).shrinkage(縮減),相當於學習速率(xgb中的eta),xgb在進行完一次迭代後,會將葉子節點的權重乘上該係數,主要是為了削弱各棵樹的影響,讓後面有更大的學習空間。(傳統gbdt的實現也有學習速率),如下:
(8).顯式地將樹模型的複雜度(節點的個數+節點輸出的平方)作為正則項加在優化目標。正則項降低了模型的variance,使學習出來的模型更加簡單,防止過擬合,這也是xgboost優於傳統gbdt的乙個特性。
隨機森林(RF)與GBDT的異同
相同點 好吧,其實相同點不太好說,如果非要說的話,那就是它們都是由多棵樹組成,最終結果由這多棵樹一起決定 其實中間的細節還是不一樣 1 都是由多棵樹組成 2 最終的結果都是由多棵樹一起決定 不同點 1 從整合學習來說,rf屬於的bagging 稍微有點改變,增加了列抽樣 而gbdt屬於boostin...
Xgboost的特點(與GBDT對比)
xgboost是在gbdt上進行改進的模型,其主要的特點是做了下面的工作,對了樹每次做 候選時,是使用的gain增益,而不是普通的gini指數或者均方差,是一種優化過的誤差計算.1 將樹模型的複雜度加入到正則項中,參與到損失函式,來避免過擬合問題。葉子打分就是 值,分類問題是給的概率 2 對損失函式...
RF與GBDT之間的區別與聯絡?
1 相同點 都是由多棵樹組成,最終的結果都是由多棵樹一起決定。2 不同點 隨機森林採用bagging,而gbdt採用boosting 組成隨機森林的樹可以分類樹也可以是回歸樹,而gbdt只由回歸樹組成 組成隨機森林的樹可以並行生成,而gbdt是序列生成 隨機森林的結果是多數表決表決的,而gbdt則是...