機器學習模型支持缺失值的那些事兒


之前讀過一些別人的文章,對於有些模型可以支持缺失數據這件事有點印象,最近開始做一個新的項目,缺失大量的數據,所以就想用這些支持缺失值的模型完成工作。

機器學習模型如何支持缺失值

其實,這個支持並不是說算法本身就不考慮缺失值了,而是開發這個包的程序員幫助你實現了數據預處理,也就是數據填充的工作。

支持缺失值的一些模型

目前我所瞭解的就是基於樹類的模型、貝葉斯網絡、神經網絡的模型,下面簡單介紹下。

基於樹類的模型

隨機森林

  • 把數值型變量中的缺失值用該特徵的中位數替換,描述型用多數替換原則。
  • 對需要填充的樣本和其他樣本做相似度測量,通俗來說就是用與其最像的樣本來填充。

XGBoost

xgboost處理缺失值的方法和其他樹模型不同,xgboost把缺失值當做稀疏矩陣來對待,本身的在節點分裂時不考慮的缺失值的數值。缺失值數據會被分到左子樹和右子樹分別計算損失,選擇較優的那一個。如果訓練中沒有數據缺失,預測時出現了數據缺失,那麼默認被分類到右子樹。

貝葉斯網絡

貝葉斯網絡是用來表示變量間連接概率的圖形模式,它提供了一種自然的表示因果信息的方法,用來發現數據間的潛在關係。在這個網絡中,用節點表示變量,有向邊表示變量間的依賴關係。貝葉斯網絡僅適合於對領域知識具有一定了解的情況,至少對變量間的依賴關係較清楚的情況。否則直接從數據中學習貝葉斯網的結構不但複雜性較高(隨着變量的增加,指數級增加),網絡維護代價昂貴,而且它的估計參數較多,爲系統帶來了高方差,影響了它的預測精度。當在任何一個對象中的缺失值數量很大時,存在指數爆炸的危險。

神經網絡模型

神經網絡的魯棒性強,所以對於缺失數據不是非常敏感。

參考:https://blog.csdn.net/yh0vlde8vg8ep9vge/article/details/78265671

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