關(guān) 李 晶, 何 潔 帆, 張 立 勇, 閆 曉 明
( 大連理工大學(xué) 控制科學(xué)與工程學(xué)院, 遼寧 大連 116024 )
近年來(lái),隨著計(jì)算機(jī)技術(shù)和信息技術(shù)快速發(fā)展,各行業(yè)各領(lǐng)域每天產(chǎn)生海量數(shù)據(jù),大到軍事、科技研究,小到日常生活,數(shù)據(jù)無(wú)處不在.但是現(xiàn)實(shí)世界中,數(shù)據(jù)缺失問(wèn)題非常普遍.在采集、傳輸以及存儲(chǔ)等環(huán)節(jié)可能出現(xiàn)的數(shù)據(jù)丟失,都會(huì)導(dǎo)致最終數(shù)據(jù)集的不完整.?dāng)?shù)據(jù)缺失增加了數(shù)據(jù)分析與挖掘的難度,并可能影響分析結(jié)果的準(zhǔn)確性.因此,合理填補(bǔ)缺失值是數(shù)據(jù)處理過(guò)程中非常重要的一個(gè)環(huán)節(jié).
不完整數(shù)據(jù)的處理可以分為刪除法和填補(bǔ)法兩類(lèi).刪除法,就是直接刪除含有缺失值的樣本或?qū)傩?,從而形成一個(gè)完整數(shù)據(jù)集[1].刪除法簡(jiǎn)單、易于操作,但是破壞了數(shù)據(jù)的規(guī)模,降低了可用數(shù)據(jù)的數(shù)量.填補(bǔ)法利用不完整數(shù)據(jù)集中存在的屬性值信息,通過(guò)相關(guān)的技術(shù)方法或算法為缺失值尋求一個(gè)盡可能合理的近似值填補(bǔ)其空缺.根據(jù)技術(shù)方法的差異,填補(bǔ)法常被分為基于統(tǒng)計(jì)學(xué)的填補(bǔ)方法和基于機(jī)器學(xué)習(xí)的填補(bǔ)方法[2-3].
常用的統(tǒng)計(jì)學(xué)填補(bǔ)方法有均值填補(bǔ)[4]、熱卡填補(bǔ)[5]、回歸填補(bǔ)[6]、多重填補(bǔ)[1,7-8]以及EM填補(bǔ)[9-10]等.基于機(jī)器學(xué)習(xí)的填補(bǔ)方法則是利用適當(dāng)?shù)乃惴?,?gòu)造數(shù)學(xué)模型或者模型組,從數(shù)據(jù)集已知數(shù)據(jù)中尋找樣本之間、屬性之間的關(guān)聯(lián)關(guān)系,通過(guò)模型輸出填補(bǔ)缺失值.常用的機(jī)器學(xué)習(xí)填補(bǔ)方法有KNN算法[11]、支持向量機(jī)[12-13]、神經(jīng)網(wǎng)絡(luò)[14-16]、遺傳算法[17]以及聚類(lèi)算法[18-19]等.為了追求更高的填補(bǔ)精度,也有很多學(xué)者嘗試將多種算法結(jié)合來(lái)填補(bǔ)缺失值[20].Aydilek等[21]將支持向量機(jī)、遺傳算法與FCM算法相結(jié)合應(yīng)用于缺失值填補(bǔ);Abdella等[22]采用遺傳算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)以提升模型的逼近能力,使缺失值的填補(bǔ)精度得到了提高.
目前,基于模型的填補(bǔ)方法大多采用數(shù)據(jù)集中的完整樣本來(lái)訓(xùn)練模型,或是使用預(yù)填補(bǔ)方法將不完整數(shù)據(jù)完整化后來(lái)訓(xùn)練模型.當(dāng)不完整數(shù)據(jù)缺失率較高時(shí),完整樣本訓(xùn)練方案往往會(huì)出現(xiàn)訓(xùn)練樣本不足導(dǎo)致模型精度低甚至無(wú)法建模的情況;而預(yù)填補(bǔ)方法中模型的構(gòu)建過(guò)分依賴(lài)預(yù)填補(bǔ)的結(jié)果.為此,本文從缺失值的對(duì)待與描述切入,將缺失值視作變量,使得不完整數(shù)據(jù)集中所有樣本均能參與模型訓(xùn)練.鑒于單輸出子網(wǎng)結(jié)構(gòu)簡(jiǎn)潔并具有強(qiáng)大的學(xué)習(xí)能力,逐一構(gòu)建子網(wǎng)模型挖掘單個(gè)屬性與其他屬性之間的關(guān)聯(lián)關(guān)系,進(jìn)而實(shí)現(xiàn)對(duì)缺失值的填補(bǔ).
神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)中的熱點(diǎn)方向.神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的非線(xiàn)性學(xué)習(xí)能力,可以有效發(fā)掘數(shù)據(jù)集中的隱含信息,從而降低數(shù)據(jù)集的不完備性[23].
基于神經(jīng)網(wǎng)絡(luò)的填補(bǔ)方法通常先根據(jù)缺失數(shù)據(jù)的分布,針對(duì)每種缺失屬性組合構(gòu)建模型,并基于完整樣本求解網(wǎng)絡(luò)參數(shù),挖掘數(shù)據(jù)屬性間的關(guān)聯(lián)關(guān)系,然后將不完整樣本作為模型輸入,得到的模型輸出作為缺失值的填補(bǔ)結(jié)果.上述方法在數(shù)據(jù)缺失率較高或缺失數(shù)據(jù)分布比較復(fù)雜的情況下存在一定的局限性.
本文從簡(jiǎn)化模型結(jié)構(gòu)和缺失值的對(duì)待與描述切入,利用單輸出子網(wǎng)結(jié)構(gòu)降低模型數(shù)量、提高建模效率,并引入迭代學(xué)習(xí)方案提高網(wǎng)絡(luò)訓(xùn)練集的規(guī)模以及存在屬性值信息的利用率,進(jìn)而改善神經(jīng)網(wǎng)絡(luò)對(duì)缺失數(shù)據(jù)的填補(bǔ)效果.
基于多層感知機(jī)的不完整數(shù)據(jù)填補(bǔ)方法分別為每種缺失屬性的組合建立一個(gè)網(wǎng)絡(luò),而單輸出子網(wǎng)迭代學(xué)習(xí)的方法通過(guò)簡(jiǎn)化整體網(wǎng)絡(luò)架構(gòu),解決模型數(shù)量過(guò)多導(dǎo)致的建模復(fù)雜低效問(wèn)題.
2001年,王秀坤等[24]提出了單輸出子網(wǎng)結(jié)構(gòu),并通過(guò)理論和實(shí)驗(yàn)分析表明相較于多輸出網(wǎng)絡(luò),單輸出子網(wǎng)結(jié)構(gòu)具有更強(qiáng)的學(xué)習(xí)能力.多輸出網(wǎng)絡(luò)的輸入信息通過(guò)隱含層同時(shí)作用到所有輸出神經(jīng)元,相比而言,單輸出子網(wǎng)結(jié)構(gòu)更能清晰獲得各輸入對(duì)任一輸出的作用.因此,本文采用單輸出子網(wǎng)結(jié)構(gòu)為不完整數(shù)據(jù)建立任一屬性與其他屬性間的關(guān)聯(lián)關(guān)系.
單輸出子網(wǎng)的構(gòu)造方法如圖1所示,將n維輸出的神經(jīng)網(wǎng)絡(luò)拆分成n個(gè)單輸出子網(wǎng),形成一個(gè)由n個(gè)子網(wǎng)組成的單輸出子網(wǎng)組.子網(wǎng)的輸入層、隱含層神經(jīng)元個(gè)數(shù)與多輸出網(wǎng)絡(luò)保持一致,不同之處在于子網(wǎng)僅有一個(gè)輸出層神經(jīng)元,子網(wǎng)的輸出與各輸入單獨(dú)通過(guò)連接權(quán)重相互關(guān)聯(lián).
圖1 單輸出子網(wǎng)結(jié)構(gòu)Fig.1 The structure of single output sub-network
神經(jīng)網(wǎng)絡(luò)的參數(shù)訓(xùn)練如下:
(1)
(2)
其中Ep表示網(wǎng)絡(luò)第p個(gè)輸出的誤差.
多輸出神經(jīng)網(wǎng)絡(luò)在滿(mǎn)足式(2)時(shí)停止訓(xùn)練,盡管各個(gè)輸出誤差對(duì)權(quán)重偏導(dǎo)數(shù)之和為0,但無(wú)法確保每一個(gè)偏導(dǎo)項(xiàng)均為0.而單輸出子網(wǎng)組中的每一個(gè)子網(wǎng)都使用梯度下降法單獨(dú)進(jìn)行訓(xùn)練,需滿(mǎn)足式(3)所示的所有目標(biāo)才能停止訓(xùn)練:
(3)
因此,從誤差函數(shù)取極值的角度,單輸出子網(wǎng)組的必要條件比多輸出神經(jīng)網(wǎng)絡(luò)更加充分,與多輸出神經(jīng)網(wǎng)絡(luò)相比,單輸出子網(wǎng)組應(yīng)具有更強(qiáng)的學(xué)習(xí)能力.
依次以不完整數(shù)據(jù)集每一個(gè)存在缺失值的屬性作為輸出、其他屬性作為輸入,來(lái)構(gòu)建單輸出子網(wǎng)組模型,其中每個(gè)子網(wǎng)用來(lái)擬合相應(yīng)輸出屬性與其他屬性之間的關(guān)聯(lián)關(guān)系.最終需要構(gòu)造的子網(wǎng)個(gè)數(shù)不會(huì)超過(guò)數(shù)據(jù)集的屬性個(gè)數(shù).
在單輸出子網(wǎng)組模型的基礎(chǔ)上,針對(duì)模型輸入的不完整性,從缺失值的對(duì)待和描述切入,提出一種基于單輸出子網(wǎng)迭代學(xué)習(xí)的不完整數(shù)據(jù)建模及填補(bǔ)方法.在單輸出子網(wǎng)組訓(xùn)練過(guò)程中,將缺失值當(dāng)作系統(tǒng)級(jí)變量,網(wǎng)絡(luò)參數(shù)與缺失值變量交替更新,即缺失值變量根據(jù)每次迭代時(shí)與之對(duì)應(yīng)的子網(wǎng)模型輸出進(jìn)行動(dòng)態(tài)更新.隨著迭代學(xué)習(xí)的深入,缺失值的填補(bǔ)與模型參數(shù)的訓(xùn)練相互作用、協(xié)同提升,當(dāng)模型訓(xùn)練結(jié)束時(shí)隨之完成對(duì)缺失值的填補(bǔ).基于迭代學(xué)習(xí)的填補(bǔ)方法使數(shù)據(jù)集中的所有完整和不完整樣本都能參與模型訓(xùn)練,不僅增加了訓(xùn)練樣本的數(shù)量、提高了存在屬性值信息的利用率,還能有效解決由于缺失值的存在導(dǎo)致模型輸入不完整問(wèn)題.
設(shè)不完整數(shù)據(jù)集X的樣本個(gè)數(shù)為n,屬性個(gè)數(shù)為m,令XM表示所有缺失值構(gòu)成的集合,基于單輸出子網(wǎng)迭代學(xué)習(xí)的屬性關(guān)聯(lián)建模和缺失值填補(bǔ)流程如下:
(2)更新后的數(shù)據(jù)集的所有樣本參與第i個(gè)子網(wǎng)的訓(xùn)練,使用隨機(jī)梯度下降法更新網(wǎng)絡(luò)參數(shù).
(3)利用上一步子網(wǎng)i訓(xùn)練后的輸出填補(bǔ)第i維屬性上的缺失值,更新數(shù)據(jù)集,令i=i+1.
從機(jī)器學(xué)習(xí)數(shù)據(jù)庫(kù)UCI中選取如表1所示的6個(gè)數(shù)據(jù)集,在完整數(shù)據(jù)集的基礎(chǔ)上通過(guò)人工缺失來(lái)驗(yàn)證所提方法的填補(bǔ)效果.將缺失率θ分別設(shè)為0.05、0.10、0.15、0.20、0.25、0.30,按照給定缺失率隨機(jī)去除屬性值,從而得到不完整數(shù)據(jù)集.
表1 實(shí)驗(yàn)數(shù)據(jù)集Tab.1 Experimental datasets
以平均絕對(duì)百分比誤差Emap作為衡量填補(bǔ)精度的性能指標(biāo),如下:
(4)
為研究不同網(wǎng)絡(luò)結(jié)構(gòu)和模型訓(xùn)練方案對(duì)不完整數(shù)據(jù)填補(bǔ)效果的影響,本文開(kāi)展4種不同神經(jīng)網(wǎng)絡(luò)填補(bǔ)方法的對(duì)比實(shí)驗(yàn),具體如下:
(1)單輸出子網(wǎng)填補(bǔ)方法(SONN).該方法由建模和填補(bǔ)兩階段組成.建模階段,將各屬性依次作為輸出,其他屬性作為輸入,建立m個(gè)子網(wǎng),基于完整樣本求解子網(wǎng)模型參數(shù).填補(bǔ)階段,將不完整樣本根據(jù)缺失情況輸入對(duì)應(yīng)的子網(wǎng)模型,利用模型輸出填補(bǔ)缺失值.
(2)子網(wǎng)迭代學(xué)習(xí)填補(bǔ)方法(SONN+IL).構(gòu)造m個(gè)單輸出子網(wǎng)模型,利用均值填補(bǔ)初始化缺失值,讓所有樣本參與子網(wǎng)訓(xùn)練.子網(wǎng)訓(xùn)練和填補(bǔ)流程在2.2節(jié)中已有具體描述,將缺失值視為系統(tǒng)級(jí)變量,使其在迭代過(guò)程中動(dòng)態(tài)更新,子網(wǎng)模型訓(xùn)練結(jié)束的同時(shí)完成對(duì)缺失值的填補(bǔ).
(3)自編碼器填補(bǔ)方法(AE).該方法也由建模和填補(bǔ)兩階段組成.建模階段,構(gòu)造一個(gè)輸入節(jié)點(diǎn)和輸出節(jié)點(diǎn)個(gè)數(shù)均為m的自編碼器模型,并基于完整樣本訓(xùn)練網(wǎng)絡(luò).填補(bǔ)階段,將不完整樣本輸入模型,以模型對(duì)應(yīng)輸出填補(bǔ)缺失值.
(4)自編碼器迭代學(xué)習(xí)填補(bǔ)方法(AE+IL).首先采用均值填補(bǔ)初始化缺失值,讓所有樣本參與自編碼器的訓(xùn)練,其中缺失值作為變量隨著訓(xùn)練動(dòng)態(tài)更新.
訓(xùn)練算法選用隨機(jī)梯度下降法.在實(shí)驗(yàn)中,對(duì)于學(xué)習(xí)率、動(dòng)量因子、隱含層個(gè)數(shù)、隱含層神經(jīng)元個(gè)數(shù)等超參數(shù),選取驗(yàn)證集重構(gòu)誤差最小的超參數(shù)組合.
針對(duì)實(shí)驗(yàn)數(shù)據(jù)集,在每個(gè)缺失率下隨機(jī)生成5個(gè)不同的不完整數(shù)據(jù)集,分別開(kāi)展實(shí)驗(yàn),取5次實(shí)驗(yàn)的Emap平均值,結(jié)果如圖2~7所示.
圖2 不完整Iris數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.2 The experimental results on incomplete Iris datasets
圖3 不完整Seed數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.3 The experimental results on incomplete Seed datasets
對(duì)于Wine數(shù)據(jù)集,缺失率為0.30時(shí)隨機(jī)生成的不完整數(shù)據(jù)集中幾乎無(wú)完整樣本,AE和SONN方法無(wú)法實(shí)施.
由圖2~7可知,除Wine數(shù)據(jù)集在缺失率為0.05的情況外,最優(yōu)填補(bǔ)結(jié)果都來(lái)源于本文提出的SONN+IL填補(bǔ)方法,表明了單輸出子網(wǎng)迭代學(xué)習(xí)在填補(bǔ)性能方面的優(yōu)越性.
圖4 不完整Blood數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.4 The experimental results on incomplete Blood datasets
圖5 不完整Wine數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.5 The experimental results on incomplete Wine datasets
圖6 不完整Glass數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.6 The experimental results on incomplete Glass datasets
圖7 不完整Abalone數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果Fig.7 The experimental results on incomplete Abalone datasets
(1)網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比
比較SONN和AE的填補(bǔ)結(jié)果可見(jiàn),除Seed和Wine數(shù)據(jù)集外,在其他4個(gè)數(shù)據(jù)集上都是SONN方法的填補(bǔ)誤差較小.對(duì)比SONN+IL和AE+IL兩種方法的實(shí)驗(yàn)結(jié)果,前者的Emap更?。f(shuō)明相比于自編碼器,單輸出子網(wǎng)通常能更精確地?cái)M合不完整數(shù)據(jù)屬性間的關(guān)聯(lián)關(guān)系.單輸出子網(wǎng)依次擬合某一屬性與其他屬性之間的關(guān)聯(lián)關(guān)系,而自編碼器一次性構(gòu)建所有屬性之間的相互關(guān)系,子網(wǎng)組模型更具針對(duì)性.另外,自編碼器具有高度自跟蹤特性,填補(bǔ)效果容易受到預(yù)填補(bǔ)結(jié)果的影響.
(2)訓(xùn)練方案對(duì)比
比較SONN和SONN+IL的填補(bǔ)結(jié)果可見(jiàn),除Wine數(shù)據(jù)集在缺失率為0.05的情況外,使用迭代學(xué)習(xí)訓(xùn)練方案的填補(bǔ)方法在各不完整數(shù)據(jù)集上都取得了小的填補(bǔ)誤差;對(duì)比AE和AE+IL的填補(bǔ)結(jié)果,除Seed和Abalone數(shù)據(jù)集外,AE+IL的填補(bǔ)誤差都小于AE.上述結(jié)果表明了迭代學(xué)習(xí)訓(xùn)練方案的優(yōu)越性.迭代學(xué)習(xí)訓(xùn)練方案將缺失值作為變量,能使不完整樣本也參與網(wǎng)絡(luò)訓(xùn)練,通過(guò)增加訓(xùn)練樣本數(shù)量提高模型擬合精度;另一方面,缺失值在迭代過(guò)程中動(dòng)態(tài)優(yōu)化,從而能降低預(yù)填補(bǔ)對(duì)建模所產(chǎn)生的影響.
本文提出了一種基于單輸出子網(wǎng)迭代學(xué)習(xí)的不完整數(shù)據(jù)缺失值填補(bǔ)方法.采用單輸出子網(wǎng)結(jié)構(gòu)刻畫(huà)不完整數(shù)據(jù)復(fù)雜的屬性關(guān)聯(lián)關(guān)系,并將缺失值視作系統(tǒng)級(jí)變量,采用迭代學(xué)習(xí)的訓(xùn)練方案,使缺失值與網(wǎng)絡(luò)參數(shù)協(xié)同訓(xùn)練,這樣,在解決由于缺失值的存在所導(dǎo)致的模型輸入不完整問(wèn)題的同時(shí),還能使存在缺失值的不完整樣本也參與模型訓(xùn)練,信息充分、客觀(guān)的利用提高了神經(jīng)網(wǎng)絡(luò)的擬合精度和模型的填補(bǔ)性能.