李 國 袁 聞 王懷超
(中國民航大學(xué)計算機科學(xué)與技術(shù)學(xué)院 天津 300300)(中國民航大學(xué)中國民航信息技術(shù)科研基地 天津 300300)
隨著大數(shù)據(jù)與人工智能的發(fā)展,傳統(tǒng)的CRM系統(tǒng)融合了數(shù)據(jù)存儲、數(shù)據(jù)可視化分析、數(shù)據(jù)挖掘、商務(wù)智能等多種信息技術(shù),各航空公司形成各種聯(lián)盟(例如天合聯(lián)盟、星空聯(lián)盟),屬于該聯(lián)盟的會員旅客搭乘他們聯(lián)盟下任何一家航空公司的航班均能獲得相應(yīng)會員積分登記。他們所維護的CRM系統(tǒng)也存儲著海量的運營業(yè)務(wù)數(shù)據(jù),尤其是針對本航空公司的會員旅客數(shù)據(jù),其主要從PNR數(shù)據(jù)、票務(wù)數(shù)據(jù)、航班數(shù)據(jù)、旅客信息數(shù)據(jù)等多種數(shù)據(jù)源經(jīng)過ETL加工形成,是航空公司重點進行商務(wù)分析、數(shù)據(jù)挖掘的數(shù)據(jù)。通過對此類數(shù)據(jù)分析,有助于航空公司的會員旅客進行用戶畫像,進而施行精準營銷,提供個性化服務(wù),提高旅客對航空公司的忠誠度[1-3]。然而在現(xiàn)實生產(chǎn)環(huán)境中,因各業(yè)務(wù)數(shù)據(jù)系統(tǒng)互相通信時,由于網(wǎng)絡(luò)帶寬、延時等問題往往會造成數(shù)據(jù)記錄部分屬性缺失,而對每條缺失的記錄向上游數(shù)據(jù)系統(tǒng)搜尋真實值往往要花費較大的成本,因此挑選出信息量大、缺失較為嚴重的記錄進行真實值填補,同時對含有不影響業(yè)務(wù)分析的缺失項進行模型填補是十分必要的[4]。
傳統(tǒng)的缺失數(shù)據(jù)填補方法如MIC填補法、KNN填補法、均值填補法等僅從填補值與真實值差異方面考慮缺失數(shù)據(jù)填補問題,未考慮缺失數(shù)據(jù)的填補對后續(xù)進行相關(guān)旅客分類任務(wù)的影響。本文考慮缺失數(shù)據(jù)填補與后續(xù)相關(guān)分類挖掘任務(wù)具有相關(guān)性,將兩者視為整體同時進行處理,提出基于深度主動學(xué)習(xí)的多任務(wù)網(wǎng)絡(luò)模型。同時,考慮生產(chǎn)大數(shù)據(jù)環(huán)境結(jié)合Spark計算引擎的優(yōu)勢,提出一種Spark環(huán)境下對缺失數(shù)據(jù)填補的運行機制,使得深度主動多任務(wù)網(wǎng)絡(luò)模型能在大數(shù)據(jù)環(huán)境下高效運行。
近些年來,學(xué)術(shù)界提出許多機器學(xué)習(xí)算法被用于同時學(xué)習(xí)多個任務(wù),此類方法被稱為多任務(wù)學(xué)習(xí)。多任務(wù)學(xué)習(xí)是一類同時學(xué)習(xí)多個相關(guān)任務(wù)的機器學(xué)習(xí)算法,基本思想是在學(xué)習(xí)期間利用其他相關(guān)任務(wù)中包含的信息,更好或更快地學(xué)習(xí)任務(wù)。其優(yōu)點是能同時并行學(xué)習(xí)多個任務(wù),并且通過每個任務(wù)互相學(xué)習(xí)其他任務(wù)所附加的額外信息,能快速提升自身任務(wù)的學(xué)習(xí)性能[5-6]。主動學(xué)習(xí)有時也稱為查詢學(xué)習(xí),是機器學(xué)習(xí)與人工智能領(lǐng)域的子分支。其關(guān)鍵點在于如何選取較少、高價值的數(shù)據(jù)進行標記用于訓(xùn)練模型,使得模型獲得更高的精度。一般的監(jiān)督學(xué)習(xí)系統(tǒng)要獲得更好的性能需要收集海量帶有標簽的數(shù)據(jù)用于訓(xùn)練[7]。
多任務(wù)主動學(xué)習(xí)將多任務(wù)學(xué)習(xí)與主動學(xué)習(xí)兩者優(yōu)勢相結(jié)合。每個任務(wù)在訓(xùn)練集中具有少量標記數(shù)據(jù)和大量未標記數(shù)據(jù)。每個任務(wù)都選擇信息豐富的未標記數(shù)據(jù)以查詢的方式來主動獲取其標簽。
自編碼器是一種無監(jiān)督學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),由編碼器和解碼器兩部分構(gòu)成。編碼器通過隱藏層將輸入樣本數(shù)據(jù)進行降維或升維,從而起到數(shù)據(jù)編碼的作用。解碼器將編碼器輸出的樣本再次通過隱藏層恢復(fù)到原來輸入編碼器時的維度,從而起到數(shù)據(jù)解碼的作用。降噪自動編碼器[7]是在自動編碼器的基礎(chǔ)上為防止模型過擬合問題從而對數(shù)據(jù)樣本加入噪聲。其基本結(jié)構(gòu)如圖1所示。
圖1 降噪自編碼器
編碼過程為:
(1)
解碼過程為:
(2)
損失函數(shù)為:
(3)
網(wǎng)絡(luò)的參數(shù)為:
W={a,a′,b,b′}
式中:a表示編碼器網(wǎng)絡(luò)權(quán)重;b表示編碼器網(wǎng)絡(luò)偏置;a′表示解碼器網(wǎng)絡(luò)權(quán)重;b′表示解碼器網(wǎng)絡(luò)偏置。
SMOTE(Synthetic Minority Oversampling Technique)算法由Chawla等[8]于2002年提出,主要用于解決數(shù)據(jù)類別不平衡問題。不同于隨機過采樣法簡單對少數(shù)類進行復(fù)制采樣,SMOTE算法采用K近鄰的思想,通過式(4)在少數(shù)類樣本鄰域間生成新的少數(shù)類樣本,從而真正緩解了數(shù)據(jù)集類別不平衡,避免模型重復(fù)學(xué)習(xí)相同少數(shù)類樣本造成過擬合的問題[9]。
(4)
Spark于2009在UC Berkeley AMP lab誕生,是一種基于內(nèi)存的大數(shù)據(jù)并行計算框架。它與Hadoop的MapReduce大數(shù)據(jù)計算方式不同,Spark充分利用內(nèi)存優(yōu)勢將數(shù)據(jù)集抽象為分布式彈性數(shù)據(jù)集RDD(Resident Distributed Data-set),整個數(shù)據(jù)處理過程將中間結(jié)果盡量緩存至內(nèi)存中,不必像Hadoop需要將中間計算結(jié)果寫回至HDFS文件系統(tǒng)中,從而節(jié)省大量數(shù)據(jù)處理時間[9-10]。
本文主要利用Spark對缺失數(shù)據(jù)填補實現(xiàn)并行化處理。通過Spark將數(shù)據(jù)從HDFS文件系統(tǒng)并行讀取后,再利用廣播算子(Broadcast)將在本地環(huán)境用小量數(shù)據(jù)集已訓(xùn)練的初始網(wǎng)絡(luò)模型廣播到各工作節(jié)點上。之后各工作節(jié)點利用讀取后的數(shù)據(jù)對模型進行參數(shù)迭代更新,并在每輪訓(xùn)練結(jié)束時保留各工作節(jié)點模型在驗證集的性能。當(dāng)模型的平均性能達到閾值時,訓(xùn)練模型即結(jié)束。
結(jié)合多任務(wù)學(xué)習(xí)與降噪自編碼器的優(yōu)勢,設(shè)計出一種基于降噪自編碼器的多任務(wù)學(xué)習(xí)網(wǎng)絡(luò)模型,網(wǎng)絡(luò)同時訓(xùn)練缺失數(shù)據(jù)填補和類別預(yù)測兩大任務(wù)。通過共享參數(shù)層兩個任務(wù)之間進行相互學(xué)習(xí)從而達到整體提高的效果,模型對缺失數(shù)據(jù)精確填補有利于提高類別預(yù)測的性能,而類別預(yù)測任務(wù)的有效監(jiān)督使得缺失數(shù)據(jù)的填補以解決民航常旅客價值分類為向?qū)?。對于缺失?shù)據(jù)填補任務(wù)采用均方差損失函數(shù),對于類別預(yù)測任務(wù)采用交叉熵損失函數(shù),并通過一定的任務(wù)權(quán)重系數(shù)聯(lián)合訓(xùn)練整體網(wǎng)絡(luò)。網(wǎng)絡(luò)架構(gòu)如圖2所示。
圖2 多任務(wù)降噪自編碼器網(wǎng)絡(luò)架構(gòu)
圖2中提出的架構(gòu)由三部分組成:編碼器、解碼器、分類器。編碼器與解碼器構(gòu)成堆疊降噪自編碼器。參考文獻[11]的架構(gòu),輸出1層采用Sigmoid激活函數(shù),輸出經(jīng)過解碼后的樣本特征,輸出2層采用Softmax激活函數(shù)輸出樣本對應(yīng)各類別的概率值,中間隱藏層采用tanh激活函數(shù)。區(qū)別于傳統(tǒng)自動編碼器架構(gòu),受Kernal SVM啟發(fā)本文采用的架構(gòu)在編碼階段與輸入層相比,連續(xù)隱藏層中的單元數(shù)更多,試圖將輸入數(shù)據(jù)映射到更高維子空間,將數(shù)據(jù)擴充有助于增加數(shù)據(jù)可分性以及增強數(shù)據(jù)恢復(fù)能力。從初始Xn維輸入開始,然后在每個連續(xù)的隱藏層添加a個節(jié)點,將維度增加a維。經(jīng)過一些測試實驗,本文采用a=8能獲得穩(wěn)定較好的結(jié)果。
在模型輸入階段,將輸入數(shù)據(jù)進行歸一化處理,使得數(shù)據(jù)數(shù)值在0和1之間,以加快模型在中小樣本量時收斂,同時引入噪聲,在輸入層隨機將輸入Xn中的一半分量設(shè)置為0,使得網(wǎng)絡(luò)能提取到更加抽象的特征,增強網(wǎng)絡(luò)魯棒性。因此,在模型啟動訓(xùn)練階段,隨機將輸入部分分量設(shè)置為零,從而模擬完整樣本缺失,迫使模型學(xué)會在樣本損壞情況下恢復(fù)到樣本原始構(gòu)造,即學(xué)習(xí)將缺失值恢復(fù)到原值的能力。對于降噪自編碼器部分,因為由多個隱藏層構(gòu)成,因此采用逐層貪婪方式先對編碼器和解碼器網(wǎng)絡(luò)進行預(yù)訓(xùn)練,最后配合分類器對整個模型參數(shù)進行微調(diào)。由于在初始化時需要完整的數(shù)據(jù),因此在不完整樣本輸入前,對于缺失的連續(xù)變量使用相應(yīng)的列平均值進行初始填補,對于缺失的分類變量使用屬性中出現(xiàn)最多的值作為初始填補。
在網(wǎng)絡(luò)中的分類器有兩大作用:(1) 用于民航常旅客價值分類任務(wù)以監(jiān)督缺失數(shù)據(jù)填補任務(wù),使得缺失數(shù)據(jù)的填補以解決民航旅客分類任務(wù)為向?qū)А?2) 作為主動學(xué)習(xí)的樣本查詢函數(shù),將未標注含缺失項的樣本通過網(wǎng)絡(luò)模型輸出各類別的概率,采用不確定度準則通過計算樣本不確定度,選擇不確定度高的樣本用于主動類別標記與缺失數(shù)據(jù)填補。原因在于,不確定度可反映模型對此樣本的分類能力,不確定度較高則說明當(dāng)前模型對此樣本分類能力差,而缺失數(shù)據(jù)的填補與分類任務(wù)有較大的相關(guān)性,因此基于面向民航旅客分類的缺失數(shù)據(jù)填補的角度,可將樣本挑選出主動進行類別標注與缺失數(shù)據(jù)填補用于下一輪模型訓(xùn)練,以提升網(wǎng)絡(luò)模型的整體性能。
將未標注數(shù)據(jù)集通過分類器輸出每個樣本的不確定度進行主動填補缺失值和類別標注[12-13],訓(xùn)練過程如下:
2) 逐層無監(jiān)督訓(xùn)練編碼器網(wǎng)絡(luò)與解碼器網(wǎng)絡(luò)。
3) 引入分類器網(wǎng)絡(luò),計算聯(lián)合損失對整體網(wǎng)絡(luò)進行微調(diào),得到初始網(wǎng)絡(luò)模型。
4) While(模型在驗證集V上的性能指標未到達閾值α且未標記缺失數(shù)據(jù)集U不為空)
(2) 挑選大于不確定度閾值γ的未標記樣本進行人工專家標記與填補。
(3) 若所有樣本小于閾值γ,則對未標記樣本的不確定度進行降序排序,挑選排名占前5%的未標記含缺失數(shù)據(jù)樣本進行人工專家標記與填補。
(4) 將經(jīng)過人工專家標記與填補的樣本從U中移除,并放入L中。
(5) 采用SMOTE算法對L進行類別平衡化處理得到新樣本集L*。
(6) 利用新樣本集L*對整體網(wǎng)絡(luò)模型進行參數(shù)更新。
(7) 將驗證集V輸入整體網(wǎng)絡(luò)模型,并輸出性能指標。
5) End While
整體模型以不確定度作為主動學(xué)習(xí)查詢準則,并根據(jù)最小錯誤準則,以驗證集的模型性能作為主動學(xué)習(xí)的停止準則,有效地將高價值且缺失嚴重的未標記樣本選出,并使用溯源法對訓(xùn)練模型的缺失數(shù)據(jù)進行真實填補,進而提高模型整體性能。在每輪主動查詢標記后,通過SMOTE算法能有效緩解每次主動學(xué)習(xí)后新增已標記樣本導(dǎo)致數(shù)據(jù)集類別不平衡進而影響MLT-AL-DAE網(wǎng)絡(luò)模型的分類精度。
考慮生產(chǎn)大數(shù)據(jù)環(huán)境,結(jié)合Spark在處理大數(shù)據(jù)上的優(yōu)勢,以及主動學(xué)習(xí)能有效對缺失數(shù)據(jù)進行篩選,降低進行人工溯源真實填補的成本,提出一種基于Spark的缺失數(shù)據(jù)主動填補機制。主要由以下步驟構(gòu)成:
步驟1對輸入的民航旅客數(shù)據(jù)源進行數(shù)據(jù)完整度檢測,將輸入的數(shù)據(jù)分為完整已標注數(shù)據(jù)集Label Set和不完整或未標注數(shù)據(jù)unLabel Set。
步驟2對Label Set模擬隨機完全缺失后進行MLT-AL-DAE網(wǎng)絡(luò)模型初始預(yù)訓(xùn)練。
步驟3對unLabel Set將其收集后上傳至HDFS文件系統(tǒng)中,用于后續(xù)主動學(xué)習(xí)。
步驟4采用Spark讀取HDFS上的unLabel Set和已預(yù)訓(xùn)練的MLT-AL-DAE網(wǎng)絡(luò)模型并進行主動學(xué)習(xí)。
步驟5引入人工專家對經(jīng)過主動學(xué)習(xí)挑選出來的數(shù)據(jù)記錄從unlabel Set中移除并進行類別標注和缺失數(shù)據(jù)填補。
步驟6將經(jīng)過類別標注和缺失數(shù)據(jù)填補的數(shù)據(jù)合并至Label Set中,并從unLabel Set中刪除。
步驟7檢測MLT-AL-DAE網(wǎng)絡(luò)模型在驗證集中是否達到性能標準,若達到標準則停止主動學(xué)習(xí)訓(xùn)練后續(xù)unLabel Set中數(shù)據(jù)記錄的通過MLT-AL-DAE進行缺失數(shù)據(jù)填補與類別標注,否則轉(zhuǎn)至步驟4對unLabel Set繼續(xù)進行主動學(xué)習(xí)。
開始對數(shù)據(jù)源進行數(shù)據(jù)質(zhì)量檢測,參照生產(chǎn)大數(shù)據(jù)環(huán)境,采用HDFS系統(tǒng)[14-15]作為數(shù)據(jù)源,將含有缺失數(shù)據(jù)且未標記數(shù)據(jù)分出并上傳至HDFS系統(tǒng)中便于后續(xù)使用Spark進行處理。針對缺失數(shù)據(jù)采用主動學(xué)習(xí)進行判斷記錄的缺失數(shù)據(jù)是否適合模型填補,若記錄的缺失數(shù)據(jù)通過模型填補的質(zhì)量較低即不確定度較高,則引入人工專家的方式采用溯源法向上游數(shù)據(jù)系統(tǒng)搜尋缺失數(shù)據(jù)的真實值進行填補,極大緩解了模型對缺失數(shù)據(jù)填補與數(shù)據(jù)真實值的差距。結(jié)合使用Spark在大數(shù)據(jù)環(huán)境下訓(xùn)練MLT-AL-DAE模型具體過程如圖3所示。
圖3 使用Spark訓(xùn)練過程
本實驗采用由中航信經(jīng)過脫敏處理后某航空公司部分常旅客運營主數(shù)據(jù)。數(shù)據(jù)集大小約為21 GB,屬性維度為44維。數(shù)據(jù)集中,其與核心業(yè)務(wù)相關(guān)的主要屬性包括三個方面:(1) 旅客基本信息:包含旅客ID、旅客性別、旅客年齡、旅客工作所在城市、旅客價值等級、首次乘機時間等。(2) 旅客值機信息:包含旅客當(dāng)前累積飛行次數(shù)、觀測窗口結(jié)束時間、旅客總飛行公里數(shù)、票價收入、平均折扣率、平均乘機時間間隔、末次飛行日期等。(3) 旅客積分信息:包含總基本積分、積分兌換次數(shù)、總精英積分、促銷積分等。實驗以旅客價值等級為數(shù)據(jù)集預(yù)測目標類別屬性,其余屬性作為數(shù)據(jù)集的特征屬性。
在刪除對模型無意義的旅客ID屬性同時,對數(shù)據(jù)集中的離散特征的標簽類別屬性如旅客性別、旅客工作所在城市等進行數(shù)值化處理。對時間點類型的屬性如入會時間、首次乘機時間等,將其與觀測窗口結(jié)束時間做減法,得到相應(yīng)時間間隔,同時根據(jù)民航旅客價值度量LRFMC模型[16]對數(shù)據(jù)進行聚類分析后對旅客記錄進行類別標注,分為高價值重要保持旅客、潛在價值重要發(fā)展旅客、重要挽留旅客、一般價值旅客、低價值旅客共5類,最后得到41維屬性。
實驗編程語言為Scala和Python,采用DeepLearning4j作為大數(shù)據(jù)環(huán)境下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架,實驗設(shè)備4核CPU、8 GB內(nèi)存、40 GB硬盤的服務(wù)器,一共四臺,其中一臺作為Master節(jié)點,另外三臺作為slave節(jié)點組成集群。其中,對于MTL-AL-DAE網(wǎng)絡(luò),使用Keras+TensorFlow框架完成搭建并完成本地初始化預(yù)訓(xùn)練,并通過DeepLearnin4j中的Keras model import模塊導(dǎo)入在本地環(huán)境由Keras+TensorFlow框架訓(xùn)練完成的初始網(wǎng)絡(luò)模型,之后使用DeepLearning4j和Spark對網(wǎng)絡(luò)模型在大數(shù)據(jù)環(huán)境下進行訓(xùn)練。
經(jīng)過多次預(yù)實驗,網(wǎng)絡(luò)采用4層架構(gòu),tanh函數(shù)作為編碼器與解碼器的激活函數(shù),Softmax函數(shù)作為分類器輸出層激活函數(shù),優(yōu)化器采用Adam優(yōu)化函數(shù)用于更新網(wǎng)絡(luò)參數(shù)。考慮到實現(xiàn)環(huán)境下高價值重要保持旅客樣本要遠低于一般價值旅客,數(shù)據(jù)集類別不平衡,因此MLT-AL-DAE模型在訓(xùn)練時,對于分類任務(wù)以F值[17]進行度量,對于缺失數(shù)據(jù)填補任務(wù)以均方根誤差RMSE度量。
數(shù)據(jù)缺失機制分為完全隨機缺失、隨機缺失、非隨機缺失[18],考慮到完全隨機缺失變量的缺失與自身和其他變量無關(guān),隨機度高且具有普適性,因此在模型性能對比實驗中,抽取68 000條未缺失數(shù)據(jù)記錄分別以0.2、0.3、0.4、0.5、0.6、0.7、0.8的缺失率模擬完全隨機缺失后,數(shù)據(jù)的缺失與數(shù)據(jù)的分布不存在規(guī)律性。之后,在本地訓(xùn)練MLT-AL-DAE網(wǎng)絡(luò)模型,同時將模型與KNN填補法、MIC填補法[19-20]、DAE填補法[21]、MEAN填補法進行對比,結(jié)果如圖4所示。
圖4 缺失數(shù)據(jù)填補性能對比
從整體上看本文方法在缺失數(shù)據(jù)填補方面一直保持較穩(wěn)定的效果。隨著缺失率不斷增大,均方根誤差與其他傳統(tǒng)方法相比較低,且差距明顯。尤其是在數(shù)據(jù)集缺失率較高的情況下,配合多任務(wù)學(xué)習(xí)能對數(shù)據(jù)進行有效填補。
缺失數(shù)據(jù)填補的最終目的是有助于后續(xù)的數(shù)據(jù)挖掘與分析。因此,度量在民航旅客價值分類中的效果也是從側(cè)面反映填補效果。在分類實驗中采用F值作為度量分類任務(wù)性能指標,并將經(jīng)過傳統(tǒng)處理填補算法的數(shù)據(jù)采用SVM模型作為填補后數(shù)據(jù)集分類預(yù)測模型,綜合結(jié)果如圖5所示。
圖5 分類補性能對比
可以看出,本文提出的MLT-AL-DAE網(wǎng)絡(luò)模型在民航旅客價值分類上取得較好的效果,隨著缺失數(shù)據(jù)集缺失率不斷加大,與常規(guī)基于MIC的簡單填補法的性能差距不斷加大。這極大體現(xiàn)出多任務(wù)學(xué)習(xí)的優(yōu)越性,通過任務(wù)之間的相關(guān)性,使得不同任務(wù)之間并行互相學(xué)習(xí),從而提升模型整體性能。
為驗證本文設(shè)計的MLT-AL-DAE模型在多任務(wù)學(xué)習(xí)上的有效性,將MLT-AL-DAE模型的輸出填補值對缺失數(shù)據(jù)進行填補后,分別采用邏輯回歸(LR)、支持向量機(SVM)、最近鄰分類器(KNN)進行旅客價值分類任務(wù),與MLT-AL-DAE模型在分類任務(wù)的輸出進行對比,實驗采用F值進行度量。實驗結(jié)果如圖6所示。
圖6 多任務(wù)學(xué)習(xí)有效性驗證實驗對比
如圖4-圖6所示,MLT-AL-DAE模型性能最優(yōu),采用SVM分類器比LR、KNN分類器性能更好,原因在于經(jīng)過SMOTE類別平衡化處理的樣本會產(chǎn)生一定的噪聲樣本,而SVM分類器將樣本映射到相應(yīng)空間找到最優(yōu)分類面的方式進行分類,對噪聲樣本不敏感,而LR、KNN分類器則對噪聲樣本較為敏感。相對于先進行缺失數(shù)據(jù)填補,再進行分類任務(wù)的傳統(tǒng)方法,MLT-AL-DAE模型通過共享降噪自編碼器特征提取層進行缺失數(shù)據(jù)填補與分類任務(wù)的方式,模型能學(xué)習(xí)到數(shù)據(jù)集各自任務(wù)中更高維、更抽象的特征,通過互相學(xué)習(xí)各自任務(wù)中的額外信息,最終各自任務(wù)互相提升,極大體現(xiàn)出多任務(wù)學(xué)習(xí)的有效性,從而達到缺失數(shù)據(jù)的填補以民航旅客流失分類任務(wù)為導(dǎo)向的效果。
為了進一步驗證主動學(xué)習(xí)的有效性,將MLT-AL-DAE模型分別進行主動學(xué)習(xí)訓(xùn)練和全數(shù)據(jù)量訓(xùn)練。以缺失率0.2、0.4、0.6為例,在主動填補中,訓(xùn)練集10 000條設(shè)為已標注訓(xùn)練集,剩余設(shè)為未標注訓(xùn)練集。同時在實驗過程中,對MLT-AL-DAE模型在主動學(xué)習(xí)停止時記錄模型訓(xùn)練時通過主動學(xué)習(xí)進行標注和缺失數(shù)據(jù)填補的樣本數(shù)量。兩種訓(xùn)練方式在缺失數(shù)據(jù)填補和旅客價值分類性能對比結(jié)果如表1-表3所示。
表1 MLT-AL-DAE與MLT-DAE缺失數(shù)據(jù)填補性能對比
表2 MLT-AL-DAE與MLT-DAE旅客價值分類性能對比
表3 主動學(xué)習(xí)停止時主動學(xué)習(xí)樣本數(shù)量
由表1和表2可以得出,全量訓(xùn)練與主動學(xué)習(xí)相比,主動學(xué)習(xí)在缺失數(shù)據(jù)填補任務(wù)中保持穩(wěn)定,在旅客價值分類任務(wù)中有一定的提升。由表3可知,隨著數(shù)據(jù)集的缺失率不斷提升,主動學(xué)習(xí)為達到相應(yīng)停止準則需要的標記樣本數(shù)也不斷提升。在通過分類器網(wǎng)絡(luò)模塊輸出的不確定度,模型能有效挑選出具有高價值、信息量大的樣本進行人工專家標記與填補,進一步提升了訓(xùn)練集的數(shù)據(jù)質(zhì)量,從而進一步減少模型進行缺失數(shù)據(jù)填補與分類任務(wù)所帶來的誤差,使得模型能提前到達模型最優(yōu)值同時所需訓(xùn)練樣本數(shù)量減少,在實際生產(chǎn)環(huán)境中有助于識別缺失數(shù)據(jù)較為嚴重的數(shù)據(jù)記錄降低數(shù)據(jù)標注與填補成本。
為驗證基于Spark主動填補機制在大數(shù)據(jù)環(huán)境下的優(yōu)勢,將初始訓(xùn)練好的網(wǎng)絡(luò)模型上傳至HDFS文件系統(tǒng)中,同時以缺失率0.4分別對1 GB、5 GB、10 GB、15 GB大小的數(shù)據(jù)模擬完全隨機缺失,最后分別采用在Spark集群和單機進行缺失數(shù)據(jù)主動填補并統(tǒng)計模型訓(xùn)練耗時,統(tǒng)計結(jié)果如圖7所示。
圖7 耗時對比統(tǒng)計
可以看出,當(dāng)數(shù)據(jù)集大小為1 GB或小于1 GB時,由于Spark集群啟動初始化和對數(shù)據(jù)集和模型進行廣播以及緩存數(shù)據(jù)需要進行耗費一定的時間,同時讀寫HDFS也需要花費一定的時間,而數(shù)據(jù)量太小,集群優(yōu)勢不明顯,因此通過Spark集群訓(xùn)練模型耗時要高于單機訓(xùn)練。然而,當(dāng)數(shù)據(jù)量達到5 GB及以上時,Spark發(fā)揮集群的優(yōu)勢,快速對主動挑選出高價值、未標記樣本進行真實值標注,使模型精度能提前達到閾值,進而節(jié)省大量時間,隨著數(shù)據(jù)集數(shù)據(jù)量不斷升高,Spark集群訓(xùn)練優(yōu)勢呈現(xiàn)不斷加大趨勢。
本文針對民航常旅客服務(wù)主數(shù)據(jù)記錄存在缺失值較多且數(shù)據(jù)類別不平衡的情形,首先設(shè)計出一種基于降噪自編碼器的多任務(wù)主動學(xué)習(xí)網(wǎng)絡(luò)模型MLT-AL-DAE,同時并行解決民航常旅客服務(wù)缺失數(shù)據(jù)填補和旅客價值分類問題,并能有效識別出缺失項對旅客價值分類影響較大的記錄進行主動學(xué)習(xí)填補。其次,考慮生產(chǎn)大數(shù)據(jù)環(huán)境下,數(shù)據(jù)量大單機訓(xùn)練耗時較長的問題,引入Spark計算引擎,提出一種基于Spark環(huán)境下的缺失數(shù)據(jù)主動填補機制,使得MLT-AL-DAE模型能在大數(shù)據(jù)環(huán)境下發(fā)揮應(yīng)有的優(yōu)勢。通過對比實驗表明,相比傳統(tǒng)處理方法,本文方法模型考慮到現(xiàn)實生產(chǎn)環(huán)境,在缺失值填補和分類預(yù)測任務(wù)中有著較好的性能,在提升分類精度和數(shù)據(jù)質(zhì)量的前提下,同時能降低數(shù)據(jù)標注和缺失數(shù)據(jù)人工溯源填補的成本,因此具有較大的工程應(yīng)用價值。