iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
AI & Data

資料三十-那些最基本的資料處理與分析技能系列 第 9

【Day09-填空】漏漏缺缺欠欠填填刪刪補補——面對缺失值的處理方式

昨天我們講了在numpy中NaN要如何判斷相等
那今天就來稍微談一下會出現缺失值的那些情況要怎麼處理

基本上我們的處理方式不外乎兩種——

填上資料

方法一:依靠統計值來填充

  • 最簡單的填充方式
  • 常見的方法例如:
    • 平均值
    • 中位數
    • 內插值(適用連續資料中間缺失的情況)
  • 好處:統計值可以一定程度的代表這組資料的情況,適合用在資料平均隨機缺失的情況
  • 壞處:
    • 可能會受到極端值影響,例如:我和郭臺銘平均財富1000億
    • 代表性可能不夠,像是缺失值超過15%的時候可能就不適合以這種方式填入

而這邊的統計值,也適用我們【Day02-尺度】40°C為什麼不是20°C的兩倍的時候提到的尺度的概念哦(例如順序、類別、名目尺度的就不適合用統計值來填充)

方法二:依靠模型預測

  • 基本上可以想像成在實際上訓練模型去預測真正的Label之前,用其他的欄位來預測缺失那個區塊
  • 常用的模型有:
    • KNN:用附近的值來做填充
    • RandomForest:簡單直接
    • BayesModel:基於條件機率
  • 好處:填充的值不會太單一,適合用在缺失欄位和其他欄位有一定關係的情況
  • 壞處:
    • 不確定缺失的欄位和現存欄位之間的關係,可能會影響不同模型的效果
    • 具有缺失值的資料可能本身對於資料的預測能力就有一定程度的影響

方法三:引入dummy variable

  • 核心概念:將有/無缺失值的資料再透過一個變數來標記
  • 好處:對原始資料並無任何更動,適用填入任意值都可能影響原始資料意義的情況
  • 壞處:事實上也沒有真的做填充,而是把判斷的責任透過虛擬變數交給了後面的模型而已

方法四:人工再標注

  • 如果是可以再行標注的資料,則可以再透過人工的人工的方式來標注,或是自己上XD
  • 好處:如果這些資料可以事後重新再標注的話,這其實準確率可能會最高
  • 壞處:
    • 費時費力,效率底下
    • 如果是記錄當下情況類型的資料可能也無法人工再標注

畢竟人工智慧的底層結構是工人智慧嘛(X

刪除資料

  • 核心概念:解決不了問題,就解決掉看起來有問題的資料(?
  • 好處:因為沒有填寫,所以所有存在的資料都是真實的
  • 壞處:
    • 可能會刪掉太多資料
    • 後續訓練出來的模型面對真實情況的適應能力會比較低(畢竟都只看過理想的情況)

以上,就是今天簡單對資料缺失值不同情況的簡單介紹~


上一篇
【Day08-比較】我們不一樣——在python中判斷相等的用法is, ==, 與如何判斷nan
下一篇
【Day10-去重】使用python優雅的一行解決list或DataFrame資料去重問題
系列文
資料三十-那些最基本的資料處理與分析技能30

尚未有邦友留言

立即登入留言