數據與特徵

缺失資料與插補(missing data and imputation)

/ MISS-ing DAY-tuh and im-pyoo-TAY-shun /

真實的資料集都是有窟窿的。某位受訪者跳過了收入那道題,某個感測器掉線了一個小時,某份病歷乾脆缺了一項壓根沒開過的檢查。這些空白就是缺失資料,而由於多數模型一遇空格就卡殼,你必須決定拿它們怎麼辦。插補,就是用合理的估計把這些窟窿填上的動作。

首先要問:這個值為什麼會缺——這會改變一切。有時資料是完全隨機缺失的(記錄板被雨淋了)。有時缺失則有一個與數值本身相關的原因(收入極高的人不願填報)。後一種情形很危險:「缺失」這件事本身就攜帶了資訊,草率地填補會讓你的結論產生偏差。簡單的插補方法用該欄的均值、中位數或眾數來替補空白;更聰明的方法會用其他特徵去預測那個缺失值,或者在多種貌似合理的填補值上反覆運行分析(即多重插補 multiple imputation),以誠實地反映由此增添的不確定性。

為何重要:把任何含空白的列統統丟棄,可能扔掉你大半的資料,更糟的是,還可能系統性地剔除掉某一類人或某一類情形,使模型產生偏差。用心的插補能讓資料保持可用。但每一個被插補的值都是猜測,而非事實——一個好做法是額外加一欄「曾經缺失」的標記,好讓模型能學到「缺失本身或許就有意義」,而不是假裝那個空缺從未存在過。

一份貸款資料集裡有8%的申請人缺了收入。把所有空白都用平均收入填上,看著很整齊——可如果留空的人多半是失業者,你就等於憑空給他們編了一個舒適的中等收入,把真實的風險藏了起來。加上一個「收入缺失」的標記,能讓模型對這一群體保持恰當的警惕。

一個值「為何缺失」,有時比你填進去的那個值更重要。

和所有預處理一樣,插補必須只在訓練資料上擬合。用包含測試集在內的整份資料去算一個均值來填空,是一種隱蔽的資料洩露,會把你的分數襯托得過分好看。

又稱
missing valuesimputationfilling missing data缺失值插补缺失數據填補