通常情況下岁歉,我們?nèi)藶樵谔幚砣笔е档臅r候大多會選用中位數(shù)付燥、均值或是二者的融合來對數(shù)值型特征進(jìn)行填補(bǔ)欺劳,使用出現(xiàn)次數(shù)最多的類別來填補(bǔ)缺失的類別特征筝闹。
很多的機(jī)器學(xué)習(xí)算法都無法提供缺失值的自動處理,都需要人為地去處理蕉朵,但是xgboost模型卻能夠處理缺失值崔涂,也就是說模型允許缺失值存在。
原是論文中關(guān)于缺失值的處理將其看與稀疏矩陣的處理看作一樣始衅。在尋找split point的時候冷蚂,不會對該特征為missing的樣本進(jìn)行遍歷統(tǒng)計,只對該列特征值為non-missing的樣本上對應(yīng)的特征值進(jìn)行遍歷汛闸,通過這個技巧來減少了為稀疏離散特征尋找split point的時間開銷蝙茶。在邏輯實現(xiàn)上,為了保證完備性诸老,會分別處理將missing該特征值的樣本分配到左葉子結(jié)點和右葉子結(jié)點的兩種情形隆夯,計算增益后選擇增益大的方向進(jìn)行分裂即可。可以為缺失值或者指定的值指定分支的默認(rèn)方向蹄衷,這能大大提升算法的效率忧额。如果在訓(xùn)練中沒有缺失值而在預(yù)測中出現(xiàn)缺失,那么會自動將缺失值的劃分方向放到右子樹愧口。
原文的偽代碼如下: