馬 亮,郭力強(qiáng),劉丙杰,楊 靜
(海軍潛艇學(xué)院,山東 青島 266199)
大型裝備具有高復(fù)雜性、高耦合度、非線性等特點(diǎn),裝備性能影響因素多,關(guān)系復(fù)雜。由于大型裝備試驗(yàn)次數(shù)少,試驗(yàn)數(shù)據(jù)量有限,易導(dǎo)致測(cè)試數(shù)據(jù)易缺失,覆蓋性不高。為全面了解裝備性能影響因素,有必要對(duì)缺失數(shù)據(jù)進(jìn)行插補(bǔ)。
目前,常用的數(shù)據(jù)插補(bǔ)方法有統(tǒng)計(jì)量插補(bǔ)法和回歸預(yù)測(cè)插補(bǔ)法。隨著機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù)的興起,回歸預(yù)測(cè)插補(bǔ)法引起了廣泛的關(guān)注。文獻(xiàn)[1]針對(duì)統(tǒng)計(jì)量插補(bǔ)法效果不理想的問題,使用BP神經(jīng)網(wǎng)絡(luò)模型對(duì)研究流域降水?dāng)?shù)據(jù)進(jìn)行插補(bǔ),取得了較好的插補(bǔ)精度。但模型泛化能力弱,對(duì)樣本數(shù)量要求高。文獻(xiàn)[2]提出了聯(lián)合極大似然估計(jì)與EM算法相結(jié)合的多重插補(bǔ)方法,但是僅在缺失數(shù)據(jù)比例小于35%時(shí)得到理想結(jié)果,存在適用范圍受限的問題。文獻(xiàn)[3]提出了一種基于均值插補(bǔ)法的EM算法,并與基于線性回歸和Bootstrap的修正EM算法進(jìn)行了比較,結(jié)論認(rèn)為基于Bootstrap的修正EM算法更準(zhǔn)確。然而,EM算法在原理上需要有龐大的數(shù)據(jù)集作為支撐,以保證估計(jì)值漸近無偏并服從正態(tài)分布,否則可能會(huì)陷入局部極值。文獻(xiàn)[4]提出了基于K近鄰的插補(bǔ)方法,可應(yīng)用于連續(xù)型數(shù)據(jù)的插補(bǔ)。隨機(jī)森林的創(chuàng)始人Breiman在文獻(xiàn)[5]首次使用模型對(duì)缺失數(shù)據(jù)插補(bǔ),驗(yàn)證了隨機(jī)森林對(duì)缺失數(shù)據(jù)插補(bǔ)的可行性。文獻(xiàn)[6]分別使用極限學(xué)習(xí)機(jī)、BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)和XGBoost等機(jī)器學(xué)習(xí)模型對(duì)潛熱通量缺失數(shù)據(jù)進(jìn)行插補(bǔ),結(jié)果表明XGBoost與極限學(xué)習(xí)機(jī)的插補(bǔ)效果最佳。
國(guó)內(nèi)外對(duì)數(shù)據(jù)插補(bǔ)方法的研究表明,數(shù)據(jù)插補(bǔ)問題的本質(zhì)是一個(gè)高噪聲的多重回歸預(yù)測(cè)問題。由于大型復(fù)雜裝備試驗(yàn)具有小樣本的特點(diǎn),這就要求回歸器在小樣本上具有較好的擬合效果和泛化能力。相比于傳統(tǒng)的決策樹(decision tree)[7],支持向量機(jī)(support vector machine)[8]等對(duì)樣本數(shù)量要求高、容易過擬合的單一模型,集成學(xué)習(xí)算法會(huì)綜合多個(gè)基學(xué)習(xí)器的建模結(jié)果,以此獲取比單個(gè)模型更好的預(yù)測(cè)效果,從理論上適合應(yīng)用于解決裝備小樣本試驗(yàn)缺失數(shù)據(jù)插補(bǔ)問題。
本文以基于Bagging算法的隨機(jī)森林和Boosting算法的XGBoost為代表,分析集成學(xué)習(xí)的建模原理,探討應(yīng)用集成學(xué)習(xí)算法解決裝備小樣本試驗(yàn)數(shù)據(jù)缺失問題的有效性,并在KEEL公測(cè)數(shù)據(jù)集上對(duì)該方法進(jìn)行了推廣驗(yàn)證。
集成學(xué)習(xí)算法(ensemble learning)是通過在數(shù)據(jù)上構(gòu)建多個(gè)模型,綜合考慮所有模型的建模結(jié)果來提高預(yù)測(cè)性能的算法。由多個(gè)模型集成的模型叫做集成學(xué)習(xí)器,組成集成學(xué)習(xí)器的每個(gè)模型叫做基學(xué)習(xí)器,并要求其性能至少要超過隨機(jī)學(xué)習(xí)器[9]。由于集成學(xué)習(xí)算法在處理預(yù)測(cè)和分類問題中的出色性能,近年來成為KDDcup、Kaggle、天池等大型數(shù)據(jù)競(jìng)賽中的奪冠利器。
隨機(jī)森林是一種以決策樹模型為核心的Bagging算法,用于完善單決策樹在處理回歸和分類問題中精度不高、容易過擬合的缺陷。2001年Leo Breiman將其提出的Bagging理論與CART決策樹,以及隨機(jī)子空間方法(random subspace method)相結(jié)合,提出了一種非參數(shù)分類與回歸算法—隨機(jī)森林(random forest)[10]。
隨機(jī)森林的基本思想可歸納為:首先使用自助重抽樣(Bootstrape)的方法從數(shù)據(jù)量為N的原始樣本集D中有放回地隨機(jī)抽取生成m個(gè)與原始樣本集D同樣大小的訓(xùn)練樣本集Dm,在此基礎(chǔ)上構(gòu)建對(duì)應(yīng)的決策樹;然后在對(duì)決策樹的每一個(gè)節(jié)點(diǎn)進(jìn)行分支時(shí),從全部Z個(gè)特征中隨機(jī)抽取一個(gè)特征子集,即只選擇部分特征進(jìn)行分支,并從這些子集中選擇一個(gè)最優(yōu)分支來建立決策樹;最后將構(gòu)建的多棵決策樹作為集成學(xué)習(xí)器形成隨機(jī)森林,通過對(duì)每個(gè)基學(xué)習(xí)器的結(jié)果進(jìn)行評(píng)估或者多數(shù)表決的方法決定集成學(xué)習(xí)器的結(jié)果[11]。
圖1 隨機(jī)森林構(gòu)建單顆決策樹的流程圖
Bagging算法的核心思想是通過并行構(gòu)建多個(gè)盡可能相互獨(dú)立的基學(xué)習(xí)器,借助基學(xué)習(xí)器之間的“獨(dú)立性”來降低模型整體的方差,從而獲得比單顆決策樹更低的泛化誤差和更強(qiáng)的泛化能力。泛化誤差可理解為模型在未知數(shù)據(jù)集上預(yù)測(cè)誤差,一般可認(rèn)為由偏差、方差和噪聲構(gòu)成。其中偏差是預(yù)測(cè)值與真實(shí)值之間的差異,用于衡量模型的精度;方差是模型在不同數(shù)據(jù)集上輸出的結(jié)果的方差,用于衡量模型穩(wěn)定性;噪音是數(shù)據(jù)收集過程當(dāng)中不可避免的、與數(shù)據(jù)真實(shí)分布無關(guān)的信息。
然而,由于所有基學(xué)習(xí)器都是在相同的原始樣本集上進(jìn)行采樣訓(xùn)練,很難實(shí)現(xiàn)完全相互獨(dú)立。假設(shè)任意決策樹之間的相關(guān)系數(shù)為ρ,可將隨機(jī)森林輸出結(jié)果的方差表示為:
即單顆決策樹之間的相關(guān)性越弱,隨機(jī)森林通過降低方差提升的泛化能力越強(qiáng)。因此,為確保Bagging算法的有效性,一方面單個(gè)基學(xué)習(xí)器的誤差率至少要保證小于50%,另一方面要盡可能降低基學(xué)習(xí)器之間的相關(guān)性。
圖2 基學(xué)習(xí)器誤差率變化影響示意圖
由于隨機(jī)森林引入樣本自助重抽樣和隨機(jī)分支策略,通過樣本有放回抽樣和特征無放回抽樣樣本的方式,從樣本和特征兩個(gè)維度出發(fā),盡可能使得每顆決策樹的訓(xùn)練相互獨(dú)立。同時(shí)可以使用袋外數(shù)據(jù)(out of bag data)測(cè)試模型,有效地提升了效率;在決策樹的每個(gè)節(jié)點(diǎn)只選擇部分特征進(jìn)行分支,從而使樹的增長(zhǎng)只依賴于該部分的特征,而不是全部特征,在處理高維數(shù)據(jù)上有著出色性能[12];最終的輸出結(jié)果由多顆決策樹的輸出結(jié)果平均或投票決定,因此對(duì)數(shù)據(jù)噪聲和異常值有了較好的容忍性。
相比于與Bagging算法,Boosting的核心思想是按順序依次構(gòu)建相互關(guān)聯(lián)和影響的基學(xué)習(xí)器,通過某種集成結(jié)果輸出規(guī)則來多次提升弱學(xué)習(xí)器對(duì)樣本的預(yù)測(cè)結(jié)果,達(dá)到降低模型的整體偏差的目標(biāo),構(gòu)成性能出色的強(qiáng)學(xué)習(xí)器。假設(shè)衡量模型預(yù)測(cè)結(jié)果與真實(shí)結(jié)果的差異的損失函數(shù)為L(zhǎng)(x,y),基學(xué)習(xí)器為f(x),算法集成輸出結(jié)果為H(x),則Boosting算法的建模流程可表示為:依據(jù)上一個(gè)弱學(xué)習(xí)器f(x)t-1的結(jié)果計(jì)算損失函數(shù)L(x,y),并使用L(x,y)結(jié)果自適應(yīng)影響下一個(gè)弱學(xué)習(xí)器f(x)t的構(gòu)建。經(jīng)T次迭代后,根據(jù)某種集成輸出規(guī)則計(jì)算所有弱學(xué)習(xí)器的f(x)0~f(x)T的預(yù)測(cè)結(jié)果得到H(x)。
Boosting算法的開山代表是AdaBoost[13](adaptive boosting)算法,它的基本思想是:首先在抽取的訓(xùn)練樣本上建立一棵決策樹,根據(jù)該決策樹預(yù)測(cè)的結(jié)果f(x)t和損失函數(shù)值L(x,y),增加被預(yù)測(cè)錯(cuò)誤的樣本xi在數(shù)據(jù)集中的樣本權(quán)重wi,并讓加權(quán)后的數(shù)據(jù)集被用于訓(xùn)練下一棵決策樹,即通過調(diào)整訓(xùn)練數(shù)據(jù)的分布來間接影響后續(xù)弱學(xué)習(xí)器的構(gòu)建。
2001年Jerome Friedman提出一種全新的損失函數(shù)計(jì)算公式—弗里德曼均方誤差[14]:
impurity_decrease=
w是葉子節(jié)點(diǎn)上的樣本權(quán)重,ri=y-H(xi)是樣本xi上的殘差。即通過這種擬合殘差的方式直接影響后續(xù)弱學(xué)習(xí)器的構(gòu)建結(jié)構(gòu),并且采用調(diào)和左右葉子節(jié)點(diǎn)權(quán)重的分支規(guī)則加速了CART決策樹的預(yù)測(cè)效率,在AdaBoost的基礎(chǔ)上,形成GBDT(gradient boosting decision tree)算法。
2015年T.Q.Chen提出XGBoost[15](eXtreme gradient boosting)算法,在GDBT的基礎(chǔ)上改進(jìn)集成輸出結(jié)果的評(píng)估策略,通過對(duì)損失函數(shù)進(jìn)行二階泰勒展開和添加正則項(xiàng)的方法,有效避免了過擬合問題并加快了模型收斂速度。其輸出結(jié)果的評(píng)估策略可表示為式(1):
(1)
(2)
(3)
(4)
其中:gi表示樣本xi的一階導(dǎo)數(shù);hi表示樣本xi的二階導(dǎo)數(shù);wj表示第j個(gè)葉子節(jié)點(diǎn)的輸出值,Ij表示第j個(gè)葉子節(jié)點(diǎn)含有樣本的子集。簡(jiǎn)化式(4)中的目標(biāo)函數(shù),可定義:
(5)
觀察可得,目標(biāo)函數(shù)是一個(gè)凸函數(shù):
(6)
在式(6)中對(duì)wj求導(dǎo),令一階導(dǎo)數(shù)等于0,可求得使目標(biāo)函數(shù)達(dá)到最小值的wj,即:
(7)
式(8)可以用來評(píng)價(jià)樹模型的得分,其數(shù)值越小,樹模型的得分越高。由此可以得出用于樹模型進(jìn)行分枝的得分公式:
(8)
統(tǒng)計(jì)量插補(bǔ)法的基本思想是通過計(jì)算缺失特征的某一統(tǒng)計(jì)量,并用這個(gè)值來插補(bǔ)該特征的所有缺失數(shù)據(jù)。常用的統(tǒng)計(jì)量有平均值、中位數(shù)值和眾數(shù)值。該方法思想簡(jiǎn)單,應(yīng)用最為廣泛,可根據(jù)缺失數(shù)據(jù)類型分別處理:通常情況下,若缺失值為連續(xù)數(shù)據(jù),則使用對(duì)該特征未缺失部分樣本平均值或中位數(shù)值插補(bǔ)的方法;若缺失值為離散數(shù)據(jù),則以該特征未缺失部分樣本出現(xiàn)頻率最多的數(shù)值進(jìn)行插補(bǔ)。
回歸預(yù)測(cè)插補(bǔ)法的基本思想是通過構(gòu)建回歸模型,從數(shù)據(jù)中挖掘特征矩陣與標(biāo)簽之間的關(guān)聯(lián)規(guī)則,訓(xùn)練能夠映射特征矩陣與標(biāo)簽關(guān)系的回歸器,實(shí)現(xiàn)對(duì)缺失數(shù)據(jù)的預(yù)測(cè),并將預(yù)測(cè)結(jié)果作為插補(bǔ)結(jié)果。由于數(shù)據(jù)集的標(biāo)簽和特征是人為標(biāo)注的,因此可以通過自定義特征矩陣和標(biāo)簽,重新構(gòu)建數(shù)據(jù)子集的方式進(jìn)行回歸預(yù)測(cè)。
2.2.1 單特征值缺失情況
在樣本數(shù)量為n,特征數(shù)量為m的數(shù)據(jù)集上,假設(shè)某一特征xi存在缺失值,將存在缺失值的特征xi定義為數(shù)據(jù)集的標(biāo)簽y,其余m-1個(gè)未存在缺失值的特征和原始標(biāo)簽定義為數(shù)據(jù)集的特征矩陣X。那么,不含缺失值的樣本中既存在特征值也存在標(biāo)簽值,將其作為用于構(gòu)建回歸模型訓(xùn)練集(training set);包含缺失值的樣本中只存在特征值沒有標(biāo)簽值,將其作為用于檢測(cè)回歸模型性能的測(cè)試集(testing set),其中測(cè)試集中缺失的標(biāo)簽值即為回歸預(yù)測(cè)的對(duì)象。通過這種方式完成數(shù)據(jù)子集的重建以及訓(xùn)練集和測(cè)試集劃分。
2.2.2 多特征值缺失問題
當(dāng)數(shù)據(jù)集的多個(gè)特征值存在缺失時(shí),可采用如下方法實(shí)現(xiàn)數(shù)據(jù)子集的重建和迭代劃分:
Step1:根據(jù)缺失數(shù)據(jù)集的特點(diǎn),設(shè)定快速填充基準(zhǔn)和特征重要性評(píng)估策略??焖偬畛浠鶞?zhǔn)可使用平均值、中位值等統(tǒng)計(jì)量,以快速對(duì)缺失值較少的特征進(jìn)行插補(bǔ);特征重要性評(píng)估策略可根據(jù)特征缺失程度大小或特征對(duì)標(biāo)簽的貢獻(xiàn)度,以此確定對(duì)多個(gè)缺失特征的插補(bǔ)順序Uindex。一般來說,當(dāng)某一特征的缺失值越少,損失的信息也就越少,使用統(tǒng)計(jì)量快速插補(bǔ)的效果越好;反之特征的缺失值越多,損失的信息也就越多,使用統(tǒng)計(jì)量填充的效果越差,應(yīng)當(dāng)優(yōu)先選中進(jìn)行回歸預(yù)測(cè)。
Step2:根據(jù)多個(gè)缺失特征的插補(bǔ)排序Uindex=[U1,U2,U3,...,Ut(t≤m)],使用快速填充基準(zhǔn)對(duì)U1外的m-1特征的缺失值進(jìn)行填充,將多特征值缺失問題轉(zhuǎn)換成單特征值缺失問題,按照單特征值缺失的情況進(jìn)行數(shù)據(jù)子集的重建以及訓(xùn)練集和測(cè)試集劃分。
Step3:選擇數(shù)據(jù)預(yù)處理方式和回歸結(jié)果評(píng)估指標(biāo),采用5折交叉驗(yàn)證的方法優(yōu)化回歸模型超參數(shù)后,訓(xùn)練回歸器得到U1缺失值的預(yù)測(cè)結(jié)果,并將本輪的數(shù)據(jù)插補(bǔ)結(jié)果返回至缺失數(shù)據(jù)集相應(yīng)位置,作為下一次迭代回歸的輸入。
Step4:按照Uindex排序重復(fù)Step2~3過程,經(jīng)t次迭代回歸預(yù)測(cè)后,最終得到整個(gè)缺失數(shù)據(jù)集的插補(bǔ)結(jié)果,再根據(jù)回歸結(jié)果評(píng)估指標(biāo)對(duì)快速填充基準(zhǔn)、特征重要性評(píng)估策略及回歸器進(jìn)行改進(jìn)和提升。
潛射導(dǎo)彈因其機(jī)動(dòng)范圍廣、攻擊突然性強(qiáng),裝彈數(shù)量多、反擊威力大等特點(diǎn)備受各大軍事強(qiáng)國(guó)重視。潛射導(dǎo)彈彈射出筒經(jīng)過水介質(zhì)出水至空中再進(jìn)入預(yù)定彈道,水下飛行段和出水段是潛射導(dǎo)彈發(fā)射所獨(dú)有的過程,對(duì)發(fā)射結(jié)果影響巨大。
出筒速度是影響水下彈道姿態(tài)和發(fā)射精度的關(guān)鍵因素之一[16-17]。受眾多客觀條件影響,發(fā)射深度、海流速度、海浪高度和氣幕彈等都會(huì)對(duì)出筒速度產(chǎn)生影響[18-20]。為確保導(dǎo)彈安全可靠的發(fā)射,需根據(jù)試驗(yàn)數(shù)據(jù)的有關(guān)信息對(duì)導(dǎo)彈出筒速度的影響因素進(jìn)行分析。但是受水下發(fā)射特殊環(huán)境的影響,觀測(cè)數(shù)據(jù)易出現(xiàn)缺失,因此有必要對(duì)試驗(yàn)缺失數(shù)據(jù)進(jìn)行有效插補(bǔ)。
實(shí)驗(yàn)在Windows 10環(huán)境下進(jìn)行,使用JupyterLab 3.10 IDE和Python 3.9 Kernel,調(diào)用Scikit-Learn庫(kù)版本為1.01。CPU配置為AMD Ryzen 5-5600H,主頻3.30 GHz,內(nèi)存16 GB。
以某型潛射導(dǎo)彈發(fā)射試驗(yàn)樣本為原始數(shù)據(jù)集,以發(fā)射深度、潛艇航速、海流速度、海面波高作為原始特征,出筒速度為原始標(biāo)簽數(shù)據(jù),采用完全隨機(jī)缺失方式,缺失數(shù)據(jù)標(biāo)記為NaN值,建立缺失數(shù)據(jù)集。
初始采用平均值作為快速填充基準(zhǔn),將數(shù)據(jù)缺失程度作為特征重要性評(píng)估策略,使用Z-Score標(biāo)準(zhǔn)化的方法對(duì)特征數(shù)據(jù)進(jìn)行預(yù)處理。為反映插補(bǔ)數(shù)據(jù)對(duì)真實(shí)數(shù)據(jù)的整體擬合程度,以回歸確定系數(shù)R2(R2=SSR/SST)作為插補(bǔ)效果評(píng)估指標(biāo),用于檢驗(yàn)和提升回歸器插補(bǔ)效果。由于回歸器的泛化性能受超參數(shù)的影響較大,模型的復(fù)雜程度越高,超參數(shù)的數(shù)量越多。因此,為提高數(shù)據(jù)插補(bǔ)的效率,使用Optuna框架[21]采用TPE (tree-structured parzen estimator approach)[22]貝葉斯過程對(duì)回歸器超參數(shù)實(shí)現(xiàn)自動(dòng)優(yōu)化。數(shù)據(jù)集的重建劃分和回歸器訓(xùn)練過程部分代碼如下所示:
X_full實(shí)驗(yàn)數(shù)據(jù)集特征矩陣 y_full實(shí)驗(yàn)數(shù)據(jù)集標(biāo)簽
X_missing缺失數(shù)據(jù)集特征矩陣 y_full缺失數(shù)據(jù)集標(biāo)簽
X 重建數(shù)據(jù)集特征矩陣 y重建數(shù)據(jù)集標(biāo)簽
from sklearn.impute import SimpleImputer as SI
from sklearn.preprocessing import StandardScaler
import optuna
按照特征缺失程度進(jìn)行插補(bǔ)排序
sortindex = np.argsort(X_missing.isnull().sum(axis=0)).values
for i in sortindex:
構(gòu)建新特征矩陣
X = X_missing
X = pd.concat([X.iloc[:,X.columns!=i],y_full],axis=1)
使用統(tǒng)計(jì)量對(duì)含有缺失值的特征進(jìn)行快速填充
X = SI(missing_values=np.nan,strategy='mean').fit_transform(X)
構(gòu)造新標(biāo)簽
y = X_missing.iloc[:,i]
新標(biāo)簽真實(shí)數(shù)據(jù)
y_full = X_full.iloc[:,i]
數(shù)據(jù)預(yù)處理
scaler = StandardScaler()
X = scaler.fit_transform(X)
scaler = StandardScaler()
X = scaler.fit_transform(X)
劃分訓(xùn)練集測(cè)試集
Y_train = y_new[y_new.notnull()]
Y_test = y_full[y_new.isnull()]
X_train = X_new_mean[Y_train.index,:]
X_test = X_new_mean[Y_test.index,:]
自動(dòng)優(yōu)化回歸器超參數(shù)
best_params,best_score = optimizer_optuna(300,"TPE")
實(shí)例化回歸模型
Reg = Regressor(best_params)
訓(xùn)練回歸器
Reg = Reg.fit(X_train,Y_train)
預(yù)測(cè)缺失數(shù)據(jù)
Y_predict = Reg.predict(X_test)
將預(yù)測(cè)結(jié)果返回至缺失數(shù)據(jù)集
X_missing.loc[X_missing.iloc[:,i].isnull(),i] = Y_predict
評(píng)估數(shù)據(jù)插補(bǔ)效果
loss = criterion (X_full,X_missing)
初始設(shè)置特征矩陣缺失比例為20%,同時(shí)使用統(tǒng)計(jì)量法和回歸預(yù)測(cè)法對(duì)缺失數(shù)據(jù)進(jìn)行插補(bǔ)。為評(píng)估集成學(xué)習(xí)算法的插補(bǔ)性能,分別使用基于Bagging思想的Random Forests和Boosting思想的XGBoost兩種典型的算法作為回歸器,并使用KNN和MLP算法與之比較。統(tǒng)計(jì)量法和回歸預(yù)測(cè)法對(duì)缺失數(shù)據(jù)的插補(bǔ)結(jié)果如圖3所示。
圖3 20%缺失比例下插補(bǔ)效果評(píng)估圖
在特征矩陣缺失比例為20%的情況下,使用平均值和中位數(shù)值插補(bǔ)得到的R2結(jié)果分別為0.833和0.820;使用KNN、MLP、Random Forest和XGBoost回歸器插補(bǔ)得到的R2結(jié)果分別為0.975、0.961、0.983、0.980??梢钥闯龌貧w插補(bǔ)法的效果明顯優(yōu)于統(tǒng)計(jì)量插補(bǔ)法,其中使用集成算法構(gòu)件的回歸器性能最優(yōu)。
為進(jìn)一步檢驗(yàn)回歸預(yù)測(cè)插補(bǔ)法的適用范圍,將特征矩陣缺失比例調(diào)整為10%、15%、20%、25%、30%,分別建立缺失數(shù)據(jù)集進(jìn)行插補(bǔ)實(shí)驗(yàn),得到如表1和圖4所示的結(jié)果。
表1 不同缺失比例下的插補(bǔ)效果
圖4 不同缺失比例下的插補(bǔ)效果
由圖4可知,回歸預(yù)測(cè)插補(bǔ)法具有較好的適用性,在不同缺失比例下,均能保持較好的數(shù)據(jù)插補(bǔ)效果。隨著數(shù)據(jù)缺失比例的增大,統(tǒng)計(jì)量插補(bǔ)法的效果越差,回歸插補(bǔ)法的優(yōu)勢(shì)體現(xiàn)的越明顯,其中,使用集成算法的回歸器在25%、25%和30%等高缺失比例下,R2結(jié)果均能保持在0.95以上,驗(yàn)證了該方法的可靠性,可應(yīng)用于裝備小樣本試驗(yàn)缺失數(shù)據(jù)插補(bǔ)。
除了裝備小樣本試驗(yàn),插補(bǔ)缺失數(shù)據(jù)是數(shù)據(jù)分析和處理工作中必不可少的一環(huán),有必要驗(yàn)證該方法的通用性和推廣價(jià)值。因此,使用KEEL公測(cè)數(shù)據(jù)集“dee”和“wizmir”進(jìn)行上述數(shù)據(jù)插補(bǔ)實(shí)驗(yàn)。其中“dee”數(shù)據(jù)集的樣本數(shù)量為365,特征數(shù)量為6;“wizmir”數(shù)據(jù)集的樣本數(shù)量為1461,特征數(shù)量為6。得到的插補(bǔ)結(jié)果如表2所示。
表2 KEEL公測(cè)數(shù)據(jù)集下的插補(bǔ)效果
由表2可知,該方法在公測(cè)數(shù)據(jù)集上具有通用性,在10%和20%缺失比例下,R2結(jié)果仍能保持在0.92以上。但是回歸預(yù)測(cè)插補(bǔ)法在回歸器的構(gòu)建、超參數(shù)優(yōu)化以及模型性能評(píng)估上需要投入大量的時(shí)間成本和計(jì)算代價(jià)。綜合衡量,統(tǒng)計(jì)量插補(bǔ)法適合在樣本數(shù)量大、缺失特征數(shù)目少、整體數(shù)據(jù)缺失比例較低(<10%)的數(shù)據(jù)集;而回歸預(yù)測(cè)插補(bǔ)法更適合用于缺失比例較高、特征相關(guān)性顯著的數(shù)據(jù)集。
針對(duì)裝備小樣本試驗(yàn)次數(shù)少,測(cè)試數(shù)據(jù)易缺失的特點(diǎn)和常用數(shù)據(jù)插補(bǔ)方法對(duì)數(shù)據(jù)量要求高、計(jì)算復(fù)雜的問題,本文提出了一種基于集成學(xué)習(xí)的數(shù)據(jù)插補(bǔ)方法。驗(yàn)證結(jié)果表明,該方法明顯優(yōu)于統(tǒng)計(jì)量插補(bǔ)法,模型的數(shù)據(jù)擬合能力和泛化能力較強(qiáng),在不同缺失比例下均有較好表現(xiàn),能偶有效解決裝備小樣本試驗(yàn)數(shù)據(jù)缺失問題,同時(shí)具有一定的推廣價(jià)值和通用性。為進(jìn)一步提高缺失數(shù)據(jù)的插補(bǔ)效果,下一步將結(jié)合時(shí)序數(shù)據(jù)的預(yù)測(cè)處理方法,進(jìn)一步優(yōu)化缺失數(shù)據(jù)插補(bǔ)效果。