袁建裕, 閆春艷, 葉志偉, 楊志勇
(1 湖北工業大學計算機學院, 湖北 武漢 430068; 2 湖北省公安廳科技信息處, 湖北 武漢 430064)
據統計,全球各領域的數據總量正在以每年40%的速度快速增長[1-2]。然而由于設備功能限制、設備故障、數據錯誤或調查中的無回答等因素,數據缺失現象較為普遍,很大程度上影響了數據質量和應用[3]。為解決這一問題,最簡單方法就是刪除法,即將包含缺失值的數據對象、數據屬性、成對變量進行刪除。但該方法很難適用不同領域的缺失數據集,且對數據資源造成浪費,無法保證研究結果的客觀性和準確性[4]。缺失值填補法是通過現有數據,為缺失值估計一個合理的填補值,從而構造出完整數據集。該方法既保證了數據集的規模,又能對缺失值做出合理的推斷,已受到眾多科研及從業人員的廣泛關注。常用的填補方法大致可分為基于統計學的填補方法和基于機器學習的填補方法[5]。基于統計學的填補方法主要包括均值填補、回歸填補、多重填補等,其特點為原理簡單、易于實現。基于機器學習的填補方法主要包括K最近鄰填補法、基于聚類的填補方法、基于神經網絡的填補方法等,其優點在于模型通過對屬性間關聯合理建模,實現了缺失值的有效估計。但上述方法大都適用于連續型數據,并不適用于離散型數據。
本文通過擴展已有模型以適用于離散型數據填補,并對填補結果進行后續分析,系統地比較和分析了眾數填補、隨機填補、K最近鄰填補、基于自編碼器的填補和基于生成對抗網格的填補在離散型數據的填補性能。
缺失模式是缺失數據的外在特征,可以按不同的標準進行分類。按照缺失變量個數的不同可分為單變量缺失模式和多變量缺失模式,按缺失結構的不同可分為單調缺失模式和隨機模式。缺失機制則是缺失數據的內在特征,Rubin[6]在其理論研究中把缺失問題歸納為三類,并將數據缺失的概率問題稱為數據缺失機制。分別為:
1)完全隨機缺失 (Missing Completely at Random,MCAR),即缺失值完成隨機產生,缺失值與已觀測數據無關,與未觀測數據也無關,并且缺失數據不會使結果產生偏差。
2)隨機缺失 (Missing at Random,MAR),即缺失值與已觀測數據存在相關性,缺失值可根據已有數據進行估計。
3)非隨機缺失 (Not Missing at Random,NMAR),即缺失值與未觀測數據有關。這一理論規定了填補方法可以提供有效估計的條件。
離散連續化是特征工程中必不可少的一個環節。在數據挖掘中,許多機器學習模型要求輸入變量為連續型,離散型數據需要在預處理階段轉換成連續型,其中,One-hot編碼是用于處理離散數據的常用方法[7]。One-hot編碼有效解決了數據的屬性問題,并在一定程序上擴充了特征空間。以本文使用的數據集Nursery中特征“家族情況”為例,其取值集合為complete,completed,incomplete,foster,相應的One-hot編碼見表1。

表1 One-hot編碼
1)均值填補:均值填補法是統計方法中應用最為廣泛的填補方法[8],根據待研究數據特征中已觀測數據的均值或眾數作為缺失值。在進行填補時,若缺失值的數據類型為數值型,則使用缺失值所屬特征的均值作為缺失值的填補值,若缺失值的數據類型為非數值型,則使用缺失值所屬特征的眾數作為缺失值的填補值。另外,可以選擇不同的統計量作為填補值,如中位數、修正平均數等。
2)隨機填補:隨機填補法是社會調查領域中較為常見的缺失值處理方法[9],統計已有觀測數據中該特征各值出現的概率,依概率隨機選擇一個值作為填補值。顯然,出現頻次多的特征值作為填補值的概率要大于出現頻次少的特征值。
1)K最近鄰填補:K近鄰填補法的核心是從完整樣本中選擇與缺失樣本距離最近的K個完整樣本,并將完整樣本中的已觀測值的加權平均值作為填補值[10]。本文研究基于離散型缺失數據的填補方法,故選取基于信息論中的海明距離[11]作為K近鄰填補法的距離度量函數,用以統計兩個等長字符串對應位置字符不同的個數之和,其定義為:
其中,A和B為參與計算的兩個樣本;Ai和Bi為樣本A和B的第i個特征,取值為0或1;m為特征空間的維度。距離越小,樣本間的相似度越高,所在樣本對應的特征值作為填補值的可靠性也越高。
2)基于自編碼器的填補:自編碼器是多層感知機模型的一種,其特點是輸出層與輸入層具有相同數量的神經元,其輸入即為模型期望的輸出[12]。基于自編碼器的填補優點在于只需要訓練單個網絡的權重,填補速度快,具體步驟:
步驟一:根據缺失數據集確定網絡結構。
步驟二:將數據集分成完整數據集Dcom和不完整數據集Dmiss。
步驟三:將數據集Dcom作為模型的訓練集,確定網絡的權重。
步驟四:預填補不完整數據集Dmiss,依次將Dcom中的樣本作為已訓練模型的輸入,樣本的缺失值以模型輸出中的缺失值相應位上的預測值作為填補值。
3)基于生成對抗網絡的填補:生成對抗網絡由兩個網絡組成,分別為生成網絡和判別網絡,通過對抗學習的方式來訓練模型的適應性[13]。網絡的訓練始終處于一種對抗博弈的狀態。基于生成對抗網絡的填補是通過生成網絡與判別網絡的相互作用來學習數據的分布,從而預測出缺失值的填補值。其中,生成網絡用于模擬和預測樣本,而判別網絡則用于判定模擬樣本與真實樣本的差異性。基于生成對抗網絡的填補過程主要有三個階段:判別網絡訓練、生成網絡訓練和模型填補。
判別網絡訓練:首先將數據集中的完整樣本標記為真樣本,生成器利用隨機噪聲作為輸入生成的樣本標記為假樣本,將完整樣本和生成網絡生成的樣本輸入到判別網絡中,以此來訓練、更新判別網絡的權重。
生成網絡訓練:首先使用眾數填補對不完整數據集進行預填補,將預填補后的樣本標記為真樣本,再將真樣本作為生成網絡的輸入。然后使用第一階段訓練好的判別器,即固定判別網絡,根據模型的損失函數來不斷更新生成網絡的權重。
模型填補:對數據集進行預填補,將填補后的數據輸入到第二階段訓練好的生成器中,生成器的輸出則為缺失值的填補值。
基于生成對抗網絡的填補方法的過程見圖1。

