關於數據缺失問題的總結

做者:enova 摘自:《計算機科學論壇》
形成數據缺失的緣由算法

在各類實用的數據庫中,屬性值缺失的狀況常常發全甚至是不可避免的。所以,在大多數狀況下,信息系統是不完備的,或者說存在某種程度的不完備。形成數據缺失的緣由是多方面的,主要可能有如下幾種:數據庫

1)有些信息暫時沒法獲取。例如在醫療數據庫中,並不是全部病人的全部臨牀檢驗結果都能在給定的時間內獲得,就導致一部分屬性值空缺出來。又如在申請表數據中,對某些問題的反映依賴於對其餘問題的回答。
2)有些信息是被遺漏的。多是由於輸入時認爲不重要、忘記填寫了或對數據理解錯誤而遺漏,也多是因爲數據採集設備的故障、存儲介質的故障、傳輸媒體的故障、一些人爲因素等緣由而丟失了。
3)有些對象的某個或某些屬性是不可用的。也就是說,對於這個對象來講,該屬性值是不存在的,如一個未婚者的配偶姓名、一個兒童的固定收入情況等。
4)有些信息(被認爲)是不重要的。如一個屬性的取值與給定語境是無關的,或訓練數據庫的設計者並不在意某個屬性的取值(稱爲dont-care value)[37]。
5)獲取這些信息的代價太大。
6)系統實時性能要求較高,即要求獲得這些信息前迅速作出判斷或決策。
 
  數據缺失機制
  在對缺失數據進行處理前,瞭解數據缺失的機制和形式是十分必要的。將數據集中不含缺失值的變量(屬性)稱爲徹底變量,數據集中含有缺失值的變量稱爲不徹底變量,Little 和 Rubin定義瞭如下三種不一樣的數據缺失機制[38]:
  1)徹底隨機缺失(Missing Completely at Random,MCAR)。數據的缺失與不徹底變量以及徹底變量都是無關的。
  2)隨機缺失(Missing at Random,MAR)。數據的缺失僅僅依賴於徹底變量。
  3)非隨機、不可忽略缺失(Not Missing at Random,NMAR,or nonignorable)。不徹底變量中數據的缺失依賴於不徹底變量自己,這種缺失是不可忽略的。
 
  空值語義
  對於某個對象的屬性值未知的狀況,咱們稱它在該屬性的取值爲空值(null value)。空值的來源有許多種,所以現實世界中的空值語義也比較複雜。總的說來,能夠把空值分紅如下三類[39]:
  1)不存在型空值。即沒法填入的值,或稱對象在該屬性上沒法取值,如一個未婚者的配偶姓名等。
  2)存在型空值。即對象在該屬性上取值是存在的,但暫時沒法知道。一旦對象在該屬性上的實際值被確知之後,人們就能夠用相應的實際值來取代原來的空值,使信息趨於徹底。存在型空值是不肯定性的一種表徵,該類空值的實際值在當前是未知的。但它有肯定性的一面,諸如它的實際值確實存在,老是落在一我的們能夠肯定的區間內。通常狀況下,空值是指存在型空值。
  3)佔位型空值。即沒法肯定是不存在型空值仍是存在型空值,這要隨着時間的推移纔可以清楚,是最不肯定的一類。這種空值除填充空位外,並不表明任何其餘信息。
 
  空值處理的重要性和複雜性
  數據缺失在許多研究領域都是一個複雜的問題。對數據挖掘來講,空值的存在,形成了如下影響:首先,系統丟失了大量的有用信息;第二,系統中所表現出的不肯定性更加顯著,系統中蘊涵的肯定性成分更難把握;第三,包含空值的數據會使挖掘過程陷入混亂,致使不可靠的輸出。
  數據挖掘算法自己更致力於避免數據過度適合所建的模型,這一特性使得它難以經過自身的算法去很好地處理不完整數據。所以,空缺的數據須要經過專門的方法進行推導、填充等,以減小數據挖掘算法與實際應用之間的差距。
 
  空值處理方法的分析比較
  處理不完備數據集的方法主要有如下三大類:
  (一)刪除元組
  也就是將存在遺漏信息屬性值的對象(元組,記錄)刪除,從而獲得一個完備的信息表。這種方法簡單易行,在對象有多個屬性缺失值、被刪除的含缺失值的對象與信息表中的數據量相比很是小的狀況下是很是有效的,類標號(假設是分類任務)缺乏時一般使用。然而,這種方法卻有很大的侷限性。它是以減小歷史數據來換取信息的完備,會形成資源的大量浪費,丟棄了大量隱藏在這些對象中的信息。在信息表中原本包含的對象不多的狀況下,刪除少許對象就足以嚴重影響到信息表信息的客觀性和結果的正確性;當每一個屬性空值的百分比變化很大時,它的性能很是差。所以,當遺漏數據所佔比例較大,特別當遺漏數據非隨機分佈時,這種方法可能致使數據發生偏離,從而引出錯誤的結論[40]。
  (二)數據補齊
  這類方法是用必定的值去填充空值,從而使信息表完備化。一般基於統計學原理,根據決策表中其他對象取值的分佈狀況來對一個空值進行填充,譬如用其他屬性的平均值來進行補充等。數據挖掘中經常使用的有如下幾種補齊方法[41,42]:
  (1)人工填寫(filling manually)
  因爲最瞭解數據的仍是用戶本身,所以這個方法產生數據偏離最小,多是填充效果最好的一種。然而通常來講,該方法很費時,當數據規模很大、空值不少的時候,該方法是不可行的。
  (2)特殊值填充(Treating Missing Attribute values as Special values)
  將空值做爲一種特殊的屬性值來處理,它不一樣於其餘的任何屬性值。如全部的空值都用「unknown」填充。這樣將造成另外一個有趣的概念,可能致使嚴重的數據偏離,通常不推薦使用。
  (3)平均值填充(Mean/Mode Completer)
  將信息表中的屬性分爲數值屬性和非數值屬性來分別進行處理。若是空值是數值型的,就根據該屬性在其餘全部對象的取值的平均值來填充該缺失的屬性值;若是空值是非數值型的,就根據統計學中的衆數原理,用該屬性在其餘全部對象的取值次數最多的值(即出現頻率最高的值)來補齊該缺失的屬性值。另外有一種與其類似的方法叫條件平均值填充法(Conditional Mean Completer)。在該方法中,缺失屬性值的補齊一樣是靠該屬性在其餘對象中的取值求平均獲得,但不一樣的是用於求平均的值並非從信息表全部對象中取,而是從與該對象具備相同決策屬性值的對象中取得。這兩種數據的補齊方法,其基本的出發點都是同樣的,以最大機率可能的取值來補充缺失的屬性值,只是在具體方法上有一點不一樣。與其餘方法相比,它是用現存數據的多數信息來推測缺失值。
  (4)熱卡填充(Hot deck imputation,或就近補齊)
  對於一個包含空值的對象,熱卡填充法在完整數據中找到一個與它最類似的對象,而後用這個類似對象的值來進行填充。不一樣的問題可能會選用不一樣的標準來對類似進行斷定。該方法概念上很簡單,且利用了數據間的關係來進行空值估計。這個方法的缺點在於難以定義類似標準,主觀因素較多。
  (5)K最近距離鄰法(K-means clustering)
  先根據歐式距離或相關分析來肯定距離具備缺失數據樣本最近的K個樣本,將這K個值加權平均來估計該樣本的缺失數據。
  (6)使用全部可能的值填充(Assigning All Possible values of the Attribute)
  這種方法是用空缺屬性值的全部可能的屬性取值來填充,可以獲得較好的補齊效果。可是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大,可能的測試方案不少。另有一種方法,填補遺漏屬性值的原則是同樣的,不一樣的只是從決策相同的對象中嘗試全部的屬性值的可能狀況,而不是根據信息表中全部對象進行嘗試,這樣可以在必定程度上減少原方法的代價。
  (7)組合完整化方法(Combinatorial Completer)
  這種方法是用空缺屬性值的全部可能的屬性取值來試,並從最終屬性的約簡結果中選擇最好的一個做爲填補的屬性值。這是以約簡爲目的的數據補齊方法,可以獲得好的約簡結果;可是,當數據量很大或者遺漏的屬性值較多時,其計算的代價很大。另外一種稱爲條件組合完整化方法(Conditional Combinatorial Complete),填補遺漏屬性值的原則是同樣的,不一樣的只是從決策相同的對象中嘗試全部的屬性值的可能狀況,而不是根據信息表中全部對象進行嘗試。條件組合完整化方法可以在必定程度上減少組合完整化方法的代價。在信息表包含不完整數據較多的狀況下,可能的測試方案將巨增。
  (8)迴歸(Regression)
  基於完整的數據集,創建迴歸方程(模型)。對於包含空值的對象,將已知屬性值代入方程來估計未知屬性值,以此估計值來進行填充。當變量不是線性相關或預測變量高度相關時會致使有誤差的估計。
  (9)指望值最大化方法(Expectation maximization,EM)
  EM算法是一種在不徹底數據狀況下計算極大似然估計或者後驗分佈的迭代算法[43]。在每一迭代循環過程當中交替執行兩個步驟:E步(Excepctaion step,指望步),在給定徹底數據和前一次迭代所獲得的參數估計的狀況下計算徹底數據對應的對數似然函數的條件指望;M步(Maximzation step,極大化步),用極大化對數似然函數以肯定參數的值,並用於下步的迭代。算法在E步和M步之間不斷迭代直至收斂,即兩次迭代之間的參數變化小於一個預先給定的閾值時結束。該方法可能會陷入局部極值,收斂速度也不是很快,而且計算很複雜。
  (10)多重填補(Multiple Imputation,MI)
  多重填補方法[44]分爲三個步驟:①爲每一個空值產生一套可能的填補值,這些值反映了無響應模型的不肯定性;每一個值都被用來填補數據集中的缺失值,產生若干個完整數據集合。②每一個填補數據集合都用針對完整數據集的統計方法進行統計分析。③對來自各個填補數據集的結果進行綜合,產生最終的統計推斷,這一推斷考慮到了因爲數據填補而產生的不肯定性。該方法將空缺值視爲隨機樣本,這樣計算出來的統計推斷可能受到空缺值的不肯定性的影響。該方法的計算也很複雜。
  (11)C4.5方法
  經過尋找屬性間的關係來對遺失值填充[45]。它尋找之間具備最大相關性的兩個屬性,其中沒有遺失值的一個稱爲代理屬性,另外一個稱爲原始屬性,用代理屬性決定原始屬性中的遺失值。這種基於規則概括的方法只能處理基數較小的名詞型屬性。
  就幾種基於統計的方法而言,刪除元組法和平均值法差於hot deck、EM和MI;迴歸是比較好的一種方法,但仍比不上hot deck和EM;EM缺乏MI包含的不肯定成分[46]。值得注意的是,這些方法直接處理的是模型參數的估計而不是空缺值預測自己。它們合適於處理無監督學習的問題,而對有監督學習來講,狀況就不盡相同了[47]。譬如,你能夠刪除包含空值的對象用完整的數據集來進行訓練,但預測時你卻不能忽略包含空值的對象。另外,C4.5和使用全部可能的值填充方法也有較好的補齊效果[42],人工填寫和特殊值填充則是通常不推薦使用的。
  補齊處理只是將未知值補以咱們的主觀估計值,不必定徹底符合客觀事實,在對不完備信息進行補齊處理的同時,咱們或多或少地改變了原始的信息系統。並且,對空值不正確的填充每每將新的噪聲引入數據中,使挖掘任務產生錯誤的結果。所以,在許多狀況下,咱們仍是但願在保持原始信息不發生變化的前提下對信息系統進行處理。這就是第三種方法:
  (三)不處理
  直接在包含空值的數據上進行數據挖掘。這類方法包括貝葉斯網絡[48]和人工神經網絡[49]等。
  貝葉斯網絡是用來表示變量間鏈接機率的圖形模式,它提供了一種天然的表示因果信息的方法,用來發現數據間的潛在關係。在這個網絡中,用節點表示變量,有向邊表示變量間的依賴關係。貝葉斯網絡僅適合於對領域知識具備必定了解的狀況,至少對變量間的依賴關係較清楚的狀況。不然直接從數據中學習貝葉斯網的結構不但複雜性較高(隨着變量的增長,指數級增長),網絡維護代價昂貴,並且它的估計參數較多,爲系統帶來了高方差,影響了它的預測精度。當在任何一個對象中的缺失值數量很大時,存在指數爆炸的危險。
  人工神經網絡能夠有效的對付空值,但人工神經網絡在這方面的研究還有待進一步深刻展開。人工神經網絡方法在數據挖掘應用中的侷限性,本文在2.1.5節中已經進行了闡述,這裏就再也不介紹了。
  總結:大多數數據挖掘系統都是在數據挖掘以前的數據預處理階段採用第1、第二類方法來對空缺數據進行處理。並不存在一種處理空值的方法能夠適合於任何問題。不管哪一種方式填充,都沒法避免主觀因素對原系統的影響,而且在空值過多的情形下將系統完備化是不可行的。從理論上來講,貝葉斯考慮了一切,可是隻有當數據集較小或知足某些條件(如多元正態分佈)時徹底貝葉斯分析纔是可行的。而現階段人工神經網絡方法在數據挖掘中的應用仍頗有限。值得一提的是,採用不精確信息處理數據的不完備性已獲得了普遍的研究。不完備數據的表達方法所依據的理論主要有可信度理論、機率論、模糊集合論、可能性理論,D-S的證據理論等。網絡

相關文章
相關標籤/搜索