蔣宗禮, 史倩月
(北京工業(yè)大學 信息學部,北京 100124)
不平衡數(shù)據(jù)指在數(shù)據(jù)集中一類或多類的樣本數(shù)量遠遠超過其他類的樣本數(shù)量,疾病診斷[1]、情感識別[2]、故障診斷[3]等常見數(shù)據(jù)都是不平衡數(shù)據(jù).通常,令多數(shù)類樣本為負類,少數(shù)類樣本為正類. 傳統(tǒng)分類算法使用不平衡數(shù)據(jù)時的分類結(jié)果往往偏向多數(shù)類樣本,性能較差,提高不平衡數(shù)據(jù)的分類精度成為當前的研究熱點.
針對上述問題,Chawla等人[4]提出SMOTE (Synthetic Minority Oversampling Technique),該算法在少數(shù)類樣本與其鄰近點間通過乘以0到1的隨機數(shù)線性插入樣本. Han H等人[5]提出Borderline-SMOTE方法,將樣本數(shù)據(jù)點分為安全點、邊界點和噪音點,在分類邊界通過SMOTE方法生成數(shù)據(jù). Barua等人[6]提出MWMOTE,根據(jù)少數(shù)類樣本距離和密度因素賦予對應信息權重,使用聚類方法生成簇并用SMOTE合成少數(shù)類樣本.以上方法多數(shù)在邊界生成數(shù)據(jù),容易造成模糊邊界的問題,并且多以歐幾里得距離計算樣本的分布,難以接近真實的數(shù)據(jù)分布,可能會產(chǎn)生噪聲而誤分.
變分自編碼器(Variational Auto Encoder,VAE)[7]是由Kingma DP和Welling M在2014年提出的生成模型,是深度學習方法中的一種無監(jiān)督模型. 作為熱門的生成模型之一,已有許多學者對其進行研究,文獻[8]提出基于變分自編碼器進行異常檢測,文獻[9]使用變分自編碼器提取語言特征,文獻[10]提出了一種基于變分貝葉斯自編碼器的局部放電數(shù)據(jù)匹配方法.
現(xiàn)有的過采樣預處理方法主要通過計算歐幾里得距離、密度等影響因素來學習數(shù)據(jù)間的分布. 然而,隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)以大容量、高維度、不平衡的趨勢遞增,只根據(jù)簡單的衡量因素生成的樣本無法全面代表大量的高維樣本數(shù)據(jù). VAE已廣泛應用于計算機視覺、圖像處理、自然語言處理等領域. 但其發(fā)展時間較短,還需突破更多的領域,本文對其做了探索,結(jié)合過采樣來解決不平衡數(shù)據(jù)引起分類誤差問題.
不平衡數(shù)據(jù)分類問題廣泛影響著現(xiàn)實生活. 例如,醫(yī)療診斷領域的基因表達樣本,其特征展現(xiàn)出高緯度的特點,決定疾病的特征占其中的極少數(shù),同時,疾病的樣本數(shù)量遠遠小于其他的樣本數(shù)量,呈現(xiàn)出高度的高維不平衡性使數(shù)據(jù)分類時忽略極少數(shù)的癌變基因.在銀行信用卡欺詐檢測中,欺詐交易占數(shù)據(jù)的極少數(shù)使分類容易誤分欺詐交易數(shù)據(jù),而對欺詐數(shù)據(jù)的誤分類造成的代價往往更嚴重. 網(wǎng)絡入侵、情感分類、語音識別等領域都存在明顯的數(shù)據(jù)不平衡特性. 為驗證本文提出模型可以有效改善原始不平衡數(shù)據(jù)對分類產(chǎn)生的偏斜影響,使用UCI數(shù)據(jù)庫四個常用的數(shù)據(jù)集進行實驗,結(jié)果證明使用變分自編碼器數(shù)據(jù)預處理相比其它過采樣算法提高了算法的F_measure和G_mean,具有重要的現(xiàn)實意義.
不平衡數(shù)據(jù)訓練時多數(shù)類樣本信息占主導地位,導致分類結(jié)果偏向多數(shù)類樣本,主要有數(shù)據(jù)層面和算法層面的解決辦法[11].
數(shù)據(jù)層面通過重新分布數(shù)據(jù)以減小不平衡度,包括欠采樣,過采樣和混合采樣. 欠采樣即去除多數(shù)類樣本,如隨機欠采樣、Tomek Links,欠采樣方法雖然可以使數(shù)據(jù)達到平衡狀態(tài),但是在減少樣本的同時也減少了對分類有重要影響的樣本信息,會影響分類結(jié)果.過采樣即增加少數(shù)類樣本,如隨機過采樣、SMOTE、Borderline-SMOTE,但其容易導致分類過擬合,且存在模糊邊界等問題. 混合采樣結(jié)合欠采樣和過采樣方法,如SMOTE+Tomek Link算法[12],該算法首先使用SMOTE生成數(shù)據(jù),然后利用Tomek Link方法清理噪聲數(shù)據(jù).
算法層面典型的解決方法有代價敏感算法[13]和集成學習方法[14]. 代價敏感方法對不同的類賦予不同的錯分代價以降低少數(shù)類樣本的錯分率,集成學習方法集合多個弱分類器并賦予不同的權重來提高分類性能.算法層面的解決方法主要針對某一類數(shù)據(jù)集改進,難以擴展.
自動編碼器(Auto-Encoder)由Rumelhart在1986年提出,其網(wǎng)絡結(jié)構如圖1所示. 其中,輸入層到隱藏層的映射表示為編碼器,隱藏層映射到輸出層構成解碼器.
圖1 自動編碼器網(wǎng)絡結(jié)構圖
編碼過程:
解碼過程:
其中,w,w′為權重矩陣,b,b′為偏置項. s(x)為激活函數(shù),通常取線性函數(shù)或者Sigmoid函數(shù).
自動編碼器首先對輸入向量x編碼得到編碼結(jié)果z,然后對z解碼得到重構向量x′. 其學習過程是無監(jiān)督的,目標是使輸出數(shù)據(jù)盡可能重現(xiàn)輸入數(shù)據(jù),即最小化重構誤差.
自動編碼器是一種數(shù)據(jù)壓縮算法,編碼階段將高維數(shù)據(jù)映射成低維數(shù)據(jù),實現(xiàn)數(shù)據(jù)的特征提取,解碼階段則與編碼階段相反,從而實現(xiàn)對輸入數(shù)據(jù)的復現(xiàn)[15].
深度學習通過對輸入數(shù)據(jù)進行多層特征變換可學習到更復雜的數(shù)據(jù)特征,變分自編碼器由神經(jīng)網(wǎng)絡學習訓練樣本的分布,可以生成與訓練樣本近似的數(shù)據(jù),本文結(jié)合變分自編碼器解決傳統(tǒng)過采樣技術的過擬合問題.
變分自編碼器基于變分下界和貝葉斯理論,目標是最大化邊緣似然函數(shù)的變分下界,其模型圖如圖2所示.
圖2 變分自編碼器的圖模型
其中,z為隱變量,x是希望生成的目標數(shù)據(jù). 虛線表示后驗分布pθ(x|z)的近似分布qφ(z|x),實線表示生成模型pθ(x|z)pθ(z),φ,θ是在訓練過程中共同學習的網(wǎng)絡層參數(shù)[16].
變分自編碼器目標函數(shù)的推導過程如下:
假設X={x(1),···,x(N)}是獨立同分布的數(shù)據(jù)集,x(i)由條件分布pθ(x|z)生成,z服從先驗分布pθ(z),數(shù)據(jù)集x的對數(shù)似然函數(shù)可寫為式(4)
x(i)的邊緣似然函數(shù)為
為求解對數(shù)似然函數(shù),引入后驗概率pθ(z|x)和pθ(z|x)的近似后驗概率qφ(z|x). 使用KL散度(Kullback-Leibler Divergence,KLD)衡量與的距離:
代入貝葉斯公式,并進一步化簡,式(6)可得出如下公式:
由于KL散度非負,存在不等式(9):
由此得到目標函數(shù)的變分下界:
其中,j為σ(i)的第j個元素,μ(i),σ(i)由編碼器計算得出.
式(12)從N(μ,σ2)采樣z后計算logpθ(x(i)|z(i))的平均值,該過程不可微. 變分自編碼器通過參數(shù)重構化解決式(12)無法梯度下降求解的問題,參數(shù)重構引入了噪聲隨機變量ε~N(0,1),令z=μ(i)+σ(i)?ε(i),將采樣步驟與模型參數(shù)分離.
轉(zhuǎn)換后的目標函數(shù)L(θ,φ;x(i))如式(13)所示:
利用過采樣和變分自編碼器的優(yōu)點,本文提出融合變分自編碼器的過采樣預處理技術,首先使用變分自編碼器學習少數(shù)類樣本的分布特征,然后利用自編碼器的生成器生成相似數(shù)據(jù)以降低原始數(shù)據(jù)的不平衡度,最后將平衡后的數(shù)據(jù)作為輸入數(shù)據(jù)訓練邏輯回歸分類器. 整體分為以下3個階段:
第一階段:變分自編碼器學習少數(shù)類樣本分布特征.
變分自編碼器的結(jié)構與自編碼器相似,編碼器Q將輸入數(shù)據(jù)經(jīng)過多層非線性特征轉(zhuǎn)換映射為高斯分布,解碼器P將由高斯分布采樣的隱變量重構為輸入數(shù)據(jù).
變分自編碼器的結(jié)構圖如圖3所示.
圖3 變分自編碼器結(jié)構圖
本文令編碼器Q和解碼器P為含有一個隱藏層的神經(jīng)網(wǎng)絡.
其編碼器和解碼器的模型如圖4所示.
圖4 變分自編碼器的編碼器和解碼器模型圖
編碼器:
解碼器:
其中,W1,W2,W3,W4,W5為變分自編碼器的連接權值矩陣,h1,h2,h3,h4,h5為自編碼器的偏置向量.
對構建的變分自編碼器,采用隨機梯度下降算法最小化重構誤差進而不斷調(diào)整自編碼器網(wǎng)絡的參數(shù)W,b,第l層的Wl,bl更新公式如下:
第二階段:采樣隱變量并輸入到生成器中生成指定數(shù)量的樣本.
由于變分自編碼器假設先驗分布為高斯分布并進行了參數(shù)重構化,因此只需要從標準正態(tài)分布中采樣隱變量,將其輸入到第一階段訓練的生成器中就可以生成相似樣本. 生成樣本的數(shù)量對分類結(jié)果有至關重要的作用,目前還沒有統(tǒng)一的方法決定樣本采樣量,本文通過觀察不平衡率與分類結(jié)果折線圖找到最優(yōu)采樣量.
第三階段:將生成數(shù)據(jù)與原始數(shù)據(jù)結(jié)合作為輸入數(shù)據(jù)訓練邏輯回歸分類器.
整體模型結(jié)構如圖5所示.
融合變分自編碼器的不平衡數(shù)據(jù)處理訓練算法如下:
算法1. 融合變分自編碼器的不平衡數(shù)據(jù)分類算法1) 將樣本數(shù)據(jù)集分為訓練集和測試集.Xminμ,σ 2) 訓練集的少數(shù)類樣本作為輸入數(shù)據(jù)輸入到變分自編碼器中,根據(jù)公式(15)(16)計算.N(0,1)εz=μ+σ·ε 3) 從采樣,根據(jù)公式計算隱變量z.4) 隱變量z輸入到解碼層,根據(jù)公式(19)計算輸出y.L(W,b;X)5) 根據(jù)公式(13)計算損失函數(shù),根據(jù)公式(20)-公式(23)更新參數(shù). 若算法不收斂,重復步驟2)-步驟5); 若收斂,停止訓練.6) 通過變分自編碼器的生成器生成N個數(shù)據(jù).7) 生成樣本數(shù)據(jù)和原訓練集數(shù)據(jù)結(jié)合,輸入到邏輯回歸分類器中訓練.8) 測試集作為輸入數(shù)據(jù),輸入到訓練好的分類器中計算評估分數(shù).
本次實驗所用數(shù)據(jù)集為UCI 4個常用的數(shù)據(jù)集[17,18],具體描述如表1所示.
圖5 不平衡數(shù)據(jù)分類結(jié)構圖
表1 數(shù)據(jù)集信息
其中,bank指UCI Bank Marketing銀行營銷數(shù)據(jù)集,該數(shù)據(jù)集通過客戶信息以及對客戶的電話聯(lián)系判斷客戶是否將認購定期存款. credit指UIC default of credit card clients數(shù)據(jù)集,該數(shù)據(jù)集目的是預測用戶是否會違約拖欠付款. Abalone7是UCI abalone數(shù)據(jù)集,該數(shù)據(jù)集通過物理量法預測鮑的年齡,本文令年齡7歲為正類,其它年齡為負類. yeast1是UCI Yeast數(shù)據(jù)集,其目標是預測蛋白質(zhì)的細胞定位點,本文令類AUC為正類,其它類為負類.
傳統(tǒng)方法使用準確率(正確分類樣本個數(shù)/總樣本個數(shù))評估分類結(jié)果,該評估指標可以準確評價平衡數(shù)據(jù)集的分類,但是衡量不平衡數(shù)據(jù)集時忽略了少數(shù)類樣本的分類精度[19]. 例如,樣本數(shù)據(jù)集中少數(shù)類樣本占比為10%,多數(shù)類樣本占比為90%,若把所有樣本分類為多數(shù)類樣本,準確率為90%,但是少數(shù)類樣本分類精度為0.
根據(jù)混淆矩陣(如表2所示),有以下評價指標:
查準率(precision)表示被正確分類的正類樣本占所有預測為正類樣本的數(shù)據(jù)比例. 查全率(recall)表示被正確分類的正類樣本占所有正類樣本的比例.F_Measure綜合考慮了precision和recall,是兩個衡量指標的調(diào)和平均,可以評價分類器的整體性能,當兩者都較大時,F(xiàn)_Measure才會較大. G_mean是少數(shù)類樣本分類精度和多數(shù)類樣本分類精度的幾何平均值,可評價分類器對于每一類的分類性能. F_Measure和G_mean更適合評價不平衡數(shù)據(jù)的分類性能,本文選擇F_Measure,G_mean和準確率accuracy作為評價指標.
表2 混淆矩陣
為驗證VAE數(shù)據(jù)預處理解決不平衡數(shù)據(jù)問題的有效性,實驗對比了不進行數(shù)據(jù)預處理以及使用SMOTE、Borderline-SMOTE、ADASYN過采樣方法后的分類性能. 實驗均采用十次五折交叉驗證的平均值作為實驗結(jié)果.
不平衡率對分類器的性能起至關重要的作用,圖6展示了不斷增加少數(shù)類樣本后不平衡率對應的F_Measure值,圖7展示了不斷增加少數(shù)類樣本后不平衡率對應的G_mean值.
通過圖6和圖7看出,不同數(shù)據(jù)集對應的最優(yōu)采樣率不同. 經(jīng)過對比發(fā)現(xiàn)Bank采樣后不平衡率到達0.4最優(yōu),Credit采樣后不平衡率到達0.65最優(yōu),Abalone7采樣后不平衡率到達0.6最優(yōu),Yeast1采樣后不平衡率到達1.1最優(yōu). 雖然Bank數(shù)據(jù)集和Abalone數(shù)據(jù)集使用VAE預處理的G_mean值略低于其它預處理方法的G_mean值,但是經(jīng)過VAE預處理的F_Measure值幾乎都高于其他預處理方法的F_Measure值,可以看出VAE預處理具有更好的分類性能.
圖6 4個數(shù)據(jù)集采樣后不平衡率對應的F_Measure值
表3分別列出了4個數(shù)據(jù)集使用不同預處理方法在最優(yōu)采樣率下的F_measure,G_mean和準確率.LR表示直接對不平衡數(shù)據(jù)使用邏輯回歸分類器分類.
由表3可知,數(shù)據(jù)集使用變分自編碼器數(shù)據(jù)預處理對比其它預處理方法有明顯提高. Bank數(shù)據(jù)集使用VAE預處理對比直接進行分類提高了25.6%,對比使用SMOTE方法提高了0.16%,對比使用Borderline-SMOTE提高了2.30%,對比使用ADASYN提高了0.00%.credit數(shù)據(jù)集使用VAE預處理對比直接進行分類提高了49.1%,對比使用SMOTE方法提高了2.57%,對比使用Borderline-SMOTE提高了3.18%,對比使用ADASYN提高了3.39%. Abalone7數(shù)據(jù)集使用VAE預處理對比直接進行分類提高了387倍,對比使用SMOTE方法提高了4.30%,對比使用Borderline-SMOTE提高了4.86%,對比使用ADASYN提高了3.19%. Yeast1數(shù)據(jù)集使用VAE預處理對比直接進行分類提高了76.9%,對比使用SMOTE方法提高了2.07%,對比使用Borderline-SMOTE提高了3.14%,對比使用ADASYN提高了2.25%. 對于4個數(shù)據(jù)集F_Measure平均值,變分自編碼器使用VAE預處理對比不進行數(shù)據(jù)預處理提高80.3%,對比SMOTE方法提高2.12%,對比Borderline-SMOTE方法提高3.31%,對比ADASYN方法提高2.12%.
數(shù)據(jù)集使用變分自編碼器數(shù)據(jù)預處理整體提高了G_mean值. 對于Bank數(shù)據(jù)集和Abalone7數(shù)據(jù)集,本文方法略低于其它數(shù)據(jù)預處理方法,但是在Credit數(shù)據(jù)集上實驗,本文方法對比不進行預處理提高了38.1%,對比SMOTE方法提高了2.03%,對比Borderline-SMOTE提高了1.71%,對比ADASYN方法提高了2.5%.在Yeast1數(shù)據(jù)集上實驗,本文方法對比不進行數(shù)據(jù)預處理提高了51.7%,對比SMOTE方法提高了1.13%,對比Borderline-SMOTE提高了3.03%,對比ADASYN方法提高了2.30%. 對于4個數(shù)據(jù)集F_Measure平均值,變分自編碼器使用VAE預處理對比不進行數(shù)據(jù)預處理提高了86.9%,對比SMOTE方法提高了0.41%,對比Borderline-SMOTE方法提高了0.97%,對比ADASYN方法提高了0.41%.
圖7 4個數(shù)據(jù)集采樣后不平衡率對應的G_mean值
表3 數(shù)據(jù)集使用不同方法的F_Measure,G_mean,accuracy
數(shù)據(jù)集使用變分自編碼器數(shù)據(jù)預處理對比其它預處理方法整體上提高了分類準確率. Bank數(shù)據(jù)集使用VAE預處理對比直接進行分類降低了0.55%,對比使用SMOTE方法提高了0.33%,對比使用Borderline-SMOTE提高了1.12%,對比使用ADASYN提高了0.22%. Credit數(shù)據(jù)集使用VAE預處理對比使用SMOTE方法降低了1.11%,對比使用Borderline-SMOTE降低了0.62%,對比使用ADASYN降低了0.37%. Abalone7數(shù)據(jù)集使用VAE預處理對比使用SMOTE方法提高了1.13倍,對比使用Borderline-SMOTE提高了1.15倍,對比使用ADASYN提高了17.9%. Yeast1數(shù)據(jù)集使用VAE預處理對比使用SMOTE方法提高了4.63%,對比使用Borderline-SMOTE提高了9.04%,對比使用ADASYN提高了8.40%. 對于4個數(shù)據(jù)的accuracy平均值,變分自編碼器預處理對比SMOTE方法提高11.3%,對比Borderline-SMOTE方法提高18.2%,對比ADASYN方法提高2.42%.
由表3可以看出,直接使用邏輯回歸分類器對不平衡數(shù)據(jù)分類的F_Measure和G_mean值很低,分析其原因,是由于邏輯回歸算法平等的看待每一類樣本,而少數(shù)類樣本提供給分類器的有效信息極少,分類器將大部分樣本預測為多數(shù)類樣本以保證較高的準確率,導致少數(shù)類樣本的準確率嚴重降低. 為解決此問題,本文在樣本輸入到分類器之前進行過采樣處理均衡正負類樣本提高少數(shù)類樣本精度.
相較于SMOTE、Borderline-SMOTE、ADASYN算法,本文提出的算法其準確率、F_Measure和G_mean更高. 可見,相比僅通過歐幾里得距離及其改進算法衡量數(shù)據(jù)間的分布情況,本文通過含有多個神經(jīng)元的隱含層線性學習并使用激活函數(shù)非線性變換,學習樣本的不同特征分布,以此學習到的分布更接近真實數(shù)據(jù)分布. 另外,借助變分自編碼器的思想,使采樣的數(shù)據(jù)通過解碼器生成的少數(shù)類樣本更符合原始數(shù)據(jù)的特征.
變分自編碼器充分考慮了少數(shù)類樣本不同層次的特征,可以生成更廣泛的少數(shù)類樣本,從而有效提高了分類器的泛化能力. 因此,本文提出方法訓練的分類器預測測試樣本時,準確率、F_Measure和G_mean都較高.
綜上所述,使用變分自編碼器均衡不平衡數(shù)據(jù)集改善了原始數(shù)據(jù)集中多數(shù)類樣本占主導作用使少數(shù)類樣本準確率降低的問題,其生成的樣本增加了分類時少數(shù)類樣本的有效信息并提高了少數(shù)類樣本的分類識別率,具有更高的分類精確度.同時,變分自編碼器通過神經(jīng)網(wǎng)絡多次非線性特征轉(zhuǎn)換學習到的數(shù)據(jù)分布特征更接近真實數(shù)據(jù),改善了傳統(tǒng)過采樣技術產(chǎn)生無效的“人造樣本”影響少數(shù)類樣本分布導致模糊正負類邊界的問題. 融入變分自編碼器的過采樣技術在提高少數(shù)類樣本精確度的同時兼顧了多數(shù)類樣本準確率.
本文結(jié)合變分自編碼器和過采樣技術解決數(shù)據(jù)不平衡導致傳統(tǒng)分類器分類性能較差的問題,該方法通過變分自編碼器學習少數(shù)類樣本的分布,使用其生成器生成相似的數(shù)據(jù)以均衡數(shù)據(jù)集. 實驗結(jié)果表明變分自編碼器生成的樣本更接近真實數(shù)據(jù),融合變分自編碼器的數(shù)據(jù)預處理技術保證了較高準確率的同時提高了少數(shù)類樣本的精確度,改善了不平衡數(shù)據(jù)的分類偏斜問題和傳統(tǒng)過采樣的過擬合問題.