李 國,袁 聞+,王懷超
(1.中國民航大學 計算機科學與技術學院,天津 300300;2.中國民航大學 中國民航信息技術科研基地,天津 300300)
中國民航旅客信息服務主要由中國民航信息股份有限公司的新一代旅客服務信息系統(tǒng)提供,其由21個相對獨立的子系統(tǒng)組成,在航班信息查詢、航班預定、出票、航班離港、費用結算、旅客畫像等核心業(yè)務中承擔主要工作。由于各系統(tǒng)之間標準數(shù)據(jù)結構定義不同,存取方式不同,系統(tǒng)之間通信方式差異等多方面原因,從而造成數(shù)據(jù)缺失、數(shù)據(jù)冗余、數(shù)據(jù)不一致等數(shù)據(jù)質量問題,從而影響到后續(xù)旅客流失預測分析及其它方面的應用,對航空公司收益造成巨大的損失[1-3]。
本文所研究的問題為基于民航旅客服務信息數(shù)據(jù)不完備且類別不平衡的情況下,對旅客進行流失預測。傳統(tǒng)的方法將此問題分開串行處理,先將數(shù)據(jù)集缺失數(shù)據(jù)使用基于統(tǒng)計的方法或基于機器學習的方法進行填補,再將填補后完整的數(shù)據(jù)集進行旅客流失預測模型構建,因沒有關注任務之間的相關性,導致當數(shù)據(jù)集屬性維度較多,且缺失率較高時,填補后的數(shù)值與真實值差異較大,從而影響預測任務精確性。
針對上述問題,本文考慮到兩個任務之間的相關性,提出以多任務學習為框架,將旅客流失預測作為主任務,缺失數(shù)據(jù)填補作為輔助任務,利用兩個任務之間的相關性,將兩個任務在深度學習模型下同時并行建模,在提高數(shù)據(jù)處理與分析效率的同時,極大提升了預測精度。實驗結果表明,本文提出的方法在數(shù)據(jù)不完備的條件下對缺失數(shù)據(jù)的填補質量較高,同時能精準地對旅客進行流失預測,從而能為航空公司提供有效的決策,挽回相應的損失。
目前針對類別不平衡問題處理的方法主要包括:樣本采樣技術、代價敏感學習技術、決策輸出補償技術、集成學習技術、主動學習技術、一分類技術[4]。其中,樣本采樣技術是在工程上最為常用的技術。即通過增加少數(shù)類樣本或減少多數(shù)類樣本的方式以獲得相對平衡的訓練集。增加少數(shù)類樣本的方法稱為過采樣(oversampling),減少多數(shù)樣本的方法稱為欠采樣(undersampling)。考慮到使用欠采樣方式,會使訓練集中旅客記錄數(shù)據(jù)量減少,導致后續(xù)模型可能學習不到旅客的重要特征,從而影響旅客流失預測精度。因此,本文決定采用過采樣技術處理類別不平衡問題。其中,SMOTE算法[5]是由Chawla等提出的經(jīng)典隨機過采樣方法,可有效解決少數(shù)類樣本不足的問題。其主要思想在于,以每個少數(shù)類樣本為中心,采用最近鄰KNN算法,選出K近鄰少數(shù)類樣本。在距離較近的K近鄰少數(shù)樣本之間通過式(1)隨機生成一個新樣本
(1)
多任務學習(multitask learning)是一類同時學習多個相關任務的機器學習算法,基本思想是在學習期間利用其它相關任務中包含的信息,更好地或更快地學習任務[6]。其優(yōu)點是能同時并行學習多個任務,并且通過每個任務互相學習其它任務的所附加的額外信息,能最快最好提升自身任務的學習性能。此外,由于使用共享表示,多個任務同時進行預測時,減少了數(shù)據(jù)來源的數(shù)量以及整體模型參數(shù)的規(guī)模,使預測更加高效。
自編碼器是一種無監(jiān)督學習神經(jīng)網(wǎng)絡,由編碼器和解碼器兩部分構成。編碼器通過隱藏層將輸入樣本數(shù)據(jù)進行降維或升維,從而起到數(shù)據(jù)編碼的作用。解碼器將編碼器輸出的樣本再次通過隱藏層恢復到原來輸入編碼器時的維度,從而起到數(shù)據(jù)解碼的作用[7]。利用逐層訓練優(yōu)化算法初始網(wǎng)絡權重并使用反向傳播算法對網(wǎng)絡參數(shù)進行微調(diào)。通過多次組合自編碼器網(wǎng)絡,把當前層的輸出作為下一層的輸入,可形成堆疊自編碼器深度神經(jīng)網(wǎng)絡。
編碼過程為
(2)
解碼過程為
Y=g(H):=Sz(a′H+b′)
(3)
損失函數(shù)為
(4)
(網(wǎng)絡參數(shù)為:W={a,a′,b,b′})
(5)
結合式(5),采用SMOTE算法對少數(shù)類別樣本進行過采樣步驟如下:
(1)將少數(shù)類中每一個樣本,根據(jù)式(5)計算其到少數(shù)類集合所有樣本點的距離,得到K近鄰樣本;
(2)根據(jù)樣本不平衡比例設置合適的采樣頻率N,從K近鄰樣本中,隨機選擇若干樣本;
(6)
其中,rand(0,1)表示生成0到1之間的隨機數(shù)。
針對數(shù)據(jù)屬性缺失處理,數(shù)據(jù)缺失值填補的最終目的是能對旅客流失做出精確的預測。結合多任務學習與降噪自編碼器的優(yōu)勢,本文設計出一種基于降噪自編碼器的多任務學習網(wǎng)絡模型MLT-DAE。由模型架構和訓練過程分別進行論述。
2.2.1 模型架構
模型網(wǎng)絡架構如圖1所示。
圖1 模型MLT-DAE網(wǎng)絡架構
圖1中提出的架構由3部分組成:編碼器、解碼器、分類器。各部分中間均包含多個隱藏層,其中編碼器與解碼器構成堆疊降噪自編碼器。參考有關DAE網(wǎng)絡[10-12]架構,區(qū)別于傳統(tǒng)自動編碼器架構,受Kernal SVM[13]啟發(fā),本文采用的架構在編碼階段與輸入層相比,連續(xù)隱藏層中的單元數(shù)更多,試圖將輸入數(shù)據(jù)映射到更高維子空間,將數(shù)據(jù)擴充有助于增加數(shù)據(jù)可分性以及增強數(shù)據(jù)恢復能力。從初始Xn維輸入開始,然后在每個連續(xù)的隱藏層,添加a個節(jié)點,將維度增加a維。在模型輸入階段,將輸入數(shù)據(jù)進行歸一化處理,使得數(shù)據(jù)數(shù)值在0和1之間,以加快模型在中小樣本量時收斂,同時引入噪聲,在輸入層隨機將輸入Xn中的一半分量設置為0,使得網(wǎng)絡能提取到更加抽象的特征,增強網(wǎng)絡魯棒性。對于降噪自編碼器部分,因為由多個隱藏層構成,因此采用逐層貪婪方式先對編碼器和解碼器網(wǎng)絡進行預訓練,最后配合分類器對整個模型參數(shù)進行微調(diào)。采用交叉熵損失函數(shù)針對分類器進行訓練,采用均方差損失函數(shù)針對編碼器解碼器進行訓練。由于在初始化時需要完整的數(shù)據(jù),因此在不完整樣本輸入前,對于缺失的連續(xù)變量使用相應的列平均值進行初始填補,對于缺失的分類變量的使用屬性中出現(xiàn)最多的值作為初始填補。
2.2.2 模型訓練過程
輸入:數(shù)據(jù)集X1,X2,X3,…,Xi,任務權重系數(shù)λ
輸出:encoderFφ,decoderGθ,classifierHβ
(1)初始化網(wǎng)絡參數(shù)φ,θ,β;
比特幣不是基于賬戶的密碼貨幣,而是基于交易的密碼貨幣。在基于賬戶的貨幣中,我們可以通過賬戶直接查詢余額;但在比特幣系統(tǒng)中,我們需要通過未花費交易輸出(UTXO)來統(tǒng)計該地址余額。
(3)逐層無監(jiān)督預訓練編碼器encoderF、解碼器decoderG;
(4)結合分類器classifierH,通過任務權重系數(shù)入對整體網(wǎng)絡進行聯(lián)合訓練,并有監(jiān)督微調(diào)降噪自編碼器網(wǎng)絡;
(5)Repeat
(6)計算對應任務的損失函數(shù)
E=λEm+(1-λ)Es
(8)Until網(wǎng)絡參數(shù)φ,θ,β收斂。
模型由一個輸入端,兩個輸出端構成。解碼器的輸出是為了對輸入數(shù)據(jù)的缺失值進行恢復,從而采用均方差損失函數(shù)進行模型訓練。分類器的輸出是為了對最終目標流失預測任務,從而采用交叉熵損失函數(shù)進行模型訓練。由于兩個任務的重要程度不一致,因此在模型中引入任務權重系數(shù)λ[14],用于調(diào)節(jié)模型訓練兩個任務的權重,以平衡兩個任務的重要程度,對模型整體性能有著非常重要的影響,是重要的模型調(diào)優(yōu)參數(shù)。λ的最優(yōu)值一般處于0到1之間,并且它的取值取決于所解決問題的性質以及當前數(shù)據(jù)質量。
圖2 整體數(shù)據(jù)流
步驟1 從民航常旅客畫像服務主數(shù)據(jù)系統(tǒng)抽取旅客服務信息數(shù)據(jù)。其中,抽取的數(shù)據(jù)的屬性主要為旅客基本信息、旅客值機信息、旅客積分信息等。
步驟2 按照行業(yè)經(jīng)驗,對抽取的數(shù)據(jù)進行相關預處理,并進行數(shù)據(jù)標注后,等比例對數(shù)據(jù)進行分割。將90%的數(shù)據(jù)形成訓練集,10%的數(shù)據(jù)形成測試集。
步驟3 同時對訓練集與數(shù)據(jù)集模擬完全隨機缺失,形成不完備訓練集、不完備測試集。
步驟4 將不完備訓練集使用提出的基于部分距離的SMOTE算法進行隨機過采樣生成類別平衡后的不完備訓練集。
步驟5 將類別平衡后的不完備訓練集與完備訓練集放入設計好的多任務學習降噪自編碼器模型,進行模型訓練。
步驟6 將不完備測試集與完備測試集放入已訓練好的網(wǎng)絡模型進行相關性能指標驗證。
步驟7 判斷是否重復已訓練模型10次,如果已訓練10次,則計算模型平均性能指標,否則回到步驟3繼續(xù)。
本實驗采用從中航信旅客信息服務部門旅客信息服務主數(shù)據(jù)系統(tǒng)中抽取的某航空公司部分常旅客會員信息服務主數(shù)據(jù)。將數(shù)據(jù)進行如上文所述流程處理后,分別進行相關對比實驗以驗證所提出方法的有效性。
由于涉及旅客和航空公司的相關隱私信息,所有屬性均經(jīng)過脫敏處理。數(shù)據(jù)集一共37 237條樣本記錄,屬性維度為44維。數(shù)據(jù)集中,其與核心業(yè)務相關的主要屬性包括3個方面:①旅客基本信息:包含旅客ID、旅客性別、旅客年齡、旅客工作所在城市、旅客價值等級、首次乘機時間、旅客入會時間等。②旅客值機信息:包含旅客當前累積飛行次數(shù)、第1年乘機次數(shù)、第2年乘機次數(shù)觀測窗口結束時間、旅客飛行總公里數(shù)、票價總收入、平均折扣率、平均乘機時間間隔、末次飛行日期等。③旅客會員積分信息:總基本積分、積分兌換次數(shù)、總精英積分、促銷積分等。
參考民航旅客價值評估體系分析的獨有特點,對傳統(tǒng)的客戶價值RFM指標進行相應改進,引入旅客保持關系長度L、一定時間內(nèi)旅客所享受的平均折扣系數(shù)C,形成L、R、F、M、C這5個價值系統(tǒng)指標,作為重要的生成特征[15]。其中,L可由旅客觀測窗口結束時間與旅客入會時間相減計算出;R代表旅客最近一次距今消費時間可由觀測窗口結束時間與末次飛行日期相減計算出;F代表消費頻率可以由屬性當前類型飛行次數(shù)得出;C可以由屬性平均折扣率得出。同時,根據(jù)業(yè)務分析人員經(jīng)驗判定第2年乘機次數(shù)與第1年乘機次數(shù)比例低于50%為已流失旅客,處于50%到90%之間為準流失旅客,依然高于90%以上為未流失旅客。其余屬性在刪除例如對模型訓練無意義的旅客ID屬性同時,對數(shù)據(jù)集中的離散特征的標簽類別屬性如旅客性別、旅客工作所在城市等進行數(shù)值化處理。最終,形成特征數(shù)40維,已流失旅客數(shù)為4802,準流失旅客數(shù)為8301,未流失旅客數(shù)為25 134,可以看出絕大多數(shù)的會員為未流失狀態(tài),已流失的會員相對來說比較少,非常符合類別不平衡的情形。為了訓練模型的缺失值填補能力,針對現(xiàn)有的3種缺失機制:完全隨機缺失、隨機缺失、非隨機缺失[16],考慮到完全隨機缺失(MCAR)具有普適性,因此對預處理后的訓練集、測試集以缺失率0.1至0.6分別模擬完全隨機缺失,最終形成符合數(shù)據(jù)系統(tǒng)環(huán)境下的不完備訓練集、測試集。在正式輸入網(wǎng)絡模型訓練前,將數(shù)據(jù)進行歸一化處理,以加快網(wǎng)絡模型的參數(shù)收斂。
本實驗環(huán)境為Windows 10 64 bit,CPU 2.8 Hz 內(nèi)存16 G,使用Python語言及Tensorflow2.0框架完成相關數(shù)據(jù)處理以及模型訓練。其中基于部分距離的SMOTE算法,近鄰個數(shù)k為5,采樣倍率N為5和3分別對已流失旅客和未流失旅客進行隨機過采樣,從而使數(shù)據(jù)集類別達到平衡。基于降噪自編碼器的多任務學習網(wǎng)絡模型,經(jīng)過多次實驗采用四層網(wǎng)絡架構,隱藏層激活函數(shù)設置為Tanh函數(shù),解碼器輸出層激活函數(shù)設置為Sigmod函數(shù),采用均方差損失函數(shù),分類器輸出層激活函數(shù)設置為Softmax函數(shù),采用交叉熵損失函數(shù),編碼器每層增加的節(jié)點數(shù)a為7。整體模型采用Adam優(yōu)化函數(shù)計算更新網(wǎng)絡權重。訓練輪數(shù)Epoch設置為200,每次訓練批處理數(shù)Batchsize為256,任務權重系數(shù)λ為0.1~0.9。
在傳統(tǒng)分類算法中,一般以整體正確率為評價指標。由于本文所面向的數(shù)據(jù)集類別不平衡,因此準確識別出絕大部分未流失旅客,可能整體正確率會高達95%以上,但這對于航空公司來說沒有實際價值意義,重點在于能精確識別出未流失旅客和準流失旅客。因此,實驗采用綜合衡量模型精準率(Precision)和召回率(Re-call)的F1-Score值作為分類預測旅客流失任務的評價指標,其值越大越好,即
(7)
同時,對于缺失值填補任務,采用均方差損失(RSME)作為評價指標,其值越小越好。
3.5.1 分類預測效果對比
在分類效果對比實驗中,將本文提出的基于降噪自編碼器的多任務學習方法分別與通過傳統(tǒng)主流數(shù)據(jù)填補算法均值填補算法、MIC算法[17]、KNN、SoftImpute算法[18]先進行缺失值填補,再采用SVM算法進行分類預測對比。同時,將基于部分距離的SMOTE算法與以上算法結合,驗證其有效性。實驗結果以F1-Score值作為度量分類任務性能指標,全部實驗均重復10次以獲得最終平均結果。實驗結果如圖3所示。
圖3 分類預測效果對比實驗
由圖3可知,實線均為各算法在數(shù)據(jù)經(jīng)過提出的改進SMOTE算法在類別平衡化處理后使用后續(xù)相應算法訓練出的結果。相比未經(jīng)類別平衡化處理,各算法在使用提出的改進SMOTE算法后在分類性能上均有相應的提升,體現(xiàn)出基于部分距離的SMOTE算法在解決缺失模式下數(shù)據(jù)類別不平衡的問題的有效性。同時,相比先對缺失值進行填補,后對填補后的數(shù)據(jù)集進行分類預測的傳統(tǒng)處理方法,本文提出的MLT-DAE網(wǎng)絡模型在缺失率不斷增大下有著非常好的優(yōu)越性及穩(wěn)定性,F(xiàn)值一直處于0.95以上的水平,而均值填補、KNN填補、SoftImpute填補當數(shù)據(jù)集缺失率較大時,模型的分類精度均出現(xiàn)較大的損失。主要原因在于,在數(shù)據(jù)缺失率較高情況下經(jīng)過基于部分距離的SMOTE隨機過采樣會生成的帶有噪聲的數(shù)據(jù)樣本,從而影響后續(xù)進行分類任務的性能。由此可以分析出:①經(jīng)過采用基于部分距離的SMOTE算法,能有效解決缺失模式下的類別不平衡問題。②類別平衡后的數(shù)據(jù)經(jīng)過降噪自編碼器處理可以較大減小數(shù)據(jù)經(jīng)過基于部分距離的SMOTE算法采樣后形成的噪聲,從而有助于提升分類任務的性能。
3.5.2 填補效果對比
對于缺失值填補任務,將MLT-DAE模型對不同缺失率下的數(shù)據(jù)集進行填補,以對缺失率為0.3的測試集LRFMC屬性填補效果為例,經(jīng)多次測試本文提出的模型部分填補效果見表1~表3。同時將本文提出的方法與均值填補法、MICE、KNN填補法、SoftImpute填補法進行對比。采用均方根誤差RMSE作為評價指標,為減小隨機誤差,分別對5種方法重復進行10次實驗,得到綜合實驗結果如圖4所示。
圖4 缺失填補效果對比
由表1~表3所示,模型在對民航價值業(yè)務體系業(yè)務指標LRFMC的填補有著非常不錯的效果,經(jīng)模型填補后的數(shù)值與數(shù)據(jù)原始值較為接近,有助于后續(xù)對旅客進行更進一步的數(shù)據(jù)畫像分析。同時,由圖4所示,相比傳統(tǒng)方法本文提出的方法在缺失填補方面也一直保持較好的效果,隨著數(shù)據(jù)缺失率不斷增大,均方根誤差與其它傳統(tǒng)方法相比較低,且差距明顯。尤其是在數(shù)據(jù)集缺失率較高的情況下,配合多任務學習能對數(shù)據(jù)進行有效填補。進一步從側面體現(xiàn)出,在不完備數(shù)據(jù)集進行旅客流失預測任務時,缺失值對分類結果有著直接的影響。算法對缺失值的填補性能的提升有助于分類任務性能的提升。
表1 測試集LRFMC屬性原始記錄
表2 測試集LRFMC屬性缺失記錄
表3 經(jīng)過模型填補后LRFMC屬性記錄
3.5.3 多任務學習有效性驗證實驗對比
由于本文提出的MLT-DAE網(wǎng)絡模型既能進行旅客流失預測任務又能進行缺失值填補,為了驗證多任務學習網(wǎng)絡架構的有效性,將經(jīng)MLT-DAE網(wǎng)絡模型去掉分類器直接采用由編碼器和解碼器構成的DAE網(wǎng)絡模型填補后的輸出,配合SVM算法、邏輯回歸(LG)算法進行旅客流失預測,與MLT-DAE分類器端的結果輸出進行對比。分別以缺失率0.2、0.4、0.6重復進行10次實驗,取平均值作為最終結果,綜合結果見表4。
表4 多任務學習驗證對比
從實驗結果可以歸納出,針對旅客流失預測問題,傳統(tǒng)的SVM算法要略好于LG算法,原因在于SVM在高維空間中找出分割面將數(shù)據(jù)按照類別得以分割,類別不平衡對其影響較小,而LG算法要度量總體損失函數(shù),對平衡類別較為敏感。本文結合業(yè)務環(huán)境提出的預測方法,考慮到自編碼器對數(shù)據(jù)進行自動特征提取的優(yōu)勢,將數(shù)據(jù)在編碼階段進行維度擴展得到更高維更抽象的特征表達,配合解碼器網(wǎng)絡和分類器網(wǎng)絡,使得中間層學習到的特征表達既包含原有數(shù)據(jù)樣本缺失的信息,又能對數(shù)據(jù)進行有效的分割,從而使缺失值得填補以分類預測為導向,有助于提升預測精度。
3.5.4 參數(shù)任務權重系數(shù)λ
MLT-DAE模型,對兩個任務同時進行處理,由于兩個任務有各自的權重,因此模型的輸入?yún)?shù)任務權重系數(shù)λ對模型收斂及整體性能有著非常重要的影響。以缺失率為20%、40%、60%的數(shù)據(jù)集為實驗數(shù)據(jù)進行說明,以F值為評價指標,對任務權重系數(shù)λ設置,以0.1為步長,從0.1到0.9分別對數(shù)據(jù)集進行對比實驗,以發(fā)現(xiàn)最優(yōu)值規(guī)律。實驗綜合平均結果見表5。
表5 參數(shù)任務權重系數(shù)λ選擇
當數(shù)據(jù)集缺失率低于10%時,參與模型訓練的數(shù)據(jù)質量比較高,網(wǎng)絡模型聯(lián)合訓練應該偏向旅客流失預測分類任務,λ值可從0.1~0.2中設置。隨著數(shù)據(jù)集的缺失率逐漸升高,參與網(wǎng)絡模型訓練的數(shù)據(jù)質量逐漸變低,使得模型訓練由原來的以流失分類預測為主任務轉為以缺失值填補為主任務,導致λ值也相應升高。因此,實際在生產(chǎn)環(huán)境上部署訓練模型時,要根據(jù)當前環(huán)境下的數(shù)據(jù)質量以及模型的主要任務搜尋合適的權重系數(shù)以使模型性能達到最優(yōu)。
針對民航旅客信息服務系統(tǒng)中數(shù)據(jù)缺失影響對旅客做流失預測的情形,本文對已有SMOTE算法進行改進,使其能在不完備數(shù)據(jù)集下對已流失旅客和準流失旅客進行過采樣以平衡數(shù)據(jù)集。同時,設計出一種基于降噪自編碼器的多任務深度神經(jīng)網(wǎng)絡模型,將旅客流失預測任務作為主任務,數(shù)據(jù)缺失值填補作為輔助任務,同時并行解決民航旅客服務信息主數(shù)據(jù)缺失值填補以及民航旅客流失預測問題。實驗結果表明,相比傳統(tǒng)處理方法,模型考慮到現(xiàn)實生產(chǎn)環(huán)境,在分類任務和缺失值填補任務中有著較好的性能,可提升分類精度和數(shù)據(jù)質量,同時更為重要來說使其能在數(shù)據(jù)不完備的情況下對旅客流失進行精確預測,因此具有較大的工程實用價值。