資料分析中的缺失值處理

2021-08-16 11:43:22 字數 3352 閱讀 1752

對缺失值的處理要具體問題具體分析

,為什麼要具體問題具體分析呢?

因為屬性缺失有時並不意味著資料缺失

,缺失本身是包含資訊的,所以需要根據不同應用場景下缺失值可能包含的資訊進行合理填充

。下面通過一些例子來說明如何具體問題具體分析,仁者見仁智者見智,僅供參考:

「年收入」:商品推薦場景下填充平均值,借貸額度場景下填充最小值;

「行為時間點」:填充眾數;

「**」:商品推薦場景下填充最小值,商品匹配場景下填充平均值;

「人體壽命」:保險費用估計場景下填充最大值,人口估計場景下填充平均值;

「駕齡」:

沒有填寫這一項的使用者可能是沒有車,為它填充為0較為合理

;」本科畢業時間」:沒有填寫這一項的使用者可能是沒有上大學,

為它填充正無窮比較合理

;「婚姻狀態」:沒有填寫這一項的使用者可能對自己的隱私比較敏感,應單獨設為乙個分類,如已婚1、未婚0、未填-1。

處理不完整資料集的方法主要有三大類:

刪除元組、資料補齊、不處理

。也就是將存在遺漏資訊屬性值的物件(元組,記錄)刪除,從而得到乙個完備的資訊表

。這種方法簡單易行,

在物件有多個屬性缺失值、被刪除的含缺失值的物件與初始資料集的資料量相比非常小的情況下非常有效,類標號缺失時通常使用該方法。

然而,這種方法卻有很大的侷限性。

它以減少歷史資料來換取資訊的完備,會丟棄大量隱藏在這些物件中的資訊。

在初始資料集包含的物件很少的情況下,刪除少量物件足以嚴重影響資訊的客觀性和結果的正確性;因此,當缺失資料所佔比例較大,特別當遺漏資料非隨機分布時,這種方法可能導致資料發生偏離,從而引出錯誤的結論。

說明:刪除元組,或者直接刪除該列特徵,有時候會導致效能下降。

這類方法是用一定的值去填充空值,從而使資訊表完備化。通常基於統計學原理,

根據初始資料集中其餘物件取值的分布情況來對乙個缺失值進行填充

。資料探勘中常用的有以下幾種補齊方法:

由於最了解資料的還是使用者自己,因此這個方法產生資料偏離最小,可能是填充效果最好的一種。然而一般來說,該方法很費時,當資料規模很大、空值很多的時候,該方法是不可行的。

將空值作為一種特殊的屬性值來處理,它不同於其他的任何屬性值

。如所有的空值都用「unknown」填充。這樣將形成另乙個有趣的概念,

可能導致嚴重的資料偏離,一般不推薦使用

。將初始資料集中的屬性分為數值屬性和非數值屬性來分別進行處理

。 如果空值是數值型的,就根據該屬性在其他所有物件的取值的平均值來填充該缺失的屬性值; 

如果空值是非數值型的,就根據統計學中的眾數原理

,用該屬性在其他所有物件的取值次數最多的值(即出現頻率最高的值)來補齊該缺失的屬性值。與其相似的另一種方法叫條件平均值填充法(conditional mean completer)。在該方法中,用於求平均的值並不是從資料集的所有物件中取,而是從與該物件具有相同決策屬性值的物件中取得。 

這兩種資料的補齊方法,其基本的出發點都是一樣的,以最大概率可能的取值來補充缺失的屬性值,只是在具體方法上有一點不同。與其他方法相比,它是用現存資料的多數資訊來推測缺失值。

對於乙個包含空值的物件,熱卡填充法在完整資料中找到乙個與它最相似的物件,然後用這個相似物件的值來進行填充。不同的問題可能會選用不同的標準來對相似進行判定。該方法概念上很簡單,且利用了資料間的關係來進行空值估計。這個方法的缺點在於難以定義相似標準,主觀因素較多。

先根據歐式距離或相關分析來確定距離具有缺失資料樣本最近的k個樣本,將這k個值加權平均來估計該樣本的缺失資料。

用空缺屬性值的所有可能的屬性取值來填充,能夠得到較好的補齊效果。但是,當資料量很大或者遺漏的屬性值較多時,其計算的代價很大,可能的測試方案很多。

用空缺屬性值的所有可能的屬性取值來試,並從最終屬性的約簡結果中選擇最好的乙個作為填補的屬性值。這是以約簡為目的的資料補齊方法,能夠得到好的約簡結果;但是,當資料量很大或者遺漏的屬性值較多時,其計算的代價很大。

