對于缺失值的處理

建議:不同場景下的數(shù)據(jù)缺失機制不同隧哮,這需要工程師基于對業(yè)務選擇合適的填充方法岸浑。

如何判斷缺失值類型盖桥?
缺失值的分類按照數(shù)據(jù)缺失機制可分為:
可忽略的缺失

  • 完全隨機缺失(missing completely at random, MCAR)齿税,所缺失的數(shù)據(jù)發(fā)生的概率既與已觀察到的數(shù)據(jù)無關,也與未觀察到的數(shù)據(jù)無關
    (例如他托,由于測量設備出故障導致某些值缺失)
  • 隨機缺失(missing at random, MAR),假設缺失數(shù)據(jù)發(fā)生的概率與所觀察到的變量是有關的,而與未觀察到的數(shù)據(jù)的特征是無關的疗锐。
    (例如小染,人們是否透露收入可能與性別、教育程度脱货、職業(yè)等因素有關系)

不可忽略的缺失

  • 非隨機缺失(missing not at random, MNAR)臼疫,如果不完全變量中數(shù)據(jù)的缺失既依賴于完全變量又依賴于不完全變量本身,這種缺失即為不可忽略的缺失鸽斟。
    (例如立倍,在控制了性別、教育程度鹦聪、職業(yè)等已觀測因素之后泽本,如果收入是否缺失還依賴于收入本身的值,那么收入就是非隨機缺失的

平常工作中遇到的缺失值大部分情況下是隨機的(缺失變量和其他變量有關)

這個就可以用estimator來做了姻僧,選其中一個變量(y)规丽,然后用其他變量作為X,隨便選個值填充X的缺失部分撇贺,用X train一個estimator赌莺,再預測y的缺失部分(大致思路)

此外有些數(shù)據(jù)是符合某種分布的,利用這個分布呢也可以填充缺失的數(shù)據(jù)松嘶,如(EM算法)


處理缺失數(shù)據(jù)的三個標準:
1. 非偏置的參數(shù)估計
不管你估計means, regressions或者是odds ratios艘狭,都希望參數(shù)估計可以準確代表真實的總體參數(shù)。在統(tǒng)計項中翠订,這意味著估計需要是無偏的巢音。有缺失值可能會影響無偏估計,所以需要處理尽超。
2. 有效的能力:
刪除缺失數(shù)據(jù)會降低采樣的大小官撼,因此會降低power。如果說問題是無偏的似谁,那么得到的結果會是顯著的傲绣,那么會有足夠的能力來檢驗這個效力(have adequate power to detect your effects)。反之棘脐,整個檢測可能失效斜筐。
3. 準確的標準差(影響p值和置信區(qū)間):
不僅需要參數(shù)估計無偏,還需要標準差估計準確蛀缝,在統(tǒng)計推斷中才會有效顷链。


數(shù)據(jù)缺失的處理方法

缺失值處理的方法大致分為這幾類:1、刪除法屈梁;2嗤练、基于插補的方法;3在讶、基于模型的方法; 4煞抬、不處理; 5、映射高維

有些處理方法是基于完全隨機缺失假設(MCAR)构哺,一般來說革答,當數(shù)據(jù)不是 MCAR 而 是隨機缺失(MAR)時战坤,這些方法是不適用的;而有些方法(如似然估計法)在 MAR 的假設下是適用的残拐,因此途茫,在進行缺失數(shù)據(jù)處理時,首先需要認真分析缺失數(shù) 據(jù)產(chǎn)生的原因溪食,然后采取有針對性的補救措施囊卜,這樣才能夠獲得無偏或弱偏估計。


此處關于使用多重插補來處理非隨機缺失(MNAR)的問題错沃,它其實效果不一定栅组,也可能出現(xiàn)效果倒退的情況,總的說多重更適合MAR

缺失值處理技術

注:此處一元與多元指的是僅有一個特征有缺失值與多個特征有缺失值

對于不同類別的缺失值的處理方法如上圖枢析。

以下展開介紹各個方法:

1. 刪除法

  • 刪除觀察樣本
    將存在缺失數(shù)據(jù)的樣本刪除玉掸,從而得到一個完備的數(shù)據(jù)集。這種方法簡單易行醒叁,在對象有多個屬性缺失值排截、被刪除的含缺失值的對象與信息表中的數(shù)據(jù)量相比非常小的情況下是非常有效的。

缺點:

  • 當缺失數(shù)據(jù)是非隨機分布時辐益,這種方法可能導致數(shù)據(jù)發(fā)生偏離断傲,從而導致錯誤的結果。
  • 造成資源的大量浪費智政,丟棄了大量隱藏在這些對象中的信息认罩。

優(yōu)點:

  • 操作簡單
  • 當缺失值數(shù)量較小,并且是隨機分布時续捂,直接刪除影響很小垦垂,還能擺脫缺失值的困擾
  • 刪除變量
    當某個變量缺失值較多,且對研究目標影響不大牙瓢,可以將變量整體刪除劫拗。

2. 插補法


2.1 單一插補法

  • 均值插補 (均值包括平均值、眾數(shù)矾克、中位數(shù)页慷、或常數(shù)(0?)等)
    均值插補是在處理數(shù)據(jù)時可以把變量分為數(shù)值型和非數(shù)值型,如果是非數(shù)值型的缺失數(shù)據(jù)胁附,運用統(tǒng)計學中眾數(shù)的原理酒繁,用此變量在其他對象中取值頻數(shù)最多的值來填充缺失值;如果是數(shù)值型的缺失值控妻,則取此變量在其他所有對象的取值均值來補齊缺失值州袒。
    Tip:對于正態(tài)分布的數(shù)據(jù)可以使用均值代替,如果數(shù)據(jù)是傾斜的弓候,使用中位數(shù)可能更好郎哭。

  • 不過這種方法只能在缺失值是完全隨機缺失時為總體均值或總量提供無偏估計他匪。但此方法使得插補值集中在均值點上,在分布上容易形成尖峰夸研,導致方差被低估诚纸。
    可根據(jù)一定的輔助變量,將樣本分成多個部分陈惰,然后在每一部分上分別使用均值插補,稱為局部均值插補毕籽。(K-Means抬闯、K-NN等)

缺點:

  • 當缺失數(shù)據(jù)不是隨機數(shù)據(jù)時會產(chǎn)生偏差。(方差)
  • 沒有考慮到特征間的相關性
  • 沒有考慮到插補值的不確定性
  • 不會非常精確

優(yōu)點:

  • 不會減少樣本信息关筒,處理簡單溶握,低缺失率首選

  • KNN插值
    KNN是一種Classification算法。這種算法基于特征相似性來預測新數(shù)據(jù)點的值蒸播,這就意味著新數(shù)據(jù)點是基于和其他點的相似程度來被賦值睡榆。這對于缺失值的預測非常有用:找到距離缺失值距離最近的K個數(shù)據(jù)點,然后基于這些點的值來插補缺失值袍榆。

  • 那它是如何實現(xiàn)的呢胀屿?首先創(chuàng)建一個基本的均值插補,使用complete list構建一個KDTree, 然后使用KDTree來計算距離最近的點(NN)包雀,找到距離最近的K個點以后宿崭,取這些點的加權平均數(shù)。
    KNN插值

優(yōu)點:

  • 比mean / median / most frequent插補的方法更精確
  • 易于理解也易于實現(xiàn)

缺點:

  • 計算量大,需要在memory里存儲整個training數(shù)據(jù)集
  • 分析大型數(shù)據(jù)時會很耗時
  • KNN對 outliers 非常敏感
  • 在高維數(shù)據(jù)集中才写,最近與最遠鄰居之間的差別非常小葡兑,因此KNN的準確性會降低。

注:k-means插補與KNN插補很相似赞草,區(qū)別在于k-means是利用無缺失值的特征來尋找最近的N個點讹堤,然后用這N個點的我們所需的缺失的特征平均值來填充,而KNN則是先用均值填充缺失值再找最近的N個點厨疙。


  • 隨機插補
    隨機插補是在均值插補的基礎上加上隨機項洲守,通過增加缺失值的隨機性來改善缺失值分布過于集中的缺陷,優(yōu)于純均值插補。

類似的還有隨機回歸插補 :也優(yōu)于純回歸插補


  • 期望最大化(EM算法)
    該算法的特點是通過數(shù)據(jù)擴張沾凄,將不完全數(shù)據(jù)的處理問題轉化為對完全數(shù)據(jù)的處理問題岖沛,且通過假設隱變量的存在,簡化似然方程搭独,將比較復雜的似然函數(shù)極大似然估計問題轉化為比較簡單的極大似然估計問題婴削。通過以下步驟實現(xiàn):1、用估計值替代缺失值牙肝;2唉俗、參數(shù)估計嗤朴;3、假定2中的參數(shù)估計值是正確的虫溜,再對缺失值進行估計雹姊;4、再估計缺失值衡楞。

  • 該方法比刪除個案和單值插補更有吸引力吱雏,它一個重要前提:適用于大樣本。有效樣本的數(shù)量足夠以保證極大似然估計值是漸近無偏的并服從正態(tài)分布瘾境。但是這種方法可能會陷入局部極值歧杏,收斂速度也不是很快,并且計算很復雜迷守。(SPSS菜單里有這種方法)

優(yōu)點:

  • 適用于高缺失率 , 適用于大樣本

缺點:

  • 這種方法可能會陷入局部極值犬绒,收斂速度也不是很快,并且計算很復雜兑凿。
  • 只有足夠多的有效樣本才能保證極大似然估計值是漸近無偏的并服從正態(tài)分布

其他單一插補法:

  • 拉格朗日插值填充
    (即認為A列數(shù)的分布是一個多次多項式凯力,取缺失值前后的N個值,計算出多項式公式然后礼华,帶入缺失值進行填充)

  • Hot-Deck imputation
    從其他相關且相似變量中取值咐鹤。


2.2 多重插補法

與單一插補方法相比較,多重插補方法充分地考慮了數(shù)據(jù)的不確定性圣絮。多重插補的主要分為三個步驟慷暂,綜合起來即為:插補、分析晨雳、合并行瑞。插補步是為每個缺失值都構造出 m 個可能的插補值,缺失模型具有不確定性餐禁,這些插補值能體現(xiàn)出模型的這個性質血久,利用這些可能插補值對缺失值進行插補就得到了 m 個完整數(shù)據(jù)集。分析步是對插補后的 m 個完整數(shù)據(jù)集使用一樣的統(tǒng)計數(shù)據(jù)分析方法進行分析帮非,同時得到 m 個統(tǒng)計結果氧吐。綜合步就是把得到的這 m 個統(tǒng)計結果綜合起來得到的分析結果,把這個分析結果作為缺失值的替代值末盔。多重插補構造多個插補值主要是通過模擬的方式對估計量的分布進行推測筑舅,然后采用不同的模型對缺失值進行插補,這種插補是隨機抽取的方式陨舱,這樣以來能提高估計的有效性和可靠性翠拣。
多重插補-python手冊

多重插補法主要有以下幾種:

  • PMM法(Predictive Mean Matching,PMM)
    PMM法也稱隨機回歸插補法,它是回歸插補法的變形,插補值是由回歸模型的的預測值加上一個隨機產(chǎn)生的誤差項結合而成.一般而言,對應于某種確定性的插補方法,可以產(chǎn)生出相應的隨機性插補方法.它的優(yōu)點是能夠在正態(tài)性假設不成立的情況下插補適當?shù)闹?缺點是隨機誤差項的確定比較困難.

  • 趨勢得分法(Propensity Score, PS)
    趨勢得分是在給定觀測協(xié)變量時分配給一個特殊處理的條件概率,它對每個有缺失值的變量產(chǎn)生一個趨勢得分來表示觀測缺失的概率游盲。之后,根據(jù)這些趨勢得分,把觀測分組,最后再對每一組數(shù)據(jù)應用近似貝葉斯Bootstrap插補误墓。

  • 馬爾科夫鏈蒙特卡羅法(Markov Chain Monte Carlo,MCMC)
    MCMC方法是蒙特卡洛重要抽樣, 是流行的貝葉斯分析方法中計算后驗期望的方法蛮粮。一般地,MCMC將缺失數(shù)據(jù)視為參數(shù),然后將這些參數(shù)納入抽樣的范圍即可。MCMC方法對缺失數(shù)據(jù)的處理相對靈活谜慌、簡單易行然想。
    MCMC—馬爾可夫蒙特卡洛抽樣
    貝葉斯估計、最大似然估計欣范、最大后驗概率估計
    有缺失值怎么辦——多重填補技術的思路與軟件實現(xiàn)

