你有沒有在你看到資料欄位有缺值時,還在想這件事到底該怎麼看?
把它想成用合理方法把缺掉的空格補起來。 缺值不處理,很多模型不能直接訓練,或會被偏差影響。 補值方式不同,結果差很多,不能隨便塞一個平均數就結束。
你可以把它想成一個把抽象概念拉回日常判斷的提示,先知道它解決什麼問題,再看技術細節。
容易混淆
data-deletion vs 刪除遺失值:刪除遺失值像把有缺頁的書直接丟掉,雖然解決了問題,但可能丟掉很多有用的資訊;資料填補像把缺頁補上,盡量保留所有資訊,讓資料完整可用。 常見混淆:資料填補 vs data-deletion 補值是把缺的補起來,刪除是直接移除樣本。
記住這句就好
補值要合理,不是隨便填滿。
實際案例
年齡缺漏 可用中位數、鄰近樣本或模型估計去補,但要保留缺值是否存在的資訊。 感測器掉點 短時間缺值可插補,長時間缺值可能要改資料來源或丟棄。
算法與應用
- 常見方法有平均數、中位數、眾數、插值和模型式補值。
- 補值前要先看缺值是隨機缺失,還是有規律地缺。
- 不同欄位適合不同方法,數值欄和類別欄不能一樣補。
情境判斷
Q1: 少量年齡欄缺值,你會先想到什麼?
Q2: 如果缺值很多而且不是隨機缺失,還能直接補嗎?
常見問題
資料填補一定能改善模型效能嗎?
不一定。如果填補方法不當,例如使用均值填補處理非隨機遺失的資料,反而可能引入偏差,降低模型效能。選擇合適的填補方法,並驗證填補結果的合理性,才能確保改善模型效能。此外,如果遺失值比例非常低,不進行填補可能也是一個可行的選擇。
如何判斷遺失值的模式(MCAR, MAR, MNAR)?
判斷遺失值的模式並不容易,通常需要結合領域知識和統計方法。可以通過分析遺失值與其他變數之間的關係來推斷。例如,如果遺失值與任何其他變數都沒有關係,則可能是 MCAR。如果遺失值與某些可觀察的變數有關,則可能是 MAR。如果遺失值與自身(遺失值本身)有關,則可能是 MNAR。但需要注意的是,這些只是推斷,很難完全確定遺失值的模式。
除了上述方法,還有其他資料填補方法嗎?
是的,除了上述方法,還有一些其他的資料填補方法,例如使用深度學習模型進行填補。例如,可以使用自編碼器 (Autoencoder) 或生成對抗網路 (GAN) 來學習資料的分布,然後生成遺失值。這些方法通常需要大量的資料和計算資源,但可以更好地處理複雜的遺失值模式。此外,還有一些專門針對時間序列資料的填補方法,例如線性插值和樣條插值。