資料探勘中針對缺失值的處理

2021-07-25 03:51:07 字數 3462 閱讀 9294

一、缺失值產生的原因

缺失值的產生的原因多種多樣,主要分為機械原因和人為原因。機械原因是由於機械原因導致的資料收集或儲存的失敗造成的資料缺失,比如資料儲存的失敗,儲存器損壞,機械故障導致某段時間資料未能收集(對於定時資料採集而言)。人為原因是由於人的主觀失誤、歷史侷限或有意隱瞞造成的資料缺失,比如,在市場調查中被訪人拒絕透露相關問題的答案,或者回答的問題是無效的,資料錄入人員失誤漏錄了資料。

二、缺失值的型別

缺失值從缺失的分布來講可以分為完全隨機缺失,隨機缺失和完全非隨機缺失。完全隨機缺失(missing completely at random,mcar)指的是資料的缺失是隨機的,資料的缺失不依賴於任何不完全變數或完全變數。隨機缺失(missing at random,mar)指的是資料的缺失不是完全隨機的,即該類資料的缺失依賴於其他完全變數。完全非隨機缺失(missing not at random,mnar)指的是資料的缺失依賴於不完全變數自身。

從缺失值的所屬屬性上講,如果所有的缺失值都是同一屬性,那麼這種缺失成為單值缺失,如果缺失值屬於不同的屬性,稱為任意缺失。另外對於時間序列類的資料,可能存在隨著時間的缺失,這種缺失稱為單調缺失。

三、缺失值的處理方法

對於缺失值的處理,從總體上來說分為刪除存在缺失值的個案和缺失值插補。對於主觀資料,人將影響資料的真實性,存在缺失值的樣本的其他屬性的真實值不能保證,那麼依賴於這些屬性值的插補也是不可靠的,所以對於主觀資料一般不推薦插補的方法。插補主要是針對客觀資料,它的可靠性***。

1.刪除含有缺失值的個案

主要有簡單刪除法和權重法。簡單刪除法是對缺失值進行處理的最原始方法。它將存在缺失值的個案刪除。如果資料缺失問題可以通過簡單的刪除小部分樣本來達到目標,那麼這個方法是最有效的。當缺失值的型別為非完全隨機缺失的時候,可以通過對完整的資料加權來減小偏差。把資料不完全的個案標記後,將完整的資料個案賦予不同的權重,個案的權重可以通過logistic或probit回歸求得。如果解釋變數中存在對權重估計起決定行因素的變數,那麼這種方法可以有效減小偏差。如果解釋變數和權重並不相關,它並不能減小偏差。對於存在多個屬性缺失的情況,就需要對不同屬性的缺失組合賦不同的權重,這將大大增加計算的難度,降低**的準確性,這時權重法並不理想。

2.可能值插補缺失值

它的思想**是以最可能的值來插補缺失值比全部刪除不完全樣本所產生的資訊丟失要少。在資料探勘中,面對的通常是大型的資料庫,它的屬性有幾十個甚至幾百個,因為乙個屬性值的缺失而放棄大量的其他屬性值,這種刪除是對資訊的極大浪費,所以產生了以可能值對缺失值進行插補的思想與方法。常用的有如下幾種方法。

(1)均值插補。資料的屬性分為定距型和非定距型。如果缺失值是定距型的,就以該屬性存在值的平均值來插補缺失的值;如果缺失值是非定距型的,就根據統計學中的眾數原理,用該屬性的眾數(即出現頻率最高的值)來補齊缺失的值。

(2)利用同類均值插補。同均值插補的方法都屬於單值插補,不同的是,它用層次聚類模型**缺失變數的型別,再以該型別的均值插補。假設x=(x1,x2…xp)為資訊完全的變數,y為存在缺失值的變數,那麼首先對x或其子集行聚類,然後按缺失個案所屬類來插補不同類的均值。如果在以後統計分析中還需以引入的解釋變數和y做分析,那麼這種插補方法將在模型中引入自相關,給分析造成障礙。

(3)極大似然估計(max likelihood ,ml)。在缺失型別為隨機缺失的條件下,假設模型對於完整的樣本是正確的,那麼通過觀測資料的邊際分布可以對未知引數進行極大似然估計(little and rubin)。這種方法也被稱為忽略缺失值的極大似然估計,對於極大似然的引數估計實際中常採用的計算方法是期望值最大化(expectation maximization,em)。該方法比刪除個案和單值插補更有吸引力,它乙個重要前提:適用於大樣本。有效樣本的數量足夠以保證ml估計值是漸近無偏的並服從正態分佈。但是這種方法可能會陷入區域性極值,收斂速度也不是很快,並且計算很複雜。

(4)多重插補(multiple imputation,mi)。多值插補的思想**於貝葉斯估計,認為待插補的值是隨機的,它的值來自於已觀測到的值。具體實踐上通常是估計出待插補的值,然後再加上不同的雜訊,形成多組可選插補值。根據某種選擇依據,選取最合適的插補值。

