Xgboost如何處理缺失值/


首先,xgboost與gbdt的區別 :

  1. GBDT是機器學習算法,XGBoost是該算法的工程實現。
  2. 在使用CART作為基分類器時,XGBoost顯式地加入了正則項來控制模 型的復雜度,有利於防止過擬合,從而提高模型的泛化能力。
  3. GBDT在模型訓練時只使用了代價函數的一階導數信息,XGBoost對代 價函數進行二階泰勒展開,可以同時使用一階和二階導數。
  4. 傳統的GBDT采用CART作為基分類器,XGBoost支持多種類型的基分類 器,比如線性分類器。
  5. 傳統的GBDT在每輪迭代時使用全部的數據,XGBoost則采用了與隨機 森林相似的策略,支持對數據進行采樣。
  6. 傳統的GBDT沒有設計對缺失值進行處理,XGBoost能夠自動學習出缺 失值的處理策略。

Xgboost如何處理缺失值:

  通常情況下,我們人為在處理缺失值的時候大多會選用中位數、均值或是二者的融合來對數值型特征進行填補,使用出現次數最多的類別來填補缺失的類別特征。

  論文中關於缺失值的處理將其看與稀疏矩陣的處理看作一樣。在尋找split point的時候,不會對該特征為missing的樣本進行遍歷統計,只對該列特征值為non-missing的樣本上對應的特征值進行遍歷,通過這個技巧來減少了為稀疏離散特征尋找split point的時間開銷。在邏輯實現上,為了保證完備性,會分別處理將missing該特征值的樣本分配到左葉子結點和右葉子結點的兩種情形,計算增益后選擇增益大的方向進行分裂即可。可以為缺失值或者指定的值指定分支的默認方向,這能大大提升算法的效率。如果在訓練中沒有缺失值而在預測中出現缺失,那么會自動將缺失值的划分方向放到右子樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM