袁建裕, 閆春艷, 葉志偉, 楊志勇
(1 湖北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院, 湖北 武漢 430068; 2 湖北省公安廳科技信息處, 湖北 武漢 430064)
據(jù)統(tǒng)計(jì),全球各領(lǐng)域的數(shù)據(jù)總量正在以每年40%的速度快速增長(zhǎng)[1-2]。然而由于設(shè)備功能限制、設(shè)備故障、數(shù)據(jù)錯(cuò)誤或調(diào)查中的無(wú)回答等因素,數(shù)據(jù)缺失現(xiàn)象較為普遍,很大程度上影響了數(shù)據(jù)質(zhì)量和應(yīng)用[3]。為解決這一問(wèn)題,最簡(jiǎn)單方法就是刪除法,即將包含缺失值的數(shù)據(jù)對(duì)象、數(shù)據(jù)屬性、成對(duì)變量進(jìn)行刪除。但該方法很難適用不同領(lǐng)域的缺失數(shù)據(jù)集,且對(duì)數(shù)據(jù)資源造成浪費(fèi),無(wú)法保證研究結(jié)果的客觀性和準(zhǔn)確性[4]。缺失值填補(bǔ)法是通過(guò)現(xiàn)有數(shù)據(jù),為缺失值估計(jì)一個(gè)合理的填補(bǔ)值,從而構(gòu)造出完整數(shù)據(jù)集。該方法既保證了數(shù)據(jù)集的規(guī)模,又能對(duì)缺失值做出合理的推斷,已受到眾多科研及從業(yè)人員的廣泛關(guān)注。常用的填補(bǔ)方法大致可分為基于統(tǒng)計(jì)學(xué)的填補(bǔ)方法和基于機(jī)器學(xué)習(xí)的填補(bǔ)方法[5]。基于統(tǒng)計(jì)學(xué)的填補(bǔ)方法主要包括均值填補(bǔ)、回歸填補(bǔ)、多重填補(bǔ)等,其特點(diǎn)為原理簡(jiǎn)單、易于實(shí)現(xiàn)?;跈C(jī)器學(xué)習(xí)的填補(bǔ)方法主要包括K最近鄰填補(bǔ)法、基于聚類(lèi)的填補(bǔ)方法、基于神經(jīng)網(wǎng)絡(luò)的填補(bǔ)方法等,其優(yōu)點(diǎn)在于模型通過(guò)對(duì)屬性間關(guān)聯(lián)合理建模,實(shí)現(xiàn)了缺失值的有效估計(jì)。但上述方法大都適用于連續(xù)型數(shù)據(jù),并不適用于離散型數(shù)據(jù)。
本文通過(guò)擴(kuò)展已有模型以適用于離散型數(shù)據(jù)填補(bǔ),并對(duì)填補(bǔ)結(jié)果進(jìn)行后續(xù)分析,系統(tǒng)地比較和分析了眾數(shù)填補(bǔ)、隨機(jī)填補(bǔ)、K最近鄰填補(bǔ)、基于自編碼器的填補(bǔ)和基于生成對(duì)抗網(wǎng)格的填補(bǔ)在離散型數(shù)據(jù)的填補(bǔ)性能。
缺失模式是缺失數(shù)據(jù)的外在特征,可以按不同的標(biāo)準(zhǔn)進(jìn)行分類(lèi)。按照缺失變量個(gè)數(shù)的不同可分為單變量缺失模式和多變量缺失模式,按缺失結(jié)構(gòu)的不同可分為單調(diào)缺失模式和隨機(jī)模式。缺失機(jī)制則是缺失數(shù)據(jù)的內(nèi)在特征,Rubin[6]在其理論研究中把缺失問(wèn)題歸納為三類(lèi),并將數(shù)據(jù)缺失的概率問(wèn)題稱為數(shù)據(jù)缺失機(jī)制。分別為:
1)完全隨機(jī)缺失 (Missing Completely at Random,MCAR),即缺失值完成隨機(jī)產(chǎn)生,缺失值與已觀測(cè)數(shù)據(jù)無(wú)關(guān),與未觀測(cè)數(shù)據(jù)也無(wú)關(guān),并且缺失數(shù)據(jù)不會(huì)使結(jié)果產(chǎn)生偏差。
2)隨機(jī)缺失 (Missing at Random,MAR),即缺失值與已觀測(cè)數(shù)據(jù)存在相關(guān)性,缺失值可根據(jù)已有數(shù)據(jù)進(jìn)行估計(jì)。
3)非隨機(jī)缺失 (Not Missing at Random,NMAR),即缺失值與未觀測(cè)數(shù)據(jù)有關(guān)。這一理論規(guī)定了填補(bǔ)方法可以提供有效估計(jì)的條件。
離散連續(xù)化是特征工程中必不可少的一個(gè)環(huán)節(jié)。在數(shù)據(jù)挖掘中,許多機(jī)器學(xué)習(xí)模型要求輸入變量為連續(xù)型,離散型數(shù)據(jù)需要在預(yù)處理階段轉(zhuǎn)換成連續(xù)型,其中,One-hot編碼是用于處理離散數(shù)據(jù)的常用方法[7]。One-hot編碼有效解決了數(shù)據(jù)的屬性問(wèn)題,并在一定程序上擴(kuò)充了特征空間。以本文使用的數(shù)據(jù)集Nursery中特征“家族情況”為例,其取值集合為complete,completed,incomplete,foster,相應(yīng)的One-hot編碼見(jiàn)表1。
表1 One-hot編碼
1)均值填補(bǔ):均值填補(bǔ)法是統(tǒng)計(jì)方法中應(yīng)用最為廣泛的填補(bǔ)方法[8],根據(jù)待研究數(shù)據(jù)特征中已觀測(cè)數(shù)據(jù)的均值或眾數(shù)作為缺失值。在進(jìn)行填補(bǔ)時(shí),若缺失值的數(shù)據(jù)類(lèi)型為數(shù)值型,則使用缺失值所屬特征的均值作為缺失值的填補(bǔ)值,若缺失值的數(shù)據(jù)類(lèi)型為非數(shù)值型,則使用缺失值所屬特征的眾數(shù)作為缺失值的填補(bǔ)值。另外,可以選擇不同的統(tǒng)計(jì)量作為填補(bǔ)值,如中位數(shù)、修正平均數(shù)等。
2)隨機(jī)填補(bǔ):隨機(jī)填補(bǔ)法是社會(huì)調(diào)查領(lǐng)域中較為常見(jiàn)的缺失值處理方法[9],統(tǒng)計(jì)已有觀測(cè)數(shù)據(jù)中該特征各值出現(xiàn)的概率,依概率隨機(jī)選擇一個(gè)值作為填補(bǔ)值。顯然,出現(xiàn)頻次多的特征值作為填補(bǔ)值的概率要大于出現(xiàn)頻次少的特征值。
1)K最近鄰填補(bǔ):K近鄰填補(bǔ)法的核心是從完整樣本中選擇與缺失樣本距離最近的K個(gè)完整樣本,并將完整樣本中的已觀測(cè)值的加權(quán)平均值作為填補(bǔ)值[10]。本文研究基于離散型缺失數(shù)據(jù)的填補(bǔ)方法,故選取基于信息論中的海明距離[11]作為K近鄰填補(bǔ)法的距離度量函數(shù),用以統(tǒng)計(jì)兩個(gè)等長(zhǎng)字符串對(duì)應(yīng)位置字符不同的個(gè)數(shù)之和,其定義為:
其中,A和B為參與計(jì)算的兩個(gè)樣本;Ai和Bi為樣本A和B的第i個(gè)特征,取值為0或1;m為特征空間的維度。距離越小,樣本間的相似度越高,所在樣本對(duì)應(yīng)的特征值作為填補(bǔ)值的可靠性也越高。
2)基于自編碼器的填補(bǔ):自編碼器是多層感知機(jī)模型的一種,其特點(diǎn)是輸出層與輸入層具有相同數(shù)量的神經(jīng)元,其輸入即為模型期望的輸出[12]?;谧跃幋a器的填補(bǔ)優(yōu)點(diǎn)在于只需要訓(xùn)練單個(gè)網(wǎng)絡(luò)的權(quán)重,填補(bǔ)速度快,具體步驟:
步驟一:根據(jù)缺失數(shù)據(jù)集確定網(wǎng)絡(luò)結(jié)構(gòu)。
步驟二:將數(shù)據(jù)集分成完整數(shù)據(jù)集Dcom和不完整數(shù)據(jù)集Dmiss。
步驟三:將數(shù)據(jù)集Dcom作為模型的訓(xùn)練集,確定網(wǎng)絡(luò)的權(quán)重。
步驟四:預(yù)填補(bǔ)不完整數(shù)據(jù)集Dmiss,依次將Dcom中的樣本作為已訓(xùn)練模型的輸入,樣本的缺失值以模型輸出中的缺失值相應(yīng)位上的預(yù)測(cè)值作為填補(bǔ)值。
3)基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ):生成對(duì)抗網(wǎng)絡(luò)由兩個(gè)網(wǎng)絡(luò)組成,分別為生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò),通過(guò)對(duì)抗學(xué)習(xí)的方式來(lái)訓(xùn)練模型的適應(yīng)性[13]。網(wǎng)絡(luò)的訓(xùn)練始終處于一種對(duì)抗博弈的狀態(tài)?;谏蓪?duì)抗網(wǎng)絡(luò)的填補(bǔ)是通過(guò)生成網(wǎng)絡(luò)與判別網(wǎng)絡(luò)的相互作用來(lái)學(xué)習(xí)數(shù)據(jù)的分布,從而預(yù)測(cè)出缺失值的填補(bǔ)值。其中,生成網(wǎng)絡(luò)用于模擬和預(yù)測(cè)樣本,而判別網(wǎng)絡(luò)則用于判定模擬樣本與真實(shí)樣本的差異性。基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ)過(guò)程主要有三個(gè)階段:判別網(wǎng)絡(luò)訓(xùn)練、生成網(wǎng)絡(luò)訓(xùn)練和模型填補(bǔ)。
判別網(wǎng)絡(luò)訓(xùn)練:首先將數(shù)據(jù)集中的完整樣本標(biāo)記為真樣本,生成器利用隨機(jī)噪聲作為輸入生成的樣本標(biāo)記為假樣本,將完整樣本和生成網(wǎng)絡(luò)生成的樣本輸入到判別網(wǎng)絡(luò)中,以此來(lái)訓(xùn)練、更新判別網(wǎng)絡(luò)的權(quán)重。
生成網(wǎng)絡(luò)訓(xùn)練:首先使用眾數(shù)填補(bǔ)對(duì)不完整數(shù)據(jù)集進(jìn)行預(yù)填補(bǔ),將預(yù)填補(bǔ)后的樣本標(biāo)記為真樣本,再將真樣本作為生成網(wǎng)絡(luò)的輸入。然后使用第一階段訓(xùn)練好的判別器,即固定判別網(wǎng)絡(luò),根據(jù)模型的損失函數(shù)來(lái)不斷更新生成網(wǎng)絡(luò)的權(quán)重。
模型填補(bǔ):對(duì)數(shù)據(jù)集進(jìn)行預(yù)填補(bǔ),將填補(bǔ)后的數(shù)據(jù)輸入到第二階段訓(xùn)練好的生成器中,生成器的輸出則為缺失值的填補(bǔ)值。
基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ)方法的過(guò)程見(jiàn)圖1。
圖 1 基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ)方法
實(shí)驗(yàn)操作平臺(tái)為Windows 10 64位操作系統(tǒng);處理器為i5-8265U;運(yùn)行內(nèi)存8G;編程語(yǔ)言為Python 3.9,主要使用了NumPy 1.20,Pandas 1.2.4,scikit-learn 0.24,Keras 2.1.1庫(kù)。
實(shí)驗(yàn)使用的3個(gè)數(shù)據(jù)集選自UCI機(jī)器學(xué)習(xí)數(shù)據(jù)倉(cāng)庫(kù),均為離散型數(shù)據(jù)集。數(shù)據(jù)集的詳細(xì)信息見(jiàn)表2。
表2 數(shù)據(jù)集基本信息
本文系統(tǒng)地比較和分析了眾數(shù)填補(bǔ)、隨機(jī)填補(bǔ)、K最近鄰填補(bǔ)、基于自編碼器的填補(bǔ)和基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ)在不同缺失機(jī)制、不同缺失比例情況下對(duì)離散型數(shù)據(jù)集進(jìn)行填補(bǔ)的適用范圍和優(yōu)缺點(diǎn)。其中,缺失比例包括10%、20%和30%,缺失機(jī)制包括MCAR、MAR和NMAR,缺失模式為多變量隨機(jī)缺失模式。除了眾數(shù)填補(bǔ)和隨機(jī)填補(bǔ),其它填補(bǔ)方法在填補(bǔ)過(guò)程中均使用了One-hot編碼。為方便表示,各方法在下文圖表中分別簡(jiǎn)稱:Mode、Random、KNN、MLP、Encoder和GAN。參數(shù)設(shè)置見(jiàn)表3。
表3 參數(shù)設(shè)置
本文采用兩個(gè)性能指標(biāo)來(lái)衡量各填補(bǔ)方法的填補(bǔ)效果,分別為填補(bǔ)準(zhǔn)確率和分類(lèi)準(zhǔn)確率。它們的含義如下:
1)填補(bǔ)準(zhǔn)確率:所有缺失值的填補(bǔ)值中正確填補(bǔ)的比例。
2)分類(lèi)準(zhǔn)確率:完整樣本組成訓(xùn)練集訓(xùn)練分類(lèi)模型,本文所使用分類(lèi)模型為支持向量機(jī)(Support Vector Machine,SVM),并采用10折交叉驗(yàn)證的方法將填補(bǔ)后樣本作為測(cè)試集所得到的樣本被正確分類(lèi)的比例。
實(shí)驗(yàn)得到的填補(bǔ)準(zhǔn)確率和分類(lèi)準(zhǔn)確率的具體數(shù)值見(jiàn)表4,表中加粗項(xiàng)為當(dāng)前行最優(yōu)值。接著,從兩個(gè)不同的維度,即缺失比例和缺失機(jī)制,分別對(duì)填補(bǔ)準(zhǔn)確率和分類(lèi)準(zhǔn)確率取平均值進(jìn)行可視化(圖2、圖3)。
圖 2 填補(bǔ)準(zhǔn)確率
圖 3 分類(lèi)準(zhǔn)確率
其中柱形表示在相同缺失比例下填補(bǔ)和分類(lèi)的平均準(zhǔn)確率,折線表示在相同的缺失機(jī)制下填補(bǔ)和分類(lèi)的準(zhǔn)確率。
由表4知,除了在Balance Scale數(shù)據(jù)集表現(xiàn)得不夠穩(wěn)定,K最近鄰填補(bǔ)在兩個(gè)性能指標(biāo)上均要優(yōu)于其它4種填補(bǔ)方法。結(jié)合表2的數(shù)據(jù)集信息,不穩(wěn)定的原因可能有二:其一,數(shù)據(jù)集實(shí)例數(shù)較少,找到的K個(gè)樣本與原樣本存在較大差異;其二,數(shù)據(jù)集特征數(shù)較少,海明距離不足以度量樣本間的相似度。橫向?qū)Ρ菴hess和Nursery數(shù)據(jù)集的特征數(shù),K最近鄰填補(bǔ)在Chess數(shù)據(jù)集上的填補(bǔ)準(zhǔn)確率要明顯高于在Nursery數(shù)據(jù)集上的填補(bǔ)準(zhǔn)確率。所以,K最近鄰填補(bǔ)適合應(yīng)用于滿足一定實(shí)例數(shù),特征數(shù)較多的數(shù)據(jù)集的填補(bǔ)工作。從表5來(lái)看,選擇不同的填補(bǔ)方法直接影響著后續(xù)分類(lèi)的結(jié)果?;谧跃幋a器的填補(bǔ)和基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ),兩者均屬于基于神經(jīng)網(wǎng)絡(luò)的填補(bǔ),它們的分類(lèi)準(zhǔn)確率要好于眾數(shù)填補(bǔ)和隨機(jī)填補(bǔ)的分類(lèi)準(zhǔn)確率。盡管在填補(bǔ)準(zhǔn)確率這一指標(biāo)上,眾數(shù)填補(bǔ)和隨機(jī)填補(bǔ)的準(zhǔn)確率部分會(huì)好于基于神經(jīng)網(wǎng)絡(luò)的填補(bǔ)的準(zhǔn)確率,但基于神經(jīng)網(wǎng)絡(luò)的填補(bǔ)能夠挖掘和提煉數(shù)據(jù)集所蘊(yùn)含的潛在信息,所以在分類(lèi)分析中得到了較高的分類(lèi)準(zhǔn)確率。同樣的,選擇不同的網(wǎng)絡(luò)結(jié)構(gòu)會(huì)造成分類(lèi)結(jié)果存在差異。由于是處理離散型數(shù)據(jù)集,圖2的填補(bǔ)準(zhǔn)確率并未如預(yù)期隨缺失比例的升高而下降,存在不穩(wěn)定的現(xiàn)象,但填補(bǔ)方法的分類(lèi)性能隨著缺失比例的升高而下降,這也從側(cè)面說(shuō)明完整樣本的數(shù)量在分類(lèi)分析中起到重要的作用。同樣的,不同的缺失機(jī)制會(huì)影響填補(bǔ)方法的性能。總體來(lái)看,在MAR缺失機(jī)制下,各填補(bǔ)方法的性能較好。
表4 填補(bǔ)和分類(lèi)的準(zhǔn)確率
本文以離散型缺失數(shù)據(jù)集作為研究對(duì)象,通過(guò)構(gòu)造不同缺失機(jī)制、不同缺失比例的缺失數(shù)據(jù)集,系統(tǒng)地比較和分析了眾數(shù)填補(bǔ)、隨機(jī)填補(bǔ)、K最近鄰填補(bǔ)、基于自編碼器的填補(bǔ)和基于生成對(duì)抗網(wǎng)絡(luò)的填補(bǔ)方法的性能,結(jié)果表明:
1)在不同缺失機(jī)制、不同缺失比例的情況下,K最近鄰填補(bǔ)的整體填補(bǔ)效果要優(yōu)于其它填補(bǔ)方法。其中,K近鄰則適用于處理特征較多且取值范圍廣的離散型數(shù)據(jù)集。在具體實(shí)施過(guò)程中,針對(duì)特定的數(shù)據(jù)集,選擇合適的距離度量函數(shù)也至關(guān)重要。
2)缺失機(jī)制對(duì)填補(bǔ)效果的影響較為顯著,不同填補(bǔ)方法在不同缺失機(jī)制下的填補(bǔ)效果差別較大。
3)從不同評(píng)價(jià)方式來(lái)看,數(shù)據(jù)特征和缺失機(jī)制對(duì)填補(bǔ)準(zhǔn)確率影響較大,進(jìn)而影響分類(lèi)準(zhǔn)確率。
綜上所述,對(duì)于離散型缺失數(shù)據(jù)集的填補(bǔ)工作,構(gòu)造一個(gè)具有普適性的填補(bǔ)模型是相對(duì)困難的,應(yīng)該保持科學(xué)謹(jǐn)慎的態(tài)度合理地選擇填補(bǔ)模型,并結(jié)合實(shí)際問(wèn)題加以分析和應(yīng)用。