多重插補方法分為三個步驟:①為每個空值產生一套可能的插補值,這些值反映了無響應模型的不確定性;每個值都可以被用來插補資料集中的缺失值,產生若干個完整資料集合。②每個插補資料集合都用針對完整資料集的統計方法進行統計分析。③對來自各個插補資料集的結果,根據評分函式進行選擇,產生最終的插補值。

假設一組資料,包括三個變數y1,y2,y3,它們的聯合分布為正態分佈,將這組資料處理成三組,a組保持原始資料,b組僅缺失y3,c組缺失y1和y2。在多值插補時,對a組將不進行任何處理,對b組產生y3的一組估計值(作y3關於y1,y2的回歸),對c組作產生y1和y2的一組成對估計值(作y1,y2關於y3的回歸)。

當用多值插補時,對a組將不進行處理,對b、c組將完整的樣本隨機抽取形成為m組(m為可選擇的m組插補值),每組個案數只要能夠有效估計引數就可以了。對存在缺失值的屬性的分布作出估計,然後基於這m組觀測值,對於這m組樣本分別產生關於引數的m組估計值,給出相應的**即,這時採用的估計方法為極大似然法,在計算機中具體的實現演算法為期望最大化法(em)。對b組估計出一組y3的值,對c將利用 y1,y2,y3它們的聯合分布為正態分佈這一前提,估計出一組(y1,y2)。

上例中假定了y1,y2,y3的聯合分布為正態分佈。這個假設是人為的,但是已經通過驗證(graham和schafer於1999),非正態聯合分布的變數,在這個假定下仍然可以估計到很接近真實值的結果。

多重插補和貝葉斯估計的思想是一致的,但是多重插補彌補了貝葉斯估計的幾個不足。

(1)貝葉斯估計以極大似然的方法估計,極大似然的方法要求模型的形式必須準確,如果引數形式不正確,將得到錯誤得結論,即先驗分布將影響後驗分布的準確性。而多重插補所依據的是大樣本漸近完整的資料的理論,在資料探勘中的資料量都很大,先驗分布將極小的影響結果,所以先驗分布的對結果的影響不大。

(2)貝葉斯估計僅要求知道未知引數的先驗分布,沒有利用與引數的關係。而多重插補對引數的聯合分布作出了估計,利用了引數間的相互關係。

以上四種插補方法,對於缺失值的型別為隨機缺失的插補有很好的效果。兩種均值插補方法是最容易實現的,也是以前人們經常使用的,但是它對樣本存在極大的干擾,尤其是當插補後的值作為解釋變數進行回歸時,引數的估計值與真實值的偏差很大。相比較而言,極大似然估計和多重插補是兩種比較好的插補方法,與多重插補對比,極大似然缺少不確定成分,所以越來越多的人傾向於使用多值插補方法。

四、小結

插補處理只是將未知值補以我們的主觀估計值,不一定完全符合客觀事實。以上的分析都是理論分析,對於缺失值由於它本身無法觀測,也就不可能知道它的缺失所屬型別,也就無從估計乙個插補方法的插補效果。另外這些方法通用於各個領域,具有了普遍性,那麼針對乙個領域的專業的插補效果就不會很理想,正是因為這個原因,很多專業資料探勘人員通過他們對行業的理解,手動對缺失值進行插補的效果反而可能比這些方法更好。缺失值的插補是在資料探勘過程中為了不放棄大量的資訊,而採用的人為干涉缺失值的情況,無論是那種處理方法都會影響變數間的相互關係,在對不完備資訊進行補齊處理的同時,我們或多或少地改變了原始的資料的資訊系統,對以後的分析存在潛在的影響,所以對缺失值的處理一定要慎重。 

友情推薦:哪有干擾器賣

四海電子解碼

資料探勘實戰 資料預處理之缺失值處理

kaggle的titanic 比賽不少題解有標準的處理流程,這裡參考 kaggle titanic 生存 詳細流程 梳理 嘗試提取常用的缺失值處理方法 這裡還是借助google colab 來學習 讀取資料 import pandas as pd data pd.read csv data trai...

python處理資料中缺失值

1 直接刪除法 當缺失值個數只佔整體很小一部分時 在採用刪除法處理缺失值時,需要首先檢測樣本總體中確實值得的個數。python中統計缺失值的方法為 import numpy as np import pandas as pd 讀取資料,將空值形式的缺失值轉換為可識別的型別 data pd.read ...

資料缺失值處理

步驟 1.識別缺失值 2.分析缺失的原因 3.檢視缺失值情況 4.處理缺失值 識別判斷缺失值 is.na 識別矩陣或資料框中的完整觀測 complete.cases any is.na data 檢查是否存在缺失值 head is.na data col1 5 檢視資料data中col1列前5個資料...