Xgboost中需要注意的點

1 簡介

Xgboost是目前非常流行的機器學習模型,它屬於集成學習中的boosting方法,在多種競賽場合取得非常好的成績,在工業界也有廣泛應用。它和一般教科書上的講解的梯度樹在理論推導上有較大不同,陳天奇在其分享的ppt《Introduction to Boosted Trees》和發表的論文《XGBoost: A Scalable Tree Boosting System》中詳細介紹了Xgb的理論推導,通過泰勒展開引入一階,二階信息,推導過程不受具體損失函數影響,形成上非常完美。但是在實際使用中需要注意一些地方,總結如下

2 Xgboost在使用中的注意點

2.1 離散特徵如何處理

在Xgb中需要將離散特徵one-hot編碼,和連續特徵一起輸入訓練,這樣做是爲了達到在cart樹中處理離散特徵的方式一致,即每次選擇一個離散特徵對應的樣本作爲一類,剩下的所有特徵值對應的樣本作爲一類。不按照掃描切分,因爲掃描切分會導致後續的子樹中特徵組合變少。

2.2 訓練數據的格式選擇稀疏還是稠密

Xgb中支持稀疏矩陣訓練模型,導致數據稀疏的原因如下

  • 缺省值
  • 稠密數據中零元素
  • 離散特徵one-hot編碼後產生的0值
    下圖是《XGBoost: A Scalable Tree Boosting System》中稀疏訓練數據和稠密訓練數據的效率
    這裏寫圖片描述

2.3 缺省值是如何處理的

在Xgb中處理稀疏數據時,沒有值的特徵是走默認的分支。在2.2中提到缺省值也是稀疏存儲的,所以在Xgb中缺省值也是走默認分支

2.4 迴歸樹不僅僅可以處理迴歸問題

Xgb預測的是樹節點上的最有得分,它不僅可以處理迴歸問題,還可以處理分類,排序問題。它只依賴於定義的損失函數。它可以支持均方誤差,似然函數等。

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