圖 1 基于生成對抗網絡的填補方法
實驗操作平臺為Windows 10 64位操作系統;處理器為i5-8265U;運行內存8G;編程語言為Python 3.9,主要使用了NumPy 1.20,Pandas 1.2.4,scikit-learn 0.24,Keras 2.1.1庫。
實驗使用的3個數據集選自UCI機器學習數據倉庫,均為離散型數據集。數據集的詳細信息見表2。

表2 數據集基本信息
本文系統地比較和分析了眾數填補、隨機填補、K最近鄰填補、基于自編碼器的填補和基于生成對抗網絡的填補在不同缺失機制、不同缺失比例情況下對離散型數據集進行填補的適用范圍和優缺點。其中,缺失比例包括10%、20%和30%,缺失機制包括MCAR、MAR和NMAR,缺失模式為多變量隨機缺失模式。除了眾數填補和隨機填補,其它填補方法在填補過程中均使用了One-hot編碼。為方便表示,各方法在下文圖表中分別簡稱:Mode、Random、KNN、MLP、Encoder和GAN。參數設置見表3。

表3 參數設置
本文采用兩個性能指標來衡量各填補方法的填補效果,分別為填補準確率和分類準確率。它們的含義如下:
1)填補準確率:所有缺失值的填補值中正確填補的比例。
2)分類準確率:完整樣本組成訓練集訓練分類模型,本文所使用分類模型為支持向量機(Support Vector Machine,SVM),并采用10折交叉驗證的方法將填補后樣本作為測試集所得到的樣本被正確分類的比例。
實驗得到的填補準確率和分類準確率的具體數值見表4,表中加粗項為當前行最優值。接著,從兩個不同的維度,即缺失比例和缺失機制,分別對填補準確率和分類準確率取平均值進行可視化(圖2、圖3)。

圖 2 填補準確率

圖 3 分類準確率
其中柱形表示在相同缺失比例下填補和分類的平均準確率,折線表示在相同的缺失機制下填補和分類的準確率。
由表4知,除了在Balance Scale數據集表現得不夠穩定,K最近鄰填補在兩個性能指標上均要優于其它4種填補方法。結合表2的數據集信息,不穩定的原因可能有二:其一,數據集實例數較少,找到的K個樣本與原樣本存在較大差異;其二,數據集特征數較少,海明距離不足以度量樣本間的相似度。橫向對比Chess和Nursery數據集的特征數,K最近鄰填補在Chess數據集上的填補準確率要明顯高于在Nursery數據集上的填補準確率。所以,K最近鄰填補適合應用于滿足一定實例數,特征數較多的數據集的填補工作。從表5來看,選擇不同的填補方法直接影響著后續分類的結果。基于自編碼器的填補和基于生成對抗網絡的填補,兩者均屬于基于神經網絡的填補,它們的分類準確率要好于眾數填補和隨機填補的分類準確率。盡管在填補準確率這一指標上,眾數填補和隨機填補的準確率部分會好于基于神經網絡的填補的準確率,但基于神經網絡的填補能夠挖掘和提煉數據集所蘊含的潛在信息,所以在分類分析中得到了較高的分類準確率。同樣的,選擇不同的網絡結構會造成分類結果存在差異。由于是處理離散型數據集,圖2的填補準確率并未如預期隨缺失比例的升高而下降,存在不穩定的現象,但填補方法的分類性能隨著缺失比例的升高而下降,這也從側面說明完整樣本的數量在分類分析中起到重要的作用。同樣的,不同的缺失機制會影響填補方法的性能。總體來看,在MAR缺失機制下,各填補方法的性能較好。

表4 填補和分類的準確率
本文以離散型缺失數據集作為研究對象,通過構造不同缺失機制、不同缺失比例的缺失數據集,系統地比較和分析了眾數填補、隨機填補、K最近鄰填補、基于自編碼器的填補和基于生成對抗網絡的填補方法的性能,結果表明:
1)在不同缺失機制、不同缺失比例的情況下,K最近鄰填補的整體填補效果要優于其它填補方法。其中,K近鄰則適用于處理特征較多且取值范圍廣的離散型數據集。在具體實施過程中,針對特定的數據集,選擇合適的距離度量函數也至關重要。
2)缺失機制對填補效果的影響較為顯著,不同填補方法在不同缺失機制下的填補效果差別較大。
3)從不同評價方式來看,數據特征和缺失機制對填補準確率影響較大,進而影響分類準確率。
綜上所述,對于離散型缺失數據集的填補工作,構造一個具有普適性的填補模型是相對困難的,應該保持科學謹慎的態度合理地選擇填補模型,并結合實際問題加以分析和應用。