優(yōu)點:

  • 與其他方法相比較变泄,多重插補方法能夠盡可能的利用其他輔助信息,給出多個替代值恼琼,保持了估計結果的不確定性的大量信息
  • 多重插補方法能夠盡可能接近真實情況下去模擬缺失數(shù)據(jù)的分布妨蛹,在這樣的條件下能夠盡可能的保持變量之間的原始關系
  • 在多重插補的插補步驟會產(chǎn)生多個插補值,這樣以來就可以利用這些不同的替代值來進一步反映無回答的不確定性驳癌。

缺點:

  • 生成多重插補比單一插補需要更多工作;
  • 貯存多重插補數(shù)據(jù)集需要更多存儲空間役听;
  • 分析多重插補數(shù)據(jù)集比單一插補需要花費更多精力颓鲜。

3. 模型法:

(使用回歸、貝葉斯典予、隨機森林甜滨、決策樹等模型對缺失數(shù)據(jù)進行預測。)

基于已有的其他字段瘤袖,將缺失字段作為目標變量進行預測衣摩,從而得到較為可能的補全值。如果帶有缺失值的列是數(shù)值變量捂敌,采用回歸模型補全艾扮;如果是分類變量,則采用分類模型補全占婉。

注:

  • 如果其它特征變量與缺失變量無關泡嘴,則預測的結果毫無意義,會影響最終模型的訓練逆济。
  • 而如果預測結果相當準確,則又說明這個變量完全沒有必要進行預測,因為這必然是與特征變量間存在重復信息卵贱。
  • 一般情況下西乖,會介于兩者之間效果為最好,若強行填補缺失值之后引入了自相關简僧,這會給后續(xù)分析造成障礙建椰。

