數據的預處理基礎:如何處理缺失值

 

數據集缺少值? 讓我們學習如何處理:

 數據清理/探索性數據分析階段的主要問題之一是處理缺失值。 缺失值表示未在觀察值中作爲變量存儲的數據值。 這個問題在幾乎所有研究中都是常見的,並且可能對可從數據得出的結論產生重大影響。

 查看數據中的缺失值,您的第一項工作是基於3種缺失值機制來識別缺失模式:

  1. MCAR(完全隨機丟失):如果數據的缺失與任何值(觀察或缺失)之間沒有關係,則爲MCAR。
  2. MAR(半隨機丟失):您必須考慮MAR與MCAR有何不同, 如果缺失和觀測值之間存在系統關係,則爲MAR。 例如-男性比女性更容易告訴您自己的體重,因此體重就是MAR。 “ Weight”變量的缺失取決於變量“ Sex”的觀測值。
  3. MNAR(不隨機丟失):如果2個或更多變量的缺失具有相同模式,則爲MNAR。

 您可以可視化數據來驗證完整性(使用Python代碼):

 

 您可以可視化數據集中缺失的位置(使用Python代碼):

 

 在可視化中,您可以檢查缺失是MCAR,MAR還是MNAR。

  • 如果兩個或多個變量中的缺失具有相同的模式,則爲MNAR。 您可以使用一個變量對數據進行排序(並可視化),並可以確定它是否完全是MNAR。例如 “住房”和“貸款”變量的缺失模式相同。
  • 如果任何兩個或多個變量的缺失之間沒有關係,並且一個變量的缺失值和另一個變量的觀測值之間也沒有關係,則這就是MCAR
  • 如果缺失和觀測值之間存在系統關係,則爲MAR。 我們將在下面學習如何識別缺失值是MAR。

您可以按照以下兩種方法檢查缺失值:

  1. 缺失熱圖/相關圖:此方法創建列/變量之間的缺失值的相關圖。 它解釋了列之間缺失的依賴性。

 

 它顯示了變量“房屋”和“貸款”的缺失之間的相關性。

  1. 缺失樹狀圖:缺失樹狀圖是缺失值的樹形圖。 它通過對變量進行分組來描述它們之間的相關性。

 

  • 它表明變量“住房”和“貸款”高度相關,這就是MNAR。
  • 從“ age_group”到“ contact”的變量在“ 0”級別彼此關聯,並充分預測彼此的存在。 或者,您可以說此部分沒有缺失的值。
  • 其餘變量的缺失是MAR或MCAR。 要檢查這一點,我們可以使用2種方法:

方法1

  • 可視化變量的缺失如何相對於另一個變量變化。
  • 通過使用兩個變量的散點圖,我們可以檢查兩個變量之間的關係是否缺失。

 

 

  • x軸變量的缺失值分佈在y軸的整個其他變量中。 因此,我們可以說沒有關係。 缺失值是MCAR。 如果您沒有在散點圖中找到任何關係,則可以說變量中的缺失是“隨機缺失”。

方法2

  • 然後,您可以在此變量與數據集中的其他變量之間運行t檢驗卡方檢驗,以查看此變量的缺失是否與其他變量的值有關。
  • 例如,如果女性相比男性確實不太可能告訴您自己的體重,則卡方檢驗會告訴您,女性在體重變量上缺失數據的百分比比男性高。

