喬 非, 翟曉東, 王巧玲
(同濟(jì)大學(xué) 電子與信息工程學(xué)院,上海 201804)
隨著互聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)的發(fā)展,大數(shù)據(jù)日益滲透于金融、醫(yī)療、工業(yè)等各個(gè)行業(yè)領(lǐng)域之中,成為重要的生產(chǎn)因素,因此數(shù)據(jù)挖掘和應(yīng)用具有十分重要的現(xiàn)實(shí)意義。在實(shí)際的采集、傳輸、存儲(chǔ)過程中,多種原因?qū)е聰?shù)據(jù)質(zhì)量參差不齊,導(dǎo)致后續(xù)數(shù)據(jù)分析挖掘效果也不佳[1-2]?,F(xiàn)有大多數(shù)學(xué)者針對(duì)數(shù)據(jù)質(zhì)量相關(guān)的研究主要集中在數(shù)據(jù)質(zhì)量特性評(píng)估,側(cè)重評(píng)估數(shù)據(jù)集的準(zhǔn)確性、相似性或完整性,而這些特性分別取決于數(shù)據(jù)集中異常值、相似值及缺失值[3]。由于數(shù)據(jù)內(nèi)在或外界因素而造成在某個(gè)屬性上發(fā)生信息丟失的數(shù)據(jù)點(diǎn)稱為缺失值。缺失值作為數(shù)據(jù)質(zhì)量評(píng)估的重要方面,能夠判斷數(shù)據(jù)集中各數(shù)據(jù)的完整程度,為后續(xù)數(shù)據(jù)分析提供依據(jù)。在許多實(shí)際研究問題中,數(shù)據(jù)的缺失或不完整是必然存在的,當(dāng)缺失數(shù)據(jù)占研究數(shù)據(jù)比重過大時(shí)會(huì)造成大量數(shù)據(jù)信息的丟失,導(dǎo)致基于數(shù)據(jù)的研究結(jié)果產(chǎn)生較大偏差,影響數(shù)據(jù)的使用效果。因此,對(duì)數(shù)據(jù)集的缺失值進(jìn)行評(píng)估和研究是至關(guān)重要的[4-5]。
目前針對(duì)缺失值相關(guān)的研究主要包括缺失值檢測(cè)和缺失值填補(bǔ)2 個(gè)方面。針對(duì)缺失值檢測(cè)問題,由于大數(shù)據(jù)集具有維度高、數(shù)據(jù)量大的特點(diǎn),目前研究多采用建模方法,根據(jù)數(shù)據(jù)點(diǎn)之間潛在的關(guān)聯(lián)且不同數(shù)據(jù)屬性之間也存在一定聯(lián)系,建立缺失值檢測(cè)模型,從而提高檢測(cè)準(zhǔn)確度并降低時(shí)間復(fù)雜度。例如,文獻(xiàn)[6]研究了異構(gòu)屬性多維數(shù)組的概率建模,且使用拉普拉斯方法和高斯過程對(duì)近似的算法進(jìn)行轉(zhuǎn)換求解。該模型可以通過對(duì)海量數(shù)組的每個(gè)屬性采用單獨(dú)的指數(shù)族分布來管理異質(zhì)性,從而對(duì)數(shù)據(jù)集的缺失值進(jìn)行檢測(cè)。文獻(xiàn)[7]提出了一種快速檢測(cè)丟失數(shù)據(jù)的方法,該方法概率性地對(duì)多類別RFID系統(tǒng)的丟失數(shù)據(jù)進(jìn)行檢測(cè),在滿足檢測(cè)結(jié)果可靠的基礎(chǔ)上,將檢測(cè)時(shí)間最小化。文獻(xiàn)[8]建立了2個(gè)回歸適應(yīng)模型,一個(gè)用于對(duì)缺失數(shù)據(jù)的主成分進(jìn)行分析,另一個(gè)是根據(jù)缺失值構(gòu)建的最小二乘回歸模型,使用這2個(gè)模型,研究人員可以通過預(yù)測(cè)變量和響應(yīng)變量推算出缺失值,從而實(shí)現(xiàn)對(duì)缺失值的檢測(cè)。文獻(xiàn)[9]采用Hollow-tree 方法來檢測(cè)缺少屬性值的數(shù)據(jù),該方法首先定義出一組距離函數(shù)索引,這些函數(shù)可以測(cè)量缺失數(shù)據(jù)點(diǎn)之間的距離。其次,根據(jù)距離函數(shù)索引,計(jì)算出能夠有效排序缺失數(shù)據(jù)而不會(huì)引起數(shù)據(jù)集內(nèi)部結(jié)構(gòu)失真的模型。最后,根據(jù)計(jì)算出的模型,對(duì)缺失數(shù)據(jù)進(jìn)行檢測(cè)。此外另有一些學(xué)者使用交叉驗(yàn)證模型,通過計(jì)算數(shù)據(jù)集的完整性實(shí)現(xiàn)對(duì)缺失數(shù)據(jù)的檢測(cè)。例如文獻(xiàn)[10]建立了完整性證據(jù)和不可信證據(jù)交叉驗(yàn)證模型,完整性證據(jù)用于檢測(cè)數(shù)據(jù)的完整性,不可信證據(jù)用于判定缺失值檢測(cè)的結(jié)果是否可靠。文獻(xiàn)[11]首次提出采用IEC61970方法來進(jìn)行信息集成,然后根據(jù)數(shù)據(jù)的特征自動(dòng)建模,形成了一個(gè)可以直接進(jìn)行判別缺失值的檢測(cè)模型。文獻(xiàn)[12]提出了一種基于復(fù)數(shù)旋轉(zhuǎn)碼的缺失值檢驗(yàn)方法,該方法用哈希算法對(duì)數(shù)據(jù)進(jìn)行交叉檢驗(yàn),但是僅針對(duì)細(xì)粒度數(shù)據(jù),并不具有很好的通用性。
通過上述文獻(xiàn)分析可知,目前針對(duì)缺失值檢測(cè)方面的研究基本止步于對(duì)數(shù)據(jù)集是否含有缺失值進(jìn)行判斷,僅僅可以檢測(cè)出數(shù)據(jù)集中含有缺失值的數(shù)據(jù)點(diǎn),無法判斷出多維特性數(shù)據(jù)點(diǎn)是多個(gè)屬性維度還是僅一個(gè)屬性維度發(fā)生缺失,且未對(duì)其缺失程度進(jìn)行量化,缺少對(duì)多維特性數(shù)據(jù)全面立體的分析。另一方面,在機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等大數(shù)據(jù)研究領(lǐng)域,為了能從數(shù)據(jù)集中提取到有用的信息,需要對(duì)缺失數(shù)據(jù)集進(jìn)行處理,目前研究主要包括以下3 種方法:
(1)不作處理[13]。即保持原有帶缺失數(shù)據(jù)的數(shù)據(jù)集,并對(duì)其進(jìn)行信息挖掘,然而數(shù)據(jù)集中的維度缺失常常會(huì)導(dǎo)致數(shù)據(jù)類型不匹配的錯(cuò)誤,這給后續(xù)數(shù)據(jù)分析與處理帶來了挑戰(zhàn)。此外,不作處理會(huì)導(dǎo)致缺失數(shù)據(jù)攜帶的信息價(jià)值丟失,從而造成數(shù)據(jù)分析結(jié)果不準(zhǔn)確。
(2)刪除數(shù)據(jù)[14]。刪除數(shù)據(jù)是指將發(fā)生缺失的數(shù)據(jù)點(diǎn)進(jìn)行刪除,并把剩余未缺失的數(shù)據(jù)點(diǎn)重新歸并為一個(gè)完整的數(shù)據(jù)集。該方法簡(jiǎn)單易行,在面對(duì)龐大數(shù)據(jù)集時(shí)仍能保持良好的時(shí)效性。然而也存在明顯不足,缺失數(shù)據(jù)點(diǎn)往往攜帶實(shí)際生產(chǎn)過程中的相關(guān)重要信息,直接刪除會(huì)造成數(shù)據(jù)價(jià)值浪費(fèi)。雖然在缺失數(shù)據(jù)占少量比例的情況下,刪除數(shù)據(jù)只會(huì)導(dǎo)致數(shù)據(jù)信息挖掘不完全,但是在數(shù)據(jù)集缺失程度嚴(yán)重、缺失數(shù)據(jù)所占比例大的情況下,直接刪除缺失數(shù)據(jù)會(huì)造成整個(gè)數(shù)據(jù)集分布完全失真,從而不再具有研究?jī)r(jià)值。
(3)填補(bǔ)數(shù)據(jù)[15]。填補(bǔ)數(shù)據(jù)是指利用各類算法模型,基于數(shù)據(jù)點(diǎn)的分布情況,對(duì)缺失數(shù)據(jù)進(jìn)行可能值填補(bǔ),從而得到完整的數(shù)據(jù)集。該方法可以盡可能地挖掘出缺失數(shù)據(jù)所含信息,并提高了數(shù)據(jù)集的完整度,還原了數(shù)據(jù)集原始的空間分布。目前缺失值填補(bǔ)方法可分為如下4類:
一是固定值填補(bǔ)[16]。固定值填補(bǔ)是用特定數(shù)值對(duì)缺失值進(jìn)行填補(bǔ)。一般都取零為特定數(shù)值。該方法能夠有效快速對(duì)大數(shù)據(jù)集進(jìn)行處理,避免在后續(xù)數(shù)據(jù)分析過程中出現(xiàn)數(shù)據(jù)類型不匹配的問題。然而固定值填補(bǔ)無法挖掘出缺失數(shù)據(jù)所蘊(yùn)含的價(jià)值信息,并且對(duì)數(shù)據(jù)集的分布造成一定的影響。
二是替換缺失值[17]。替換缺失值是指用一些數(shù)學(xué)方法,參考缺失值所在位置的上下文計(jì)算得到缺失值的可能取值。常用的方法有:平均值填補(bǔ)、中位數(shù)填補(bǔ)、眾數(shù)填補(bǔ)、插值填補(bǔ)等。
三是模型填補(bǔ)[18]。模型填補(bǔ)是利用其他完整數(shù)據(jù)點(diǎn)對(duì)缺失值預(yù)測(cè)模型進(jìn)行訓(xùn)練,將缺失數(shù)據(jù)點(diǎn)輸入到預(yù)測(cè)模型,得到缺失位置的可能填補(bǔ)值。常見的如KNN(k-nearest neighbor)算法模型、Iterative Imputer算法模型等。
四是低秩逼近[19]。低秩逼近通過將數(shù)據(jù)集轉(zhuǎn)換為矩陣形式,構(gòu)建合理的低秩矩陣模型,通過低秩矩陣優(yōu)化算法求解最優(yōu)解,從而填補(bǔ)缺失值,目前多應(yīng)用于高缺失程度情況下的缺失值填補(bǔ)[20]。
在實(shí)際應(yīng)用過程中,不同情況下對(duì)缺失值填補(bǔ)算法的要求往往不同[21]。例如當(dāng)數(shù)據(jù)集的缺失程度小、數(shù)據(jù)分析精度要求低時(shí),往往使用固定值填補(bǔ)方法,從而實(shí)現(xiàn)快速填補(bǔ)。當(dāng)數(shù)據(jù)分析精度要求較高、缺失程度較大的情況下,使用模型填補(bǔ)能夠挖掘出已有數(shù)據(jù)點(diǎn)之間的聯(lián)系,從而預(yù)估出缺失值。但目前上述3 類方法都包含多種缺失值填補(bǔ)方法,如何根據(jù)數(shù)據(jù)集的缺失程度選擇最合適的填補(bǔ)方法仍有待研究。
綜上所述,由于數(shù)據(jù)集結(jié)構(gòu)多樣,生產(chǎn)采集環(huán)境復(fù)雜,經(jīng)常會(huì)發(fā)生數(shù)據(jù)點(diǎn)的缺失。盡管目前針對(duì)數(shù)據(jù)集中缺失值檢測(cè)及填補(bǔ)方法已經(jīng)具有一定的研究,由于數(shù)據(jù)處理分析過程中對(duì)數(shù)據(jù)質(zhì)量的要求不斷提高,針對(duì)多維特性數(shù)據(jù)的缺失值檢測(cè)及填補(bǔ)方法研究也變得更加復(fù)雜和具有挑戰(zhàn)性。本文研究主要包括以下兩點(diǎn):
(1)考慮到目前常見的多維特性數(shù)據(jù),由于其不同屬性維度的缺失都會(huì)對(duì)數(shù)據(jù)質(zhì)量造成影響,所以首先針對(duì)多維特性數(shù)據(jù)缺失程度分析不夠全面、基本止步于對(duì)數(shù)據(jù)集是否含有缺失值這一不足展開研究[9],設(shè)計(jì)缺失值檢測(cè)方法,在數(shù)據(jù)點(diǎn)缺失度基礎(chǔ)上進(jìn)一步提出數(shù)據(jù)總體缺失度和加權(quán)數(shù)據(jù)總體缺失度2個(gè)概念的嚴(yán)格定義及計(jì)算公式,實(shí)現(xiàn)對(duì)多維特性數(shù)據(jù)集缺失程度的全面檢測(cè),為后續(xù)缺失值填補(bǔ)方法的選擇提供理論依據(jù)。
(2)目前已有缺失值填補(bǔ)方法眾多,但多數(shù)研究所關(guān)注的問題一方面是對(duì)某種缺失值填補(bǔ)方法本身的精度進(jìn)行改進(jìn)[22],另一方面是對(duì)缺失值進(jìn)行簡(jiǎn)單填補(bǔ)從而得到更加準(zhǔn)確可靠的數(shù)據(jù)分析結(jié)果[23],忽略了所選擇的缺失值填補(bǔ)方法是否合適。針對(duì)該問題,基于所提出的3種缺失度通過實(shí)驗(yàn)橫向、縱向?qū)Ρ群头治霾煌笔е堤钛a(bǔ)方法性能,研究不同缺失值填補(bǔ)方法的適用性,從而實(shí)現(xiàn)根據(jù)數(shù)據(jù)集的缺失程度選擇最合適的填補(bǔ)方法,進(jìn)一步提高后續(xù)數(shù)據(jù)處理分析的準(zhǔn)確性和可靠性。
當(dāng)對(duì)數(shù)據(jù)集的缺失程度進(jìn)行分析時(shí),首先需要對(duì)其進(jìn)行缺失值檢測(cè)。在實(shí)際生產(chǎn)過程中,數(shù)據(jù)集中的每個(gè)數(shù)據(jù)點(diǎn)往往具有多個(gè)屬性維度,在空間中具有復(fù)雜的形態(tài),采用Dataframe格式[24]對(duì)數(shù)據(jù)集進(jìn)行存儲(chǔ)。DataFrame 是一種表格型數(shù)據(jù)結(jié)構(gòu),它含有1 組有序的列,每列可以是不同的值,既有行索引,也有列索引,數(shù)據(jù)點(diǎn)的分布更為直觀,方便進(jìn)行缺失值檢測(cè)。所設(shè)計(jì)的缺失值檢測(cè)流程如圖1 所示,具體步驟如下。
圖1 缺失值檢測(cè)流程及偽代碼Fig.1 Flowchart and pseudo-code of missing value detection
(1) 輸入待處理的數(shù)據(jù)集D1,并將其整合成n×m階矩陣,其中n代表數(shù)據(jù)點(diǎn)的數(shù)量,m代表每個(gè)數(shù)據(jù)點(diǎn)的維度,每個(gè)元素為xij(其中i表示矩陣行數(shù),j表示矩陣列數(shù))。
為了更直觀說明,這里采用一組6×4階數(shù)據(jù)集D'1進(jìn)行舉例描述。設(shè)數(shù)據(jù)集D'1有6個(gè)數(shù)據(jù)點(diǎn),每個(gè)數(shù)據(jù)點(diǎn)包含4個(gè)屬性維度。根據(jù)數(shù)據(jù)集D'1的分布可以看出,第1個(gè)和第5個(gè)數(shù)據(jù)點(diǎn)發(fā)生了缺失。
(2) 定義n×m維全零矩陣Z0從矩陣的第1行第1 列即i=1、j=1 開始在空間中對(duì)數(shù)據(jù)集矩陣的行列依次進(jìn)行檢測(cè),并判斷每一個(gè)數(shù)據(jù)點(diǎn)xi(0<i≤n,i∈N)的每一個(gè)維度xij(0<j≤m,j∈N)是否為空。若判斷出xij為空,則將數(shù)據(jù)集矩陣的第i行第j列標(biāo)記為“F”,即xij=F,并為矩陣Z的第i行第j列賦值為1,即Z[i,j]=1,表明xij發(fā)生缺失。反之,則不填充。
(3) 重復(fù)進(jìn)行步驟(2),直至對(duì)整個(gè)數(shù)據(jù)集D1完成檢測(cè)。如圖2 所示,此時(shí)Z矩陣標(biāo)記完畢,從空間上直觀給出了數(shù)據(jù)集的缺失分布,被標(biāo)記為1 的表明數(shù)據(jù)點(diǎn)在相應(yīng)維度發(fā)生了缺失。
圖2 矩陣Z示意Fig.2 Schematic diagram of matrix Z
圖3 缺失值檢測(cè)后數(shù)據(jù)集矩陣示意Fig.3 Schematic diagram of dataset matrix after missing value detection
相應(yīng)地,對(duì)數(shù)據(jù)集D'1檢查完后,對(duì)應(yīng)的D'1及其Z矩陣為
利用上述缺失值檢測(cè)方法能夠查找出數(shù)據(jù)集中發(fā)生缺失的數(shù)據(jù)點(diǎn)的位置及缺失屬性的個(gè)數(shù)。接著基于該缺失值檢測(cè)方法提出多種缺失度概念,根據(jù)缺失值檢測(cè)結(jié)果對(duì)數(shù)據(jù)集的缺失度進(jìn)行計(jì)算,從而客觀全面地反應(yīng)整個(gè)數(shù)據(jù)集的缺失程度。
數(shù)據(jù)缺失會(huì)造成數(shù)據(jù)集攜帶信息的損失,需要對(duì)數(shù)據(jù)集的缺失程度進(jìn)行評(píng)估,以便研究人員全面直觀地了解數(shù)據(jù)集。而數(shù)據(jù)缺失可能有數(shù)據(jù)點(diǎn)缺失、屬性維度缺失[25]等,因此有必要結(jié)合數(shù)據(jù)的多維特性對(duì)數(shù)據(jù)集進(jìn)行缺失度評(píng)估。針對(duì)該問題提出數(shù)據(jù)點(diǎn)缺失度、數(shù)據(jù)總體缺失度和加權(quán)數(shù)據(jù)總體缺失度3個(gè)概念。
數(shù)據(jù)點(diǎn)缺失度用于衡量整個(gè)數(shù)據(jù)集中具有缺失的數(shù)據(jù)點(diǎn)占所有數(shù)據(jù)點(diǎn)的比重,記為“Mall”。如圖4a所示,該數(shù)據(jù)集中第2行和第i行的數(shù)據(jù)點(diǎn)分別在不同維度發(fā)生了缺失,即存在數(shù)值為“F”的項(xiàng),因此把第2個(gè)和第i個(gè)數(shù)據(jù)點(diǎn)標(biāo)記為缺失數(shù)據(jù)點(diǎn),數(shù)據(jù)集總體缺失2個(gè)單位。
圖4 3種缺失度示意Fig.4 Diagram of three missing degrees
數(shù)據(jù)點(diǎn)缺失度的具體計(jì)算方法如下:
(1)統(tǒng)計(jì)缺失數(shù)據(jù)點(diǎn)總個(gè)數(shù)。首先定義Sdata為缺失數(shù)據(jù)點(diǎn)的總個(gè)數(shù),從第1 行開始,依次對(duì)Z矩陣的每一行進(jìn)行各個(gè)維度的求和,若某一行所有維度總和相加為零,則表明該行維度全為零,即該數(shù)據(jù)點(diǎn)在任意維度上都沒有發(fā)生缺失,反之,若Z矩陣的第i行各個(gè)維度之和不為零,表明第i個(gè)數(shù)據(jù)點(diǎn)發(fā)生了缺失,則對(duì)Sdata進(jìn)行加1。
(2)計(jì)算數(shù)據(jù)集數(shù)據(jù)點(diǎn)缺失度。數(shù)據(jù)集數(shù)據(jù)點(diǎn)缺失度(Mall)計(jì)算公式為
式中:row(Z)表示Z矩陣的行數(shù),即數(shù)據(jù)集所包含數(shù)據(jù)點(diǎn)的總個(gè)數(shù)。
數(shù)據(jù)點(diǎn)缺失度側(cè)重于計(jì)算整個(gè)數(shù)據(jù)集中發(fā)生缺失的數(shù)據(jù)點(diǎn)所占的比重。其有效考察了含有缺失值的數(shù)據(jù)點(diǎn)個(gè)數(shù),反應(yīng)了數(shù)據(jù)集在整體上的缺失程度。
在大數(shù)據(jù)背景下一個(gè)數(shù)據(jù)點(diǎn)往往會(huì)在多個(gè)屬性維度發(fā)生缺失。倘若只根據(jù)數(shù)據(jù)點(diǎn)缺失度對(duì)缺失數(shù)據(jù)點(diǎn)的個(gè)數(shù)及其所占的比重進(jìn)行判斷,則較為片面。為了更全面地為數(shù)據(jù)集缺失質(zhì)量提供理論支撐,提出數(shù)據(jù)總體缺失度(Mmen)這一概念。與數(shù)據(jù)點(diǎn)缺失度不同,數(shù)據(jù)總體缺失度的最小單位為數(shù)據(jù)點(diǎn)的一個(gè)屬性維度,而非一個(gè)數(shù)據(jù)點(diǎn)。數(shù)據(jù)總體缺失度用于衡量整個(gè)數(shù)據(jù)集中發(fā)生缺失的屬性維度占總屬性維度的百分比。如圖4b所示,該數(shù)據(jù)集中第2行的第1、2、j列以及第i行的第3、j列為F,因此,第2個(gè)數(shù)據(jù)點(diǎn)在1、2、j這3個(gè)屬性維度上發(fā)生了缺失,第i個(gè)數(shù)據(jù)點(diǎn)在3、j這2個(gè)屬性維度上發(fā)生了缺失,數(shù)據(jù)集總體缺失5個(gè)屬性維度單位。
數(shù)據(jù)總體缺失度Mmen的計(jì)算式為
式中:Z[i,j]表示矩陣Z的第i行、第j列。通過對(duì)整個(gè)數(shù)據(jù)集中各個(gè)數(shù)據(jù)點(diǎn)的各個(gè)屬性維度上的數(shù)字進(jìn)行求和,即可得知整個(gè)數(shù)據(jù)集中發(fā)生缺失的屬性維度總個(gè)數(shù)。再將缺失屬性維度總個(gè)數(shù)與數(shù)據(jù)集中數(shù)據(jù)點(diǎn)所有維度總和m×n求商,從而得到數(shù)據(jù)集中發(fā)生缺失的屬性維度占數(shù)據(jù)總體的百分比,即數(shù)據(jù)集的數(shù)據(jù)總體缺失度。
在生產(chǎn)過程中,數(shù)據(jù)集的每一屬性維度對(duì)企業(yè)管理人員的參考價(jià)值往往不同。例如根據(jù)設(shè)備的電流、電壓參數(shù)監(jiān)測(cè)設(shè)備的健康狀況時(shí),電流和電壓2個(gè)屬性維度的數(shù)據(jù)相對(duì)溫度、濕度等其他數(shù)據(jù)來說更為重要,即當(dāng)數(shù)據(jù)點(diǎn)在電流、電壓屬性方面發(fā)生缺失,會(huì)比在其他屬性缺失造成更嚴(yán)重的影響。因此,為數(shù)據(jù)集的每一屬性維度設(shè)定權(quán)重比例系數(shù),并引入加權(quán)數(shù)據(jù)總體缺失度(Mw),從而更加靈活全面描述數(shù)據(jù)集的缺失度,更能符合實(shí)際需求。
式中:Z[i,j]表示矩陣Z的第i行、第j列。依次對(duì)每一個(gè)數(shù)據(jù)點(diǎn)的每一屬性維度進(jìn)行檢測(cè),并與該維度對(duì)應(yīng)的權(quán)重系數(shù)相乘,從而求得該數(shù)據(jù)點(diǎn)的加權(quán)缺失度,再將所有數(shù)據(jù)點(diǎn)的加權(quán)缺失度求和,并與數(shù)據(jù)集中數(shù)據(jù)點(diǎn)所有維度總和m×n求商,從而得到數(shù)據(jù)集的加權(quán)數(shù)據(jù)總體缺失度。
在機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘研究領(lǐng)域,為了能從數(shù)據(jù)集中提取到有用的信息,對(duì)含有缺失值的數(shù)據(jù)集進(jìn)行處理是非常必要的,但如何從眾多的缺失值填補(bǔ)算法中選擇合適的方法仍有待研究。本文基于提出的多種缺失度概念和公開數(shù)據(jù)集對(duì)多種不同典型的缺失值填補(bǔ)算法進(jìn)行性能評(píng)估,采用多種評(píng)價(jià)指標(biāo)研究不同缺失值填補(bǔ)方法在各種缺失度情況下的適用度。
從常用機(jī)器學(xué)習(xí)數(shù)據(jù)庫UCI Machine Learning Repository[26]中選取Iris數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),Iris共包含150 個(gè)樣本數(shù)據(jù)點(diǎn)、4 個(gè)屬性維度,所有的數(shù)據(jù)點(diǎn)被分為3個(gè)類。
實(shí)驗(yàn)從數(shù)據(jù)點(diǎn)缺失度和數(shù)據(jù)總體缺失度的大小關(guān)系出發(fā),評(píng)價(jià)缺失度對(duì)填補(bǔ)算法性能的影響。實(shí)驗(yàn)一共設(shè)置5組不同缺失程度的對(duì)比數(shù)據(jù)集:20-05、20-15、40-15、60-15、60-45。表1 介紹了數(shù)據(jù)集的具體信息,列舉了每個(gè)數(shù)據(jù)集發(fā)生缺失的數(shù)據(jù)點(diǎn)個(gè)數(shù)、發(fā)生缺失的屬性維度個(gè)數(shù)、數(shù)據(jù)點(diǎn)缺失度和數(shù)據(jù)總體缺失度這4 個(gè)屬性。例如20-15 表示用隨機(jī)方法構(gòu)建數(shù)據(jù)點(diǎn)缺失度為20%、數(shù)據(jù)總體缺失度為15%的數(shù)據(jù)集,該數(shù)據(jù)集發(fā)生缺失的數(shù)據(jù)點(diǎn)個(gè)數(shù)為30個(gè),發(fā)生缺失的屬性維度個(gè)數(shù)為90 個(gè),平均每個(gè)數(shù)據(jù)點(diǎn)在3個(gè)屬性維度上發(fā)生了缺失。
表1 數(shù)據(jù)集介紹Tab.1 Introduction to dataset
根據(jù)上述缺失度的設(shè)置,這些數(shù)據(jù)集囊括了Mall偏小且Mmen偏小、Mall偏小且Mmen偏大、Mall中等且Mmen中等、Mall偏大且Mmen偏小,以及Mall偏大且Mmen偏大這5 種情況。后續(xù)實(shí)驗(yàn)在這5 組數(shù)據(jù)集的基礎(chǔ)上,對(duì)5種缺失值填補(bǔ)算法進(jìn)行全面性能評(píng)估。
采用典型的F1-score和RMSE2個(gè)指標(biāo)來評(píng)判多種缺失值填補(bǔ)算法的性能。F1-score能有效判斷預(yù)測(cè)分類和實(shí)際分類的相似程度,是預(yù)測(cè)模型精確率和召回率的一種加權(quán)平均。RMSE計(jì)算了預(yù)測(cè)結(jié)果與真實(shí)結(jié)果的均方根誤差,用于進(jìn)一步衡量缺失值預(yù)測(cè)結(jié)果是否接近真實(shí)結(jié)果。表2 為預(yù)測(cè)模型的混淆矩陣,其包含了模型預(yù)測(cè)的4種結(jié)果:在真實(shí)結(jié)果為0的情況下,若預(yù)測(cè)結(jié)果也為0,則表示真負(fù)例(true negative,TN),若預(yù)測(cè)結(jié)果為1,則表示假正例(false positive,F(xiàn)P);在真實(shí)結(jié)果為1的情況下,若預(yù)測(cè)結(jié)果也為1,則表示真正例(true positive,TP),若預(yù)測(cè)結(jié)果為0,則表示假負(fù)例(false negative,F(xiàn)N)。
表2 混淆矩陣Tab.2 Confusion matrix
根據(jù)模型預(yù)測(cè)的結(jié)果可以得到該模型預(yù)測(cè)的精確率Precision和召回率Recall,具體計(jì)算公式為
式中:NTP表示真正例的個(gè)數(shù);NFP表示假正例的個(gè)數(shù);NFN表示假負(fù)例的個(gè)數(shù)。精確率表示被正確預(yù)測(cè)為1的樣本占預(yù)測(cè)為1的樣本總數(shù)的比例;召回率表示被正確預(yù)測(cè)為1 的樣本占真實(shí)為1 的樣本總數(shù)的比例,F(xiàn)1-score為精確率和召回率的調(diào)和平均數(shù)。
F1-score的范圍為[0,1],根據(jù)式(7)可以看出,精準(zhǔn)率和召回率只要有一個(gè)比較小的話,F(xiàn)1-score的值都會(huì)降低,即F1-score越大表明預(yù)測(cè)結(jié)果越好。
實(shí)驗(yàn)采用的另一個(gè)評(píng)價(jià)指標(biāo)為RMSE,具體計(jì)算式為
式中:ei為原始未發(fā)生缺失的數(shù)據(jù);e?i為發(fā)生缺失后進(jìn)行填充的數(shù)據(jù);m為缺失維度總個(gè)數(shù)。RMSE值越大,表明誤差越大,缺失值填補(bǔ)算法的預(yù)測(cè)效果越不好。
綜上所述,F(xiàn)1-score是用于評(píng)判模型預(yù)測(cè)缺失值的準(zhǔn)確度,而RMSE是用于評(píng)判模型累計(jì)預(yù)測(cè)誤差值。
目前常用的缺失值填補(bǔ)方法可分為固定值填補(bǔ)、替換缺失值和模型填補(bǔ)的方法,為了對(duì)不同填補(bǔ)方法在不同缺失度時(shí)填補(bǔ)效果進(jìn)行全面評(píng)估,從固定值填補(bǔ)方法里面選擇補(bǔ)零法,從替換缺失值方法里選擇平均值和插值填補(bǔ)方法,從模型填補(bǔ)方法里選擇KNN填補(bǔ)和Iterative Imputer填補(bǔ)算法,基于提出的缺失度概念對(duì)這5種典型的缺失值填補(bǔ)算法進(jìn)行性能比較。需要說明的是,上述5 種常見方法多應(yīng)用于數(shù)據(jù)點(diǎn)缺失度不超過60%的情況,當(dāng)缺失度過高時(shí),由于算法原理的原因,上述算法無法達(dá)到良好的填補(bǔ)效果,此時(shí)可選擇低秩逼近方法[20]。實(shí)驗(yàn)中5種缺失值填補(bǔ)方法具體介紹如下:
(1)補(bǔ)零法[27]。將檢測(cè)出的缺失數(shù)據(jù)全部填充為零。
(2)平均值填補(bǔ)[28]。將缺失數(shù)據(jù)所在維度的其他所有數(shù)據(jù)求平均,用平均值對(duì)該維度所有缺失值進(jìn)行填補(bǔ)。
(3)插值填補(bǔ)[29]。插值填補(bǔ)是基于擬合函數(shù)的一種填補(bǔ)方法,其具體思想為:根據(jù)數(shù)據(jù)集中未發(fā)生缺失的完整數(shù)據(jù)點(diǎn)求取出插值函數(shù),再對(duì)缺失值進(jìn)行預(yù)測(cè),并將預(yù)測(cè)值作為缺失值的可能填補(bǔ)值。
(4)KNN 填補(bǔ)算法[23]。KNN 填補(bǔ)算法是基于數(shù)據(jù)點(diǎn)之間的相似性來達(dá)到填補(bǔ)缺失值的目的。具體步驟為:① 設(shè)定最近鄰個(gè)數(shù)K值;② 在特征空間中,根據(jù)歐氏距離判斷出與缺失值距離最近的K個(gè)相鄰數(shù)據(jù)點(diǎn);③ 依次對(duì)這K個(gè)相鄰數(shù)據(jù)點(diǎn)的類別進(jìn)行判斷,統(tǒng)計(jì)出這些相鄰點(diǎn)所屬的類別,并確定包含最多相鄰點(diǎn)的類別。④ 根據(jù)這整個(gè)類的特征利用預(yù)測(cè)模型對(duì)缺失值進(jìn)行填補(bǔ)。
(5)Iterative Imputer 填 補(bǔ) 算 法[30]。Iterative Imputer是以循環(huán)的方式實(shí)現(xiàn)建模預(yù)測(cè)缺失值的,具體步驟為:①指定一個(gè)維度作為輸出值y;② 其他剩余維度均作為輸入值x;③ 根據(jù)x和y對(duì)回歸預(yù)測(cè)模型進(jìn)行訓(xùn)練;④ 利用訓(xùn)練好的模型預(yù)測(cè)出維度y上的所有缺失值。⑤重復(fù)步驟①-④,循環(huán)更新維度作為新的輸出值y,直至完成所有維度的缺失值填補(bǔ)。
實(shí)驗(yàn)所采用的算法參數(shù)說明如下:補(bǔ)零法、平均值填補(bǔ)、插值填補(bǔ)為基于統(tǒng)計(jì)信息的填補(bǔ)方法,不存在超參數(shù)的設(shè)置。KNN填補(bǔ)算法中存在超參數(shù)“聚類個(gè)數(shù)k值”等,Iterative Imputer 填補(bǔ)算法中存在超參數(shù)“迭代次數(shù)”等。需要說明的是,實(shí)驗(yàn)?zāi)康氖菫榱藢?duì)比分析不同缺失值填補(bǔ)算法在數(shù)據(jù)集不同缺失度時(shí)的效果,而上述算法中超參數(shù)選擇的不同會(huì)同時(shí)影響該算法在不同缺失度下的填補(bǔ)效果,即超參數(shù)選擇越合理,該算法在不同缺失度下的填補(bǔ)效果越高。此外,考慮到目前研究中選擇KNN 和Iterative Imputer方法對(duì)缺失值進(jìn)行填補(bǔ)時(shí)均會(huì)優(yōu)化對(duì)應(yīng)超參數(shù),進(jìn)行實(shí)驗(yàn)時(shí)也對(duì)KNN 和Iterative Imputer方法中的超參數(shù)根據(jù)實(shí)驗(yàn)結(jié)果進(jìn)行了優(yōu)化,選擇最優(yōu)的實(shí)驗(yàn)結(jié)果對(duì)應(yīng)的超參數(shù);同時(shí)為了消除實(shí)驗(yàn)結(jié)果偶然性的影響,對(duì)含有超參數(shù)的KNN 和Iterative Imputer 方法進(jìn)行5 次實(shí)驗(yàn),對(duì)應(yīng)的實(shí)驗(yàn)結(jié)果為多次結(jié)果的平均值。綜上所述,實(shí)驗(yàn)結(jié)果具有普遍性,超參數(shù)的選擇不影響實(shí)驗(yàn)結(jié)論。
根據(jù)上述5種缺失值填補(bǔ)算法和數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),5種填補(bǔ)算法在不同缺失程度數(shù)據(jù)集上的填補(bǔ)效果如圖5所示。
圖5 5種算法在不同缺失度時(shí)的填補(bǔ)結(jié)果Fig.5 Imputation results of five algorithms at different missing degrees
圖5a為補(bǔ)零法在數(shù)據(jù)集5種缺失情況下的性能指標(biāo)分析:① 對(duì)不同缺失程度的數(shù)據(jù)集來說,RMSE指標(biāo)相差不多,表明補(bǔ)零法的預(yù)測(cè)填補(bǔ)值誤差在5 種缺失情況下效果較為接近;②F1-score指標(biāo)按照Iris20-05、Iris20-15、Iris40-15、Iris60-15、Iris60-45 的順序依次降低,表明填補(bǔ)的準(zhǔn)確度逐步下降。③ 總體來說,數(shù)據(jù)點(diǎn)缺失度越大,補(bǔ)零法對(duì)缺失值的填補(bǔ)效果越差;在數(shù)據(jù)點(diǎn)缺失度相同的情況下,數(shù)據(jù)總體缺失度越大,補(bǔ)零法效果越差。數(shù)據(jù)點(diǎn)缺失度比數(shù)據(jù)總體缺失度對(duì)補(bǔ)零法的影響大。
圖5b為平均值法在數(shù)據(jù)集5種缺失情況下的性能指標(biāo)分析:① 對(duì)不同缺失程度的數(shù)據(jù)集來說,RMSE指標(biāo)相差不多,表明平均值法的預(yù)測(cè)填補(bǔ)值誤差效果較為接近。②F1-score指標(biāo)在Iris20-05 數(shù)據(jù)集上最好,按照Iris20-15、Iris40-15 和Iris60-15 的順序略有降低。在Iris60-45 數(shù)據(jù)集上最差,表明預(yù)測(cè)的填補(bǔ)值與真實(shí)情況最不接近。③ 總體來說,數(shù)據(jù)點(diǎn)缺失度越大平均值法對(duì)缺失值的填補(bǔ)效果越差;在數(shù)據(jù)點(diǎn)缺失度相同的情況下,數(shù)據(jù)總體缺失度越小,平均值法效果越好。數(shù)據(jù)點(diǎn)缺失度比數(shù)據(jù)總體缺失度對(duì)平均值法的影響大。
圖5c為插值法在數(shù)據(jù)集5種缺失情況下的性能指標(biāo)分析:① 5 個(gè)不同缺失程度數(shù)據(jù)集的RMSE指標(biāo)都比較小,數(shù)值在0.55 左右,且相差不多。表明插值法對(duì)于這5個(gè)數(shù)據(jù)集的預(yù)測(cè)填補(bǔ)值與真實(shí)值都比較 接 近。② 按 照Iris60-15、Iris40-15、Iris60-45、Iris20-05、Iris20-15 的順序,數(shù)據(jù)集的F1-score指標(biāo)的結(jié)果值逐漸變好,表明預(yù)測(cè)填補(bǔ)值與真實(shí)情況逐漸接近。③ 比較數(shù)據(jù)點(diǎn)缺失度相同、數(shù)據(jù)總體缺失度不同 的 數(shù) 據(jù) 集 組Iris20-05 和Iris20-15、Iris60-15 和Iris60-45可知,數(shù)據(jù)點(diǎn)缺失度相同的情況下,數(shù)據(jù)總體缺失度越大,數(shù)據(jù)集的F1-score指標(biāo)值越好。因?yàn)閿?shù)據(jù)集本身分為3 類,每個(gè)類別的數(shù)據(jù)點(diǎn)之間差異性較大,若擬合出一個(gè)插值函數(shù)來形容數(shù)據(jù)集中的所有數(shù)據(jù)點(diǎn),誤差比較大。而數(shù)據(jù)總體缺失度較大的數(shù)據(jù)集Iris20-15 和Iris60-45 中,平均每個(gè)數(shù)據(jù)點(diǎn)缺失3 個(gè)屬性維度,這種情況下不同類別的數(shù)據(jù)點(diǎn)之間的差異性變小,因此插值法擬合出的函數(shù)能較好地表示整個(gè)數(shù)據(jù)集的特點(diǎn)。④ 數(shù)據(jù)集Iris20-05缺失數(shù)據(jù)點(diǎn)較少,類別之間差異性明顯;數(shù)據(jù)集Iris60-15缺失數(shù)據(jù)點(diǎn)過多,無法擬合正確函數(shù),因此插值法對(duì)這2種低數(shù)據(jù)總體缺失度的數(shù)據(jù)集填補(bǔ)效果相對(duì)不佳。⑤ 總體來說,在數(shù)據(jù)點(diǎn)缺失度相同的情況下,數(shù)據(jù)總體缺失度越大,插值法填補(bǔ)效果越好。
圖5d 為KNN 填補(bǔ)算法在數(shù)據(jù)集5 種缺失情況下的性能指標(biāo)分析:① 數(shù)據(jù)集Iris20-05、Iris40-15、Iris60-15的RMSE指標(biāo)相差不多,Iris20-15的RMSE值最差,表明KNN在Iris20-15數(shù)據(jù)集上預(yù)測(cè)填補(bǔ)值與真實(shí)值誤差最大。②F1-score指標(biāo)在Iris20-05 數(shù)據(jù)集上最好,數(shù)據(jù)集Iris60-15 其次,數(shù)據(jù)集Iris60-45 最差。③ 總體來說,在數(shù)據(jù)點(diǎn)缺失度相同的情況下,數(shù)據(jù)總體缺失度越大,KNN 對(duì)缺失值的填補(bǔ)效果越差。數(shù)據(jù)總體缺失度比數(shù)據(jù)點(diǎn)缺失度對(duì)KNN 填補(bǔ)法的影響大,這是因?yàn)镵NN算法是根據(jù)缺失點(diǎn)的最近K個(gè)數(shù)據(jù)點(diǎn)所屬的類別進(jìn)行判斷的,當(dāng)數(shù)據(jù)總體缺失度過大時(shí),每個(gè)數(shù)據(jù)點(diǎn)均有多個(gè)屬性維度發(fā)生缺失,數(shù)據(jù)點(diǎn)的特征性不明顯,KNN無法準(zhǔn)確判斷數(shù)據(jù)點(diǎn)所屬的類別,導(dǎo)致預(yù)測(cè)的填補(bǔ)值不準(zhǔn)確,誤差較大。
圖5e為Iterative Imputer填補(bǔ)算法在數(shù)據(jù)集5種缺失情況下的性能指標(biāo)。由于Iterative Imputer算法和KNN 算法的填補(bǔ)思想皆為通過統(tǒng)計(jì)未缺失數(shù)據(jù)點(diǎn)的類別來確定缺失數(shù)據(jù)點(diǎn)的特征并進(jìn)行填補(bǔ),因此這2種填補(bǔ)算法的分析結(jié)果類似。
圖6 進(jìn)一步展示了在每種缺失度的數(shù)據(jù)集上5種不同算法的填補(bǔ)效果,從而系統(tǒng)地對(duì)每種填補(bǔ)算法的性能進(jìn)行分析。
圖6 相同缺失度下不同填補(bǔ)方法結(jié)果對(duì)比Fig.6 Comparison of different imputation methods at the same missing degree
圖6a 為不同算法在20-05 缺失度上的填補(bǔ)結(jié)果。當(dāng)數(shù)據(jù)集的數(shù)據(jù)點(diǎn)缺失度為20%、數(shù)據(jù)總體缺失度為5%時(shí),補(bǔ)零法、平均值法、插值法、KNN 法、Iterative Imputer算法的缺失值填補(bǔ)效果依次變好。
圖6b 為不同算法在20-15 缺失度上的填補(bǔ)結(jié)果。當(dāng)數(shù)據(jù)集的數(shù)據(jù)點(diǎn)缺失度為20%、數(shù)據(jù)總體缺失度為15%時(shí),補(bǔ)零法的填補(bǔ)效果最差,其次為平均值法和KNN 算法,Iterative Imputer 算法較好,插值法填補(bǔ)效果最佳。
圖6c 為不同算法在40-15 缺失度上的填補(bǔ)結(jié)果。當(dāng)數(shù)據(jù)集的數(shù)據(jù)點(diǎn)缺失度為40%、數(shù)據(jù)總體缺失度為15%時(shí),補(bǔ)零法的填補(bǔ)效果最差,其次為平均值法,KNN 法的效果居中,插值法、Iterative Imputer算法的填補(bǔ)效果均比較好。
圖6d 為不同算法在60-15 缺失度上的填補(bǔ)結(jié)果。當(dāng)數(shù)據(jù)集的數(shù)據(jù)點(diǎn)缺失度為60%、數(shù)據(jù)總體缺失度為15%時(shí),補(bǔ)零法的填補(bǔ)效果最差,平均值法、插值法、KNN法、Iterative Imputer算法的依次變好。
圖6e 為不同算法在60-45 缺失度上的填補(bǔ)結(jié)果。當(dāng)數(shù)據(jù)集的數(shù)據(jù)點(diǎn)缺失度為60%、數(shù)據(jù)總體缺失度為45%時(shí),補(bǔ)零法的填補(bǔ)效果最差,其次為平均值法,KNN 算法的填補(bǔ)效果居中,Iterative Imputer算法較好,但插值法填補(bǔ)效果最佳。
由上述5 種情況分析可以得到如下結(jié)論:① 補(bǔ)零法和平均值法在各種缺失度下的填補(bǔ)效果均不好,因此僅可以在對(duì)填補(bǔ)精度要求不高時(shí)使用。②在數(shù)據(jù)總體缺失度不高的情況下,基于模型的KNN算法和Iterative Imputer 算法都能有較好的填補(bǔ)效果。KNN 和Iterative Imputer 都為基于預(yù)測(cè)模型的缺失值填補(bǔ)算法,但是Iterative Imputer 算法的性能總是優(yōu)于KNN算法,因?yàn)镮terative Imputer算法是循環(huán)更改輸入變量來訓(xùn)練缺失值預(yù)測(cè)模型,因此模型的誤差更小,填補(bǔ)效果更好。③ 在數(shù)據(jù)總體缺失度較大的情況下,即單個(gè)數(shù)據(jù)點(diǎn)缺失屬性維度較多的情況下,插值法具有最好的填補(bǔ)效果。綜上所述,該實(shí)驗(yàn)可以證明,通過對(duì)數(shù)據(jù)集缺失度進(jìn)行全面系統(tǒng)的評(píng)估可以對(duì)缺失值填補(bǔ)算法的選擇起到良好的指導(dǎo)作用。
從多維特性數(shù)據(jù)缺失值檢測(cè)和填補(bǔ)工作切入,針對(duì)傳統(tǒng)缺失值檢測(cè)方法缺少對(duì)多維特性數(shù)據(jù)缺失程度全面立體的評(píng)估以及多種缺失值填補(bǔ)方法難以選擇的問題,通過設(shè)計(jì)缺失值檢測(cè)方法,在數(shù)據(jù)點(diǎn)缺失度基礎(chǔ)上,提出數(shù)據(jù)總體缺失度和加權(quán)數(shù)據(jù)總體缺失度的概念,實(shí)現(xiàn)對(duì)數(shù)據(jù)集缺失程度的全面檢測(cè),進(jìn)而通過實(shí)驗(yàn)橫向、縱向?qū)Ρ群头治霾煌笔е堤钛a(bǔ)方法的性能。實(shí)驗(yàn)證明,補(bǔ)零法和平均值法在各種缺失度下的填補(bǔ)效果均不好,因此僅可以在對(duì)填補(bǔ)精度要求不高時(shí)使用。在數(shù)據(jù)總體缺失度不高的情況下,基于模型的KNN算法和Iterative Imputer算法都能有較好的填補(bǔ)效果,且Iterative Imputer 算法比KNN 算法性能更好。在數(shù)據(jù)總體缺失度較大的情況下,插值法具有更好的填補(bǔ)效果。綜上所述,通過對(duì)數(shù)據(jù)集缺失度進(jìn)行全面系統(tǒng)的評(píng)估可以對(duì)缺失值填補(bǔ)算法的選擇起到良好的指導(dǎo)作用。
提出的缺失值檢測(cè)和填補(bǔ)方法主要應(yīng)用于具有多維特性的數(shù)據(jù)集,不適用于以樹、鏈表等復(fù)雜數(shù)據(jù)結(jié)構(gòu)表達(dá)的數(shù)據(jù)集,今后會(huì)考慮向復(fù)雜數(shù)據(jù)結(jié)構(gòu)的缺失值檢測(cè)和填補(bǔ)領(lǐng)域開展。此外,本文目前只考慮了對(duì)離線數(shù)據(jù)進(jìn)行缺失值檢測(cè)和填補(bǔ),由于實(shí)際生產(chǎn)過程中也會(huì)有大量的實(shí)時(shí)數(shù)據(jù)產(chǎn)生,因此后續(xù)可以針對(duì)實(shí)時(shí)數(shù)據(jù)流設(shè)計(jì)相應(yīng)的缺失值檢測(cè)和填補(bǔ)方法。
作者貢獻(xiàn)聲明:
喬 非:研究工作思路與全程指導(dǎo)。
翟曉東:研究工作補(bǔ)充完善與總結(jié)。
王巧玲:初步研究工作。