大數據競賽神器---xgboost與gdbt區別比較

1.從本質上看
gbdt是機器學習算法的一種,xgboost是該算法的具體工程實現

2.基分類器
gbdt採用cart作爲基分類器,而xgboost的基分類器可以是線性的

3.防止過擬合
xgboost在目標函數中顯式的加入了正則化項來控制模型的複雜度

4.數據的使用
gbdt每輪迭代都使用全部數據,xgboost則可以對數據進行採用

5.對缺失值處理
XGBOOST可以自動學習出缺失值的分裂方向

6.列抽樣
XGBOOST可以支持類似於隨機森林的列抽樣

7.模型訓練
GBDT在訓練模型時中使用了代價函數的一階導數信息,而XGBOOST將代價函數進行了二次展開,使用了二階導數的信息。

8.並行方式
兩個模型從迭代上都不是並行的,因爲同屬於boosting,只能是串行的,但是從特徵的粒度來看,xgboost可以實現並行。
決策樹在確定最佳分割點時,需要對特徵的值進行排序。XGBoost在訓練之前,預先對數據進行了排序,然後保存爲block(塊)結構,後面的迭代中重複地使⽤這個結構,⼤大減小計算量。這個block結構也使得並行成爲了可能,在進行節點的分裂時,需要計算每個特徵的增益,最終選增益最大的那個特徵去做分裂,那麼各個特徵的增益計算就可以開多線程進行。

以上都是本人通過各種方式學習後總結了兩者的一些不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章