現在,我們已經確定了缺失值的性質。 讓我們學習如何處理缺失的值:

 Listwise刪除:如果缺少的值非常少,則可以使用Listwise刪除方法。 如果缺少分析中所包含的變量的值,按列表刪除方法將完全刪除個案。

 

 成對刪除:成對刪除不會完全忽略分析中的案例。 當統計過程使用包含某些缺失數據的案例時,將發生成對刪除。 該過程不能包含特定變量,但是當分析具有非缺失值的其他變量時,該過程仍然實用。 例如,假設有3個變量:A,B和C。變量A包含缺失值。 但這不會阻止某些統計過程使用相同的情況來分析變量B和C。成對刪除允許您使用更多數據。 它試圖使Listwise刪除中發生的損失最小化。

 兩種技術均假定缺失模式爲MCAR(隨機完全缺失)。 當缺失值小於5%且缺失完全是隨機的並且不取決於觀察值或未觀察值時,可以使用上述技術。

 缺失價值估算-基本估算技術:

 均值| 中位數| 模式| 常數(例如:“ 0”)

 均值插補:均值插補是一種方法,將某個變量的缺失值替換爲可用觀察值的均值。 這種方法有助於保持樣本數量,但由於所有缺失值都具有相同的“均值”,因此數據的可變性有所降低。

 

  • 您可以採用相同的方式應用中位數:“ strategy =” median”
  • 您可以採用相同方式應用模式:“ strategy =” most_frequent”
  • 同樣,您可以估算一個常數:('strategy ='constant',fill_value = 0)
  • 在估算之前,我們已經複製了“ df”數據集,目的只是爲了與原始數據集進行比較。

歸因散點圖:

 

 

  • 您會發現,根據散點圖,兩個變量之間存在很強的相關性,但是“紅色”顏色的估算值是一條直線,沒有考慮相關性。
  • 因此,我們可以說這種假設在這裏是不好的。
  • 同樣,您可以檢查其他插補值,例如中值,衆數和常量值。

迴歸:

 可能有一些變量存在缺失值。 但是,還有一些是一些沒有缺失值的變量。 使用沒有缺失值的變量,我們可以藉助機器學習算法來預測缺失值。 爲此,我們可以使用線性迴歸算法。

 估計迴歸模型以基於其他變量預測變量的觀測值,然後在該變量的值缺失的情況下使用該模型來估算值。 換句話說,完整和不完整案例的可用信息用於預測特定變量的值。 然後,將回歸模型中的擬合值用於估算缺失值。

 但是事情並不是那麼容易。 問題在於估算的數據中沒有包含誤差項,因此這些估計值沿迴歸線完全擬合,沒有任何殘差。 這導致過擬合。 迴歸模型可預測丟失數據的最可能值,但可能產生過擬合。

隨機迴歸插補

 隨機迴歸插補使用迴歸方程從完整變量中預測不完整變量,但是它需要採取額外的步驟,即使用正態分佈的殘差項來增加每個預測得分。

  • 將殘差添加到估算值可恢復數據的可變性,並有效消除與標準迴歸估算方案相關的偏差。
  • 實際上,隨機迴歸插補是唯一在MAR缺失數據機制下給出無偏參數估計的過程。
  • 因此,這是唯一具有某些優點的傳統方法。

最近鄰插補

 KNNImputer提供了使用k最近鄰方法來填充缺失值的方法。 KNN是一種用於在多維空間中將點與其最接近的鄰居進行匹配的算法。 要查找最近的鄰居,可以使用歐幾里德距離方法(默認)。 使用在訓練集中找到的n個最近鄰居的平均值估算缺失值。 您可以在運行imputer時提供n_neighbors的值。 K近鄰可以預測定性和定量屬性

例如:您具有以下帶有3個變量的數據。 變量“ Var3”缺少值。 您想使用KNN Imputer來估算缺失的值。

 

 在Python中使用以下代碼,您可以將缺失值估算爲“ 5.5”。

 

手動計算:

 您需要使用歐幾里德距離公式計算點(6,4)與其他可用點(5,6),(9,9),(8,6)和(6,5)的距離:

dist((x, y), (a, b)) = √(x — a)² + (y — b)²

 您會發現2個最近的鄰居是(5,6)&(6,5),“ Var3”中的各個值分別是3和8。因此,這2個點的平均值爲(3 + 8)/ 2 = 5.5

  • 此推論適用於MCARMARMNAR的所有3種缺失值機制。
  • KNN插補可用於處理任何類型的數據,例如連續數據離散數據有序數據分類數據

鏈式方程的多重插補(MICE):

 多重插補涉及爲每個缺失值創建多個預測。 多個估算數據的方式考慮了估算的不確定性(估計值之間的差異),併產生了更準確的標準差。

 單一插補方法則不是這種情況,因爲插補方法往往會導致較小的標準測量誤差,進而會導致1類誤差。

 基本思想是將具有缺失值的每個變量視爲迴歸中的因變量,而將其餘部分作爲其預測變量。

 MICE的假設是,給定插補過程中使用的變量,缺失值是隨機缺失(MAR),這意味着缺失值的概率僅取決於觀察值,而不取決於未觀察值。

 在MICE程序中,將運行一系列迴歸模型,從而根據數據中的其他變量對具有缺失數據的每個變量進行建模。 這意味着每個變量都可以根據其分佈進行建模,例如,使用邏輯迴歸建模的二進制變量和使用線性迴歸建模的連續變量。

MICE步驟

步驟1:對數據集中的每個缺失值執行簡單的估算。 例如-均值插補。

步驟2:將一個變量('Var1')的平均估算值重新設置爲丟失。

步驟3:將步驟2中變量“ Var1”的觀測值迴歸到插補模型中的其他變量上。 換句話說,“ Var1”是迴歸模型中的因變量,所有其他變量都是迴歸模型中的自變量。

步驟4:然後將'Var1'的缺失值替換爲迴歸模型中的預測。 隨後在其他變量的迴歸模型中將“ Var1”用作自變量時,將同時使用觀察值和這些推測值。

步驟5:然後對每個缺少數據的變量重複步驟2-4。 每個變量的循環構成一個迭代或“循環”。 在一個週期結束時,所有缺失值都已被迴歸預測所替代,這些預測反映了數據中觀察到的關係。

步驟6:將步驟2-4重複多個循環,並在每個循環中更新估算值。

 在Python中使用以下代碼,您可以使用MICE估算缺失值:

 

最大似然估計-期望最大化(EM)算法

 最大似然估計是一種用於數據集密度估計的方法。 密度估計是通過估計概率分佈及其參數來完成的。

 但是,當存在一些潛在變量時,最大似然法不能很好地工作。 因爲最大似然法假設訓練數據集是完整的並且沒有缺失值。 EM算法方法可用於滿足我們發現潛在變量的情況。

 “在潛在變量模型中找到最大似然估計器的通用技術是期望最大化(EM)算法。”

 EM算法基本上分爲兩個階段。 第一階段有助於估計缺失值。 此步驟稱爲E步驟。 第二階段有助於優化模型的參數。 此步驟稱爲M步。 重複這兩個步驟,直到我們收斂。 收斂意味着,我們獲得了一組很好的潛在變量值,並且獲得了適合數據的最大似然。

 爲此,我們可以使用“高斯混合模型”。 高斯混合模型是使用高斯概率分佈的組合的混合模型,需要估計概率分佈參數,即均值和標準差。

其他插補方法:

最後的觀察結轉方法

 最後觀察結轉方法會在最後一次觀察個體時估算缺失值。 該方法假設自從上次測量的觀察以來,個人的觀察完全沒有變化,這幾乎是不現實的。

 然後,就好像沒有丟失的數據一樣,分析觀察到的數據和估算數據的組合。

Hot-Deck插補

 Hot-Deck插補是一種處理缺失數據的方法,其中,將每個缺失值替換爲“相似”單元觀察到的響應。 它涉及用來自受訪者(捐贈者)的觀察值替換無受訪者(稱爲接受者)的一個或多個變量的缺失值,就兩種情況觀察到的特徵而言,該值類似於無受訪者。

單獨類別

 如果缺少分類變量的值,則可以將缺失的值視爲一個單獨的類別。 我們可以爲缺失值創建另一個類別,並在不同級別上使用它們。

 例如:您有一個變量“性別”,其中2個類別是“男性”和“女性”。 但是此變量缺少大約10%的數據。 您不能直接爲這些缺失值估算值。 因此,更好的方法是爲缺失的值創建一個單獨的類別“ Missing”,並繼續進行分析和模型開發。

作者:Yogesh Khurana

deephub翻譯組:孟翔傑

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章