logo
Loading...

遇到遺失值是否一定要做填補的動作,填補與不填補的影響為何? - Cupoy

老師 想請問一下 在Missing Value處理 若是保留空值不做填補 是否會對模型造成影響?一般...

遇到遺失值是否一定要做填補的動作,填補與不填補的影響為何?

2020/06/24 下午 04:32
機器學習共學討論版
劉致良
觀看數:311
回答數:5
收藏數:2

老師 想請問一下 在Missing Value處理 若是保留空值不做填補 是否會對模型造成影響?


一般來說遇到空值會做保留還是給予一個值(常數值)代替空值,因有朋友認為是保留空值而不應該賦予空值一個數值,讓我感困惑,該使用保留空值還是會做填補的動作比較恰當?


類別資料常數或是填眾數的方法 一般會比較使用哪種

回答列表

  • 2020/06/25 下午 05:53
    Jeffrey
    贊同數:1
    不贊同數:0
    留言數:0

    最簡單暴力的做法當然就是直接 drop 掉那些含有缺失值的 rows


    文明的處理


    針對 numerical 特徵的缺失值,可以用以下方式取代:


    0,缺點是可能會混淆其他本來就是 0 的數值 


    -999,用某個正常情況下不會出現的數值代替,但是選得不好可能會變成異常值,要特別對待 


    Mean,平均數 


    Median,中位數,跟平均數相比,不會被異常值干擾 


    針對 categorical 特徵的缺失值,可以用以下方式取代:


    Mode,眾數,最常見的值 


    改成 "Others" 之類的值 


    更複雜一點的方式是,你可以把沒有缺失值的數據挑出來,用它們來訓練一個 regression 或 classification 模型,用這個模型來預測缺失值。

  • 2020/06/25 下午 06:01
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:2

    嗨,關於「遇到遺失值是否一定要做填補的動作,填補與不填補的影響為何?」問題,以下回答:


    這個答案是「一定要填」,大部分的模型都是基於數學所定義出來的,空值是無法計算的,因此不填補的話模型是無法運行的。


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/06/25 下午 06:04
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:1

    「一般來說遇到空值會做保留還是給予一個值(常數值)代替空值,因有朋友認為是保留空值而不應該賦予空值一個數值,讓我感困惑,該使用保留空值還是會做填補的動作比較恰當?類別資料常數或是填眾數的方法 一般會比較使用哪種」


    => 「有朋友認為是保留空值而不應該賦予空值一個數值」這個想法應該是有問題的,請問沒有數值的空值,模型該如何運算呢?


    常見的處理策略有幾下幾招:


    1. 刪除有空值的欄位

    2. 利用「常數/固定值」填補空值

    3. 利用「統計值」填補空值

    4. 利用「內插法/模型法」填補空值


    會因為不同的場景決定,使用不同的策略。


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/06/25 下午 06:05
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:1

    關於「類別資料常數或是填眾數的方法 一般會比較使用哪種」,你自己有什麼想法嗎?


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃

  • 2020/06/26 上午 00:29
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:2

    嗨,致良,統一前面這幾段的回覆一起討論:


    其實你跟你朋友的想法並不是「不要做填補」,而是「不知道怎麼填補比較好」。基本上,空值是一定要處理的,否則大部分的模型是無法做計算的。至於你有提到某些模型就算沒有補也可以動,這裡的原因是套件當中有處理,因此可以不用事前做,不過比較嚴謹(或是自己實作算法)的話還是需要處理的。


    常見的缺失值處理有以下幾種:


    1. 視影響程度多少決定是否直接刪除

    2. 直接補一個常數值/固定值,例如:0、-1、UNKNOWN、無法確定之類的

    3. 根據全部/類似資料補統計值,連續型建議捕平均數、離散/類別行建議補眾數

    4. 利用統計的內差/回歸或是機器學習模型對欄位運算


    不管是哪一種方法,最高指導原則都是「盡量不破壞原本資料的分佈」。


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