基於完整的資料集,建立回歸方程。對於包含空值的物件,將已知屬性值代入方程來估計未知屬性值,以此估計值來進行填充。當變數不是線性相關時會導致有偏差的估計。

em演算法是一種在不完全資料情況下計算極大似然估計或者後驗分布的迭代演算法。在每一迭代迴圈過程中交替執行兩個步驟:e步(excepctaion step,期望步),在給定完全資料和前一次迭代所得到的引數估計的情況下計算完全資料對應的對數似然函式的條件期望;m步(maximzation step,極大化步),用極大化對數似然函式以確定引數的值,並用於下步的迭代。演算法在e步和m步之間不斷迭代直至收斂,即兩次迭代之間的引數變化小於乙個預先給定的閾值時結束。該方法可能會陷入區域性極值,收斂速度也不是很快,並且計算很複雜。

多重填補方法分為三個步驟: 

為每個空值產生一套可能的填補值,這些值反映了無響應模型的不確定性;每個值都被用來填補資料集中的缺失值,產生若干個完整資料集合。

每個填補資料集合都用針對完整資料集的統計方法進行統計分析。

對來自各個填補資料集的結果進行綜合,產生最終的統計推斷,這一推斷考慮到了由於資料填補而產生的不確定性。該方法將空缺值視為隨機樣本,這樣計算出來的統計推斷可能受到空缺值的不確定性的影響。該方法的計算也很複雜。

通過尋找屬性間的關係來對遺失值填充。它尋找之間具有最大相關性的兩個屬性,其中沒有遺失值的乙個稱為**屬性,另乙個稱為原始屬性,用**屬性決定原始屬性中的遺失值。這種基於規則歸納的方法只能處理基數較小的名詞型屬性。

就幾種基於統計的方法而言,刪除元組法和平均值法差於熱卡填充法、期望值最大化方法和多重填充法;回歸是比較好的一種方法,但仍比不上hot deck和em;em缺少mi包含的不確定成分。值得注意的是,這些方法直接處理的是模型引數的估計而不是空缺值**本身。它們合適於處理無監督學習的問題,而對有監督學習來說,情況就不盡相同了。譬如,你可以刪除包含空值的物件用完整的資料集來進行訓練,但**時你卻不能忽略包含空值的物件。另外,c4.5和使用所有可能的值填充方法也有較好的補齊效果,人工填寫和特殊值填充則是一般不推薦使用的。

補齊處理只是將未知值補以我們的主觀估計值,不一定完全符合客觀事實,在對不完備資訊進行補齊處理的同時,我們或多或少地改變了原始的資訊系統。而且,對空值不正確的填充往往將新的雜訊引入資料中,使挖掘任務產生錯誤的結果。因此,在許多情況下,我們還是希望在保持原始資訊不發生變化的前提下對資訊系統進行處理。

不處理缺失值,直接在包含空值的資料上進行資料探勘的方法包括貝葉斯網路和人工神經網路等

。貝葉斯網路提供了一種自然的表示變數間因果資訊的方法,用來發現資料間的潛在關係。在這個網路中,用節點表示變數,有向邊表示變數間的依賴關係。貝葉斯網路僅適合於對領域知識具有一定了解的情況,至少對變數間的依賴關係較清楚的情況。否則直接從資料中學習貝葉斯網的結構不但複雜性較高(隨著變數的增加,指數級增加),網路維護代價昂貴,而且它的估計引數較多,為系統帶來了高方差,影響了它的**精度。

人工神經網路可以有效的對付缺失值,但人工神經網路在這方面的研究還有待進一步深入展開。

資料分析中的缺失值處理

沒有高質量的資料,就沒有高質量的資料探勘結果,資料值缺失是資料分析中經常遇到的問題之一。當缺失比例很小時,可直接對缺失記錄進行捨棄或進行手工處理。但在實際資料中,往往缺失資料占有相當的比重。這時如果手工處理非常低效,如果捨棄缺失記錄,則會丟失大量資訊,使不完全觀測資料與完全觀測資料間產生系統差異 對...

資料分析中的缺失值處理

沒有高質量的資料,就沒有高質量的資料探勘結果,資料值缺失是資料分析中經常遇到的問題之一。當缺失比例很小時,可直接對缺失記錄進行捨棄或進行手工處理。但在實際資料中,往往缺失資料占有相當的比重。這時如果手工處理非常低效,如果捨棄缺失記錄,則會丟失大量資訊,使不完全觀測資料與完全觀測資料間產生系統差異 對...

python大資料分析 缺失值處理

coding utf 8 import pandas as pd from scipy.interpolate import lagrange as lg 呼叫拉格朗日缺值補充函式 inputfile d code need try.xls outputfile d code need try1.x...