4. 不處理

常見能夠自動處理缺失值模型包括:KNN、決策樹和隨機森林岛马、神經(jīng)網(wǎng)絡和樸素貝葉斯广凸、DBSCAN(基于密度的帶有噪聲的空間聚類)等阅茶。

處理思路:
自動插補:例如XGBoost會通過training loss reduction來學習并找到最佳插補值。
忽略:缺失值不參與距離計算谅海,例如:KNN脸哀,LightGBM
將缺失值作為分布的一種狀態(tài):并參與到建模過程,例如:決策樹以及變體扭吁。
不基于距離做計算:因此基于值得距離計算本身的影響就消除了撞蜂,例如:DBSCAN。

延伸:什么樣的模型對缺失值更敏感侥袜?
主流的機器學習模型千千萬蝌诡,很難一概而論。但有一些經(jīng)驗法則(rule of thumb)供參考:

  • 樹模型對于缺失值的敏感度較低枫吧,大部分時候可以在數(shù)據(jù)有缺失時使用浦旱。
  • 涉及到距離度量(distance measurement)時,如計算兩個點之間的距離九杂,缺失數(shù)據(jù)就變得比較重要颁湖。因為涉及到“距離”這個概念,那么缺失值處理不當就會導致效果很差例隆,如K近鄰算法(KNN)和支持向量機(SVM)甥捺。
  • 線性模型的代價函數(shù)(loss function)往往涉及到距離(distance)的計算,計算預測值和真實值之間的差別镀层,這容易導致對缺失值敏感镰禾。
  • 神經(jīng)網(wǎng)絡的魯棒性強,對于缺失數(shù)據(jù)不是非常敏感唱逢,但一般沒有那么多數(shù)據(jù)可供使用吴侦。
  • 貝葉斯模型對于缺失數(shù)據(jù)也比較穩(wěn)定,數(shù)據(jù)量很小的時候首推貝葉斯模型坞古。

