發布時間: 2019-11-24 16:55:16
在實際業務中,不可避免的會出現數據缺失的現象,總結下來大致有如下幾種情形。
?人為疏忽、機器故障等客觀因素導致信息缺失。
?人為刻意隱瞞部分數據。比如在數據表中,有意將一列屬性視為空值,此時缺失值就可看作是一種特殊的特征值。
?數據本身不存在,比如銀行做用戶信息收集時,對學生群體來說工資這一屬性不存在,因此在數據表里顯示為空值。
?系統實時性能要求較高。
?歷史局限性導致數據收集不完整。
機器學習里有一句名言:數據和特征決定了機器學習的上限,而模型和算法的應用只是逼近這個上限。因此高質量的數據對建立好的數據模型有著至關重要的作用。
數據集中缺少部分數據可以降低模型過擬合機率,但也存在模型偏差過大的風險,因為沒有正確地分析變量的行為和關系,從而導致錯誤的預測或分類。
數據缺失原因多種多樣,針對不同的缺失原因,數據缺失值的處理方式也各不相同。值得注意的是,有時屬性缺失并不意味著數據缺失,比如,銀行收集客戶信息時,學生在“工資”這一欄為空值。缺失本身是包含有價值的信息的。因此要結合具體業務場景、數據場景選擇合適的數據缺失值處理方式。
缺失值處理方法眾多,總結下來為三種:
?刪除
?填充
?不處理
適用范圍 | 適用于數據量大,數據缺失值少的數據集。 完全隨機缺失時可直接使用刪除操作。 | |
方法 | 刪除 | 直接刪除包含缺失值的元組或記錄。 |
80%法則 (屬性刪除) | 80%法則 (Bijlsma et al. 2006) 認為,當某一物質的非缺失部分低于總樣本量的80%時,建議刪除該物質。因此,在數據集中,缺失值超過總量的20%時,理論上可刪除該變量或屬性。 | |
優點 | 操作簡單 | |
缺點 | 直接刪除會丟失部分原始數據,破壞數據的歷史完整性。 數據缺失占比較多時,直接刪除可能會改變原始數據的分布情況。 降低模型準確性。 | |
操作 | 利用Python中的pandas的dropna函數直接刪除有缺失值的特征。 |
基于統計學原理,根據初始數據集中非缺失對象取值的分布情況來對一個缺失值進行填充。
填充方式包含人工填充、特殊值填充、平均值填充、熱卡填充、KNN、預測模型、組合完整化方法等。
本節只詳細介紹
n填充
nKNN
n回歸
n變量映射
n其他詳細信息見“更多信息”。
補齊的缺失值畢竟不是原始數據,不一定符合客觀事實。對數據的填充在一定程度上改變了數據的原始分布,也不排除加入了噪音節點的可能性。
因此,對于一些無法應對缺失值的模型,可以用缺失值填充的方式補齊缺失數據。但有些模型本身可以容忍一定的數據缺失情況,此時可以選擇不處理的方式,比如Xgboost模型。
上一篇: 大數據如何應用在智慧城市中?