題幹與適用場景
這是資料科學、資料分析與機器學習面試中的常見情境。資料集包含使用者行為、地區、收入與是否流失的標籤,收入欄位缺失率為 18%。你要先解釋缺失為何發生,再決定處理方式;不能只按缺失比例套用規則。
面試官考察點
- 能否區分 MCAR、MAR、MNAR,而不是把所有空值視為同一種問題。
- 能否說清楚缺失指示變數、插補模型與訓練驗證邊界。
- 能否辨識缺失本身攜帶的業務訊號、選擇偏差與資料洩漏。
回答前需要釐清的問題
- 收入是使用者主動填寫、系統採集失敗,還是只對部分地區顯示?機制不同會改變可識別性。
- 目標是預測還是估計因果效果?預測可保留缺失訊號,因果分析需要更嚴格的假設與敏感度分析。
- 線上推論時是否同樣拿不到收入?若訓練時能看到補錄值、線上卻沒有,插補策略會失配。
- 資料切分按使用者、時間還是隨機列?同一使用者跨集合會讓插補與評估產生洩漏。
30 秒回答框架
我先畫出缺失指示變數與可觀察欄位、目標之間的關係,區分已知原因、可由觀察變數解釋的 MAR,以及無法由觀察資料驗證的 MNAR 假設。然後只在訓練集擬合插補器,保留缺失指示,並用原始缺失模式做分層評估。若缺失機制無法確認,我會比較刪除、簡單插補、模型插補與敏感度方案,選擇在業務代價和驗證結果都可接受的方案。
分步驟深入解答
1. 把空值變成可分析的事件
為每個欄位建立缺失指示 M,並統計它按時間、地區、裝置、渠道與目標標籤的分布。先查日誌、表單流程與上游 schema;如果某版本發布後缺失突然升高,優先修復採集鏈路,不要用插補掩蓋事故。
2. 解釋三種機制的邊界
MCAR 表示缺失與觀察值和未觀察值都無關;在這個假設下,完整案例分析在滿足其他條件時不會因缺失機制產生系統偏差,但會損失樣本量。MAR 表示給定已觀察變數後,缺失與缺失值本身無關,例如收入缺失由地區與裝置解釋。MNAR 表示即使控制已觀察變數,缺失仍與未觀察的收入值或其原因相關,例如高收入使用者更不願填寫收入。
這些機制不是看一張圖就能證明的標籤。只能用日誌和觀察變數支持某個解釋,MNAR 往往需要領域假設、外部資料或敏感度分析。
3. 選擇處理策略
- 缺失由可修復的採集故障造成:回補原始來源或修復管道,保留修復版本。
- 預測任務且缺失本身有訊號:用訓練集統計量或模型插補,同時加入缺失指示,驗證線上是否同樣缺失。
- 缺失比例很小且機制可信為 MCAR:可以刪除,但要報告樣本量變化和分層影響。
- 需要估計不確定性或存在 MNAR 風險:比較多重插補、顯式缺失模型、上下界與模式混合敏感度分析,不能把單次平均填充當作證據。
scikit-learn 的 SimpleImputer、KNNImputer 與 IterativeImputer 是不同假設下的工具,不會自動識別缺失機制。插補器必須在訓練資料上擬合,再套用到驗證、測試與線上資料。
4. 設計驗證與洩漏防線
把插補、標準化與編碼放進同一個訓練 pipeline。每個交叉驗證折內重新擬合,禁止先用全量資料計算平均值、中位數或鄰居。時間資料按時間切分,使用者資料按使用者切分。比較原始缺失率、插補後分布、缺失指示係數、校準與分層指標;還要在驗證集人為增加缺失,模擬線上退化。
5. 用業務代價決定是否接受結果
如果誤判高價值使用者的代價遠大於漏掉普通使用者,不能只比較 AUC。報告不同缺失模式下的召回、校準、閾值後成本、人工審核量與拒絕服務風險。上線前凍結插補器版本、欄位 schema 與缺失策略,監控缺失率漂移;漂移超過閾值時優先停止自動決策或回退到安全規則。
高品質示範回答
「我不會從 18% 這個數字直接決定刪除還是填充。先確認收入缺失是採集故障、使用者選擇,還是某些渠道的流程差異,並把缺失指示按時間、地區、裝置和流失標籤分層。若可觀察欄位解釋了缺失,我會把它當作 MAR 假設,所有插補器只在每個訓練折擬合,並保留缺失指示。若業務上合理懷疑高收入使用者更少填寫,我會把 MNAR 當作無法由目前資料證明的假設,做模式混合或上下界敏感度分析。最後用時間或使用者隔離的驗證集比較刪除、簡單插補與模型插補,報告校準、分層成本與線上缺失率;若線上拿不到收入,就不能依賴訓練階段的補錄值。」
常見錯誤
- 看到缺失率 18% 就刪除 → 樣本損失與選擇偏差未被評估 → 先分析機制、分層差異與業務代價。
- 先對全量資料求平均再切分 → 驗證集資訊進入訓練 → 把插補放進每折訓練 pipeline。
- 把缺失指示當成 MNAR 的證明 → 觀察到相關性不等於知道未觀察值的原因 → 寫出假設並做敏感度分析。
- 只比較 AUC → 閾值成本、校準與缺失漂移被隱藏 → 報告分層指標、決策成本與線上監控。
追問及應對
如果收入欄位在生產環境完全不可用怎麼辦?
訓練與驗證都要按生產可用欄位重建;可以保留缺失指示作為恆定訊號,也可以刪除該特徵。不能用離線補錄收入製造虛假的線上收益,除非生產流程也能在同一時點取得它。
如何驗證 MNAR 敏感度?
先明確缺失值相對觀測值可能偏高或偏低的範圍,再改變該偏移量或缺失模式模型,重複估計指標與業務成本。若結論在合理範圍內反轉,就把結果標記為依賴假設,並收集外部資料或設計補採樣。
多重插補和模型插補有什麼不同?
模型插補通常產生一個完成資料集,適合預測但可能低估不確定性。多重插補生成多個合理資料集,再合併估計結果,更適合報告參數不確定性;兩者都必須在訓練邊界內擬合,並檢查插補模型是否引入目標洩漏。
缺失率突然從 18% 升到 30% 時先做什麼?
先暫停把新資料當成普通樣本,檢查 schema、客戶端版本、埋點與上游任務,並按受影響切片確認範圍。若是採集事故,修復或回補後再訓練;若確屬業務變化,重新評估缺失機制、閾值與回退規則。