ID3妈倔、c4.5、cart绸贡、rf到底是如何處理缺失值的盯蝴?


5. 映射到高維

最精確的做法,把變量映射到高維空間听怕。
比如性別捧挺,有男、女缺失三種情況尿瞭,則映射成3個變量:是否男闽烙、否女、是否缺失。連續(xù)型變量也可以這樣處理黑竞。比如Google捕发、 百度的CTR預估模型,預處理時會把所有變量都這樣處理很魂,達到幾億維扎酷。又或者可根據(jù)每個值的頻數(shù),將頻數(shù)較小的值歸為一類'other'遏匆,降低維度法挨。此做法可最大化保留變量的信息。

優(yōu)點:完整保留了原始數(shù)據(jù)的全部信息不用考慮缺失值幅聘、不用考慮線性不可分之類的問題
缺點:計算量大大提升凡纳,而且只有在樣本量非常大的時候效果才好,否則會因為過于稀疏帝蒿,效果很差荐糜。


時間序列分析專屬方法

前推法(LOCF,Last Observation Carried Forward葛超,將每個缺失值替換為缺失之前的最后一次觀測值)與后推法(NOCB暴氏,Next Observation Carried Backward,與LOCF方向相反——使用缺失值后面的觀測值進行填補)

這是分析可能缺少后續(xù)觀測值的縱向重復測量數(shù)據(jù)的常用方法巩掺∑颍縱向數(shù)據(jù)在不同時間點跟蹤同一樣本页畦。當數(shù)據(jù)具有明顯的趨勢時胖替,這兩種方法都可能在分析中引入偏差,表現(xiàn)不佳豫缨。

線性插值独令。此方法適用于具有某些趨勢但并非季節(jié)性數(shù)據(jù)的時間序列。

季節(jié)性調(diào)整+線性插值好芭。此方法適用于具有趨勢與季節(jié)性的數(shù)據(jù)燃箭。


總而言之,大部分數(shù)據(jù)挖掘的預處理都會使用比較方便的方法來處理缺失值舍败,比如均值法招狸,但是效果上并不一定好,因此還是需要根據(jù)不同的需要選擇合適的方法邻薯,并沒有一個解決所有問題的萬能方法裙戏。

具體的方法采用還需要考慮多個方面的:

  • 數(shù)據(jù)缺失的原因;
  • 數(shù)據(jù)缺失值類型厕诡;
  • 樣本的數(shù)據(jù)量累榜;
  • 數(shù)據(jù)缺失值隨機性等;

在做數(shù)據(jù)預處理時灵嫌,要多嘗試幾種填充方法壹罚,選擇表現(xiàn)最佳的即可葛作。


總結來說,沒有一個最完美的策略猖凛,每個策略都會更適用于某些數(shù)據(jù)集和數(shù)據(jù)類型赂蠢,但再另一些數(shù)據(jù)集上表現(xiàn)很差。雖然有一些規(guī)則能幫助你決定選用哪一種策略形病,但除此之外客年,你還應該嘗試不同的方法,來找到最適用于你的數(shù)據(jù)集的插補策略漠吻。

當前最流行的方法應該是 刪除法量瓜、KNN、多重插補法途乃。

參考文獻:龐新生. 缺失數(shù)據(jù)處理方法的比較[J]. 統(tǒng)計與決策, 2010(24):152-155.

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绍傲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子耍共,更是在濱河造成了極大的恐慌烫饼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件试读,死亡現(xiàn)場離奇詭異杠纵,居然都是意外死亡,警方通過查閱死者的電腦和手機钩骇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門比藻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人倘屹,你說我怎么就攤上這事银亲。” “怎么了纽匙?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵务蝠,是天一觀的道長。 經(jīng)常有香客問我烛缔,道長馏段,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任践瓷,我火速辦了婚禮院喜,結果婚禮上,老公的妹妹穿的比我還像新娘当窗。我一直安慰自己够坐,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著元咙,像睡著了一般梯影。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庶香,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天甲棍,我揣著相機與錄音,去河邊找鬼赶掖。 笑死感猛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奢赂。 我是一名探鬼主播陪白,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼膳灶!你這毒婦竟也來了咱士?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤轧钓,失蹤者是張志新(化名)和其女友劉穎序厉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毕箍,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡弛房,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了而柑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片文捶。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖牺堰,靈堂內(nèi)的尸體忽然破棺而出拄轻,到底是詐尸還是另有隱情颅围,我是刑警寧澤伟葫,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站院促,受9級特大地震影響筏养,放射性物質發(fā)生泄漏。R本人自食惡果不足惜常拓,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一渐溶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弄抬,春花似錦茎辐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弛槐。三九已至,卻和暖如春依啰,著一層夾襖步出監(jiān)牢的瞬間乎串,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工速警, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叹誉,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓闷旧,卻偏偏與公主長得像长豁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忙灼,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353