徐紅,矯桂娥,張文俊,陳一民
(1.上海海洋大學 信息學院,上海 201306;2.上海大學 上海電影學院,上海 200072;3.上海建橋學院 信息技術學院,上海 201306)
非平衡問題在現實生活中普遍存在,數據集中不同類別的樣本量差異較大,數據量較多的是多數類,數據量較少的是少數類。在實際生活中通常采用的非平衡數據集都是結構化形式。當算法對非平衡數據進行分類時,會受到多數類的影響,而忽略少數類特征,導致對少數類分類錯誤。但是,在非平衡數據集中少數類往往較重要。文獻[1-3]提出在設備故障檢測、罕見疾病診斷等方面,少數類比多數類更具有意義。因此,對于非平衡數據集的準確分類十分重要,這也是非平衡數據分類成為大數據挖掘和人工智能領域研究熱點的原因。
研究人員主要從兩個方面處理非平衡數據的分類問題:一方面通過改變原始數據的分布,在數據預處理階段降低數據不平衡程度;另一方面是通過改進分類算法,使算法適應非平衡數據的分類,準確地學習少數類特征。
在數據加載階段采樣算法主要有欠采樣、過采樣和加權隨機采樣算法,其作用是降低原始數據集的非平衡度,數據采樣算法主要有過采樣算法和欠采樣算法。文獻[4]提出結合合成少數類過采樣技術(Synthetic Minority Oversampling Technique,SMOTE)的重采樣算法,其特點是分析少數類并生成少數類,但是該算法生成的新樣本會對分類模型產生過擬合問題。文獻[5]提出結合SMOTE 算法和邊界信息生成新樣本的Borderline-SMOTE 過采樣算法。文獻[6]提出的ADASYN 與Borderline-SMOTE 算法相似,通過對不同的少數類樣本賦予不同的權重,以生成不同數量的樣本,但通過這類采樣算法重采樣生成的少數類樣本容易成為噪聲樣本,混淆分類模型對少數類樣本的分類,從而影響模型的分類準確率。
欠采樣方法的特點是通過隨機減少多數類樣本數量以達到類別間平衡分布的目的,并在此基礎上進行分類,該方法可能會導致部分重要信息被刪除以影響分類效果。文獻[7]提出在部分特殊情況下,隨機欠采樣算法有可能取得較優的分類效果。文獻[8]提出加權隨機采樣算法,根據數據集內不同樣本權重進行隨機采樣,但是該算法中的樣本權重是研究人員主觀設置的,不同權重的設置會得到不同的重采樣數據集。文獻[9]采用過采樣小于所需樣本量的采樣算法,該采樣算法同時考慮了不平衡度和分類復雜度,但適用范圍較小,難以泛化作用于普通數據集。此外,文獻[10]提出在數據加載階段將欠采樣和過采樣算法融合為一個框架,對非平衡數據集進行處理,但是該融合算法會產生大量的少數類噪聲樣本。
在算法層面,文獻[11]通過對傳統分類算法進行改進,提出代價敏感方法,通過對不同的樣本賦予不同的損失權重,若模型對少數類分類錯誤,其代價就會增大,對多數類分類錯誤,其代價較小或者不變,同時將損失值反饋到分類模型中,更加關注對少數類樣本的特征學習,使算法在非平衡數據集上能夠準確地分類少數類。數據處理方法具有一定的泛化能力,可以用于不同的數據集,但是對算法的改進通常只適用于某一個或某一類非平衡數據集。
卷積神經網絡因其高效的特征提取能力和較少的參數量被廣泛應用于圖像處理、目標跟蹤、自然語言等領域,并且涌現了許多經典的深度學習模型,例如AlexNet 網絡[12]、VGGNet[13]等。研究人員將卷積神經網絡應用到大數據挖掘領域中[14],在解決非平衡問題時也取得了一定的成果。但是卷積神經網絡一般用于對視覺和圖像等類型數據的訓練處理。
本文提出一種基于卷積神經網絡的結構化非平衡數據分類算法。對于非平衡分布的結構化二分類數據集的分類,設計Data-Shuffle 算法,將原始非平衡一維結構化數據轉換為多通道非平衡數據,使原始的一維結構化數據能夠適用于深度學習模型,提升分類模型的分類性能。通過改進的VGG 網絡構建適合非平衡數據的網絡結構卷積組,以提取不同的特征。
本文主要的研究對象是非平衡結構化數據集,在數據預處理階段提出Data-Shuffle 算法,通過構建多通道特征圖,將原始非平衡一維結構化數據轉換為三維數組形式的多通道非平衡數據,并對數據賦予不同的權重。在采樣階段,通過對樣本進行更新加權采樣。為適應小樣本多通道特征圖,在分類模型中改進模型結構,以減少模型的參數量,避免產生不必要的復雜度。
本文算法的整體結構如圖1 所示,首先通過本文所提的Data-Shuffle 算法將原始非平衡一維結構化數據轉換為三維數組形式的多通道非平衡數據,并將轉換后的三維結構數據輸入到分類模型中。在數據預處理過程中,對數據集賦予初始采樣權重。UWSCNN 算法根據數據集中的樣本采樣權重對其進行加權采樣,此外,為減少模型的參數量,根據VGG 網絡性能特點,構建輕量級卷積組,并提出卷積神經網絡Struct_Class_Net。該網絡模型對采樣后的數據集進行分類訓練,在每輪迭代過程中,模型根據分類結果與真實值,統計每個batch_size中的樣本分類情況,并在每輪訓練結束后將其記錄到權重變化矩陣中,通過該矩陣更新樣本的采樣權重,在下一個迭代次數中按照更新后的采樣權重采樣,Struct_Class_Net對采樣所得的數據進行下一輪訓練,將訓練結果保存并反饋給數據樣本,以逐步提升分類模型對非平衡數據的分類準確率。

圖1 本文算法整體結構Fig.1 Overall structure of the proposed algorithm
1.1.1 VGGNet 網絡模型
卷積神經網絡是神經網絡的代表。文獻[15-18]描述了在圖像識別、自然語言處理等領域中卷積神經網絡較優的性能。卷積神經網絡模型由卷積層、池化層、全連接層等組成:1)卷積層,主要提取輸入數據的不同特征,層數較多的卷積層能夠提取輸入數據中更多且復雜的特征;2)池化層,主要去除冗余信息,緩解模型的過擬合問題;3)全連接層,通過對卷積層和池化層所提取的特征進行加權,得到模型結果并將其傳遞到輸出層。
1.1.2 VGGNet 網絡模型改進
VGGNet 由牛津大學視覺幾何組研發,并以其縮寫命名。VGGNet 在ILSVRC 2014 比賽中對1 000 個類別的大量數據進行分類,所需參數量較多。由于直接將VGGNet應用到一般數據分類中會存在較多問題,因此本文需要對其進行修改,滿足分類任務的需求。
VGGNet全部使用3×3 的卷積核和2×2 的池化核,同時加深網絡結構以提高模型的性能。兩個3×3 的卷積核相當于一個5×5 的卷積核,三個3×3 的卷積核相當于一個7×7 的卷積核,但是三個3×3 的卷積核視野與一個7×7 的卷積核相同。因此,網絡層數的增加不會引入大量的參數。兩個3×3 卷積核的參數量為3×(3×3×C×C)=27C2,一個7×7 卷積核的參數量為7×7×C×C=49C2。在相同感受野的情況下,三個3×3卷積核代替一個7×7 卷積核,參數量減少了將近1/2。卷積核卷積視野示意圖如圖2 所示。

圖2 卷積組卷積視野示意圖Fig.2 Schematic diagram of convolution field of convolution group
兩個3×3 的卷積核相當于一個5×5 的卷積核,示意圖如圖2(a)所示。三個3×3 的卷積核相當于一個7×7 的卷積核,如圖2(b)所示。與使用5×5 或7×7 的卷積核相比,VGG 采用3×3 的卷積組能夠在卷積視野相同的情況下減少參數量。此外,每個卷積核之后都有一個非線性激活函數ReLU,以提升模型的泛化能力。
VGGNet 包含很多級別的網絡,網絡層數和深度不等,較常用的是VGGNet-16 和VGGNet-19。VGG 網絡將模型分為五個部分,將3×3 的卷積組串聯起來,并且在卷積組之后連接一個最大池化層,模型的最后是三個全連接層和Softmax層。改進的VGGNet 網絡模型特點主要有:
1)卷積組的構建,根據VGG 網絡結構,重新構建卷積組,第1~3 層使用三個3×3 的卷積核,卷積視野等價于7×7 的卷積核,還構建一個兩層的卷積組等價于一個5×5 的卷積核,每個卷積層中都采用ReLU 激活函數進行非線性激活,提高模型的泛化能力。根據VGG 網絡搭建卷積組,以代替卷積神經網絡模型不同視野的卷積層,在保證提取到更多且更細致特征的前提下,減少模型的參數量,縮短模型的運行時間。
2)卷積層替換池化層。雖然池化層可以過濾掉特征圖的冗余信息,減輕模型負擔,但是采用步長為2 的卷積層,可以避免傳統池化層損失有用信息的弊端。本文采用的池化層可以減少模型的計算量,在卷積層中的ReLU 激活函數能有效提高模型的泛化能力。
3)全局平均池化(Global Average Pooling,GAP),全連接層作為模型中參數量最多的結構層,采用全局平均池化層代替全連接層可以避免參數更新[19],降低計算量以及出現過擬合的風險。
4)批量歸一化,能夠使數據的分布保持一致,從而使得訓練深層網絡模型更加容易和穩定[20]。一般批量歸一化層添加在卷積層之后和激活函數之前,優化器會對模型的參數量與權重進行調整,在模型參數量增大的情況下,模型的訓練會更加復雜。在神經網絡模型中其他層因底層網絡的訓練更新參數而改變后面網絡層數據的分布,因此需要對每一層的輸入添加一個預處理操作。在神經網絡中常用的方法是白化預處理,但是其計算量較大,而且并不是處處可微的,但是批量歸一化能有效解決計算量大的問題。
1.1.3 Struct_Class_Net 網絡模型
本文經過多次實驗,確定模型的最終結構和參數,如表1 所示。從表1 可以看出:卷積組和批量歸一化層的組成關系,用于池化的卷積層步長為2,卷積層的所有卷積核大小都為3×3,卷積層均采用ReLU 激活函數。

表1 Struct_Class_Net 模型參數設置 Table 1 Parameters setting of Struct_Class_Net model
本文將池化層替換為卷積層,增大了網絡的參數量,但是采用全局平均池化代替全連接層,模型的參數量降低到1.23×106。因為ReLU 激活函數提高了模型的非線性泛化能力,所以在減少模型參數量的同時,提高了模型的分類效果。
結構化數據是指在二維表中存儲的數據,也是數據庫中常見的數據[21]。例如,在公共數據集UCI中的adult 數據集是典型的結構化數據,具有相同的屬性,但是每個樣本的屬性值不同。從文獻[22]中可以得知,經典的卷積神經網絡模型更適應于圖像語音等非結構化數據的深度學習模型,在結構化數據上的應用較少,因此需要對結構化數據進行處理,使結構化數據轉換為適合卷積神經網絡處理的數據類型。本文提出將原始一維結構化非平衡數據轉換為三維數組形式的多通道非平衡數據,為卷積網絡提供更多可能的特征值。一般存儲在數據庫中的數據格式為固定長度的表格,以adult 數據集為例,其數據特征數為15,其中一列是標簽列,將剩下的14 列特征值轉換為特征圖算法Data-Shuffle。該算法的目的是將結構化數據轉換為適合卷積操作的特征圖,具體步驟如下:
1)在得到數據集特征數量之后,根據特征數目M確定其特征圖的尺寸,特征圖的尺寸K×K的平方比M大,缺失部分填充0,將得到長度為K×K的特征值隨機打亂,組合成K×K的數組,記為元數組。
2)將第一步重復n次,得到n個元數組,將其橫向拼接,得到nK×K的數組A。
3)第二步重復n次得到n個A數組,將其縱向拼接,得到nK×nK的數組B。
4)重復第三步C次,將C個數組B層疊得到三維數組nK×nK×C。
5)最終得到的三維數組就是多通道特征圖,可用于卷積神經網絡的訓練。
Data-Shuffle 算法將原始的一維結構化數據轉換為多通道特征圖,在原始數據中的各個特征值之間隨機相鄰組合,使卷積神經網絡對結構化數據進行學習。Data-Shuffle 算法采用特征值隨機打亂的方式,使卷積神經網絡可以學習到更加多樣化的特征,在一定程度上減少過擬合現象。
本文以一個特征值為16(補足長度后)的數據為例,將一維結構化數據轉換為多通道特征圖的流程如圖3 所示。

圖3 一維結構化數據轉換為多通道特征圖的流程Fig.3 Procedure of converting one-dimensional structured data into multi-channel feature graph
將原始的一維結構化數據轉換為多通道的特征圖,每個通道中的特征值通過各特征之間隨機相互組合獲得,以提高卷積神經網絡提取數據特征的多樣性。因此,卷積神經網絡在轉換的多通道特征圖上能提取傳統機器學習無法得到的特征,在深度和寬度方面加深對樣本特征的學習,從而為后續模型對樣本數據的分類提供更多精細的特征。Data-Shuffle 如算法1所示。
算法1Data-Shuffle 算法


Data-Shuffle 算法將一維結構化數據轉換為多通道三維數據,通過該算法的偽代碼將數據的各個特征隨機組合,并對數據進行shuffle、reshape 和concatenate 等操作,能夠增強卷積神經網絡對結構化數據特征,同時也可以減少模型的過擬合現象。此外,該算法對數據的處理不參與模型的反饋與訓練,因此,不會增加分類模型的訓練損耗和時間。
本文基于CNN 提出更新權重加權采樣算法UWSCNN,根據分類模型每一輪的訓練結果來調整樣本的采樣權重,從而提升非平衡數據的分類準確率。
在加權隨機采樣算法中,樣本的權重由數據集中不同類別的樣本數量計算得到,計算過程如式(1)所示:

其中:Su為權重計算的超參數;Nj為類別j的樣本數量總和。本文研究二分類非平衡數據集的分類,因此j∈{0,1}。
加權隨機采樣算法導致同一個易錯樣本在多個迭代次數中訓練,存在多個與其具有相同權重的樣本競爭模型專注度的問題。因此,權重計算方法并不能有效地解決模型對非平衡數據準確分類的問題,在模型訓練樣本的采樣過程中并沒有對易錯樣本進行重點采樣。
為改善原始加權權重忽略的部分有價值的樣本,本文采用重加權更新易錯的有價值的樣本權重,根據模型分類結果的混淆矩陣設置對應的更新加權權重矩陣:。在對角線上的樣本即為分類正確的樣本,其更新加權權重為0,維持原本的權重。在副對角線上的樣本,即是分類錯誤的樣本,如加權權重矩陣ws表示將少數類樣本錯分為多數類樣本的更新加權權重。通用分類模型在訓練非平衡數據集時忽略少數類樣本特征,更多地學習多數類樣本特征。將少數類樣本分類為多數類,將多數類樣本分類為少數類樣本,其處理方式是刪除少數類樣本,因為少數類樣本在分類任務中具有更高的價值,但是在實際測試中,刪除少數類樣本并沒有提高測試集的分類準確率,所以在本文任務中向少數類樣本添加相應的加權權重,重點訓練容易混淆的樣本。
更新權值的計算方法如式(2)和式(3)所示:

其中:TTS表示真實類別為少數類,模型預測類別是少數類;TTD表示真實類別是多數類,模型預測類別是多數類;FFD表示真實類別是少數類,模型預測類別是多數類;FFS表示真實類別是多數類,模型預測類別是少數類。加權的權重計算過程為:

其中:ws表示少數類中分類錯誤的樣本比例;wd表示多數類中分類錯誤的樣本比例。
Specificity 和Recall 分別表示非平衡問題的評價指標F1 和文獻[23]中用于評價非平衡問題G-mean 的計算元素,分類結果越好,樣本集中需要更新加權的樣本數越少,模型的評價指標越接近1。在模型訓練的每一個迭代次數中給訓練分類錯誤的樣本重新賦予新的加權權重,在新一輪訓練中依據新的加權權重對樣本進行加權采樣。
在加權采樣的第一輪采樣中,分別給每一個少數類和多數類樣本賦予權重ws和wd,從第二個迭代次數訓練開始更新樣本權重,在每一輪訓練更新重加權后的樣本權重為w,其權重更新表示如式(4)所示:

對于在每個epoch 訓練中,各樣本附加權重的更新計算如式(5)所示:


由采樣概率關系可知,對于分類錯誤的少數類樣本在下一輪采樣時被采樣的概率更高,而分類正確的樣本其采樣概率較小。因此,該采樣算法能夠對易錯樣本進行重采樣并訓練,以提高對非平衡數據分類的準確度。
本文實驗的環境是PyTorch,硬件運行平臺:Intel?CoreTMi7-10700 @ 2.90 GHz 處理器,16 GB 運行內存,NVIDIA GeForce RTX 2080 SUPER顯卡。在實驗測試時采用的評價指標是F1 和G-mean,F1能夠整體評價模型的分類性能,G-mean 衡量模型對非平衡數據的分類效果。
本文實驗將UCI 公共數據集中online_shoppers_intention 數據集記為數據集shoppers,diabetes_ata_upload 數據集記為數據集diabetes。shoppers 數據集是典型的非平衡二分類數據集,由12 330 個不同用戶的樣本信息組成,每個樣本數據由18 個特征信息構成,將數據樣本分為兩類。在多通道特征圖的轉換過程中選取K=5,最終形成[5×5×n,5×5×n,C]多通道特征圖。diabetes 數據集是UCI 公開的糖尿病數據集,16 個特征數,該樣本最終形成的多通道特征圖大小為[4×4×n,4×4×n,C]。這兩個數據集都是UCI 中較先進的多特征二分類數據集。
根據混淆矩陣表,本文實驗采用多數類和少數類代替原始混淆矩陣中的正負例對評價指標F1 和G-mean 進行計算,計算過程如式(8)~式(12)所示:

本文使用的深度學習框架是PyTorch,采用卷積組搭建一個特征提取網絡架構,連接一個全連接層對卷積組提取的特征圖進行分類。為避免學習模型出現過擬合現象,在分類輸出層之前添加一個文獻[24]所提的dropout層,丟棄率為0.5。采用的優化器是文獻[25]中提出的Adam 優化器,訓練集、驗證集和測試集的比例是8∶1∶1,batch_size 大小為256。
在adult、shoppers 和diabetes 三個數據集上傳統機器學習模型與本文所提的Struct_Class_Net 模型的評價指標對比如表2~表4 所示。

表2 在adult 數據集上不同模型的評價指標對比 Table 2 Evaluation indicators comparison among different models on adult dataset

表3 在shoppers 數據集上不同模型的評價指標對比 Table 3 Evaluation indicators comparison among different models on shoppers dataset

表4 在diabetes 數據集上不同模型的評價指標對比 Table 4 Evaluation indicators comparison among different models on diabetes dataset
相比文獻[26]所提的邏輯回歸、隨機森林等傳統的機器學習,本文所提的Struct_Class_Net 結合Data-Shuffle 算法,該算法將簡單的一維結構化數據轉換為多維特征圖,并利用卷積神經網絡訓練分類模型,分類效果得到明顯提升。從表2~表4 可以看出:在diabetes 數據集上傳統機器學習中隨機森林分類模型的F1 值和G-mean 兩個指標為0.969 4 和0.970 5,但是采用數據轉換算法將結構化數據的各個特征相互組合,給卷積神經網絡模型提供了多種可能的特征關系,提高卷積神經網絡對結構化數據的特征提取能力。
傳統機器學習模型在diabetes 數據集上相較于在adult 和shoppers 數據集上的分類效果較優,特別是在shoppers 數據集上XGBoost 模型的F1 值低于0.75。傳統的機器學習模型對于數據集的要求較高,通常在進行機器學習模型分類之前需要對數據集進行預處理。傳統的機器學習模型的數據預處理和特征工程在一定程度上影響模型的分類效果,將數據預處理和數據訓練學習集成到一個模型,以提高模型的使用性能和效率。本文所提的數據格式轉換算法Data-Shuffle 可以很好地將數據預處理和特征工程集成到一個深度學習分類模型中。相比傳統機器學習模型,結合Data-Shuffle算法的Struct_Class_Net 網絡在diabetes 數據集上的分類效果較優。
邏輯回歸的時間復雜度為O(nd),n表示樣本數,d表示數據維度。隨機森林的時間復雜度O(n×loga(n)×d×k),n為樣本總數,d為數據維度,k為決策樹的數量。支持向量機的時間復雜度O(nkd),k為支持向量數,d為數據維度。XGBoost 的時間復雜度O(Kd||X||0+||X||0logan),K表示XGBoost 中樹的總數,d表示樹的最大深度,||X||0表示數據集中的非缺失樣本數。AdaBoost 模型是一種典型的犧牲時間復雜度來提升分類效果的集成學習模型。Struct_Class_Net模型的時間復雜度為為卷積神經網絡的深度,l表示卷積神經網絡層數,Cl-1表示第l-1 層的輸入通道數,Cl表示第l層卷積神經網絡的輸出通道數。Struct_Class_Net 網絡的時間復雜度與其本身卷積層相關,因為結構化數據的本身特性,所以本文網絡的卷積層深度不需要很深,就可以大幅降低卷積神經網絡的時間復雜度。
本文實驗對比SMOTECNN、BSMOTECNN、SMOTECNN+CS 等采樣算法的分類效果,其中SMOTECNN+CS 和DB-SMOTECNN+CS 中的CS 表示采用文獻[11]中的的代價敏感算法。在adult、shoppers和diabetes 三個數據集上不同算法的實驗結果對比如表5~表7 所示。

表5 在adult 數據集上不同算法的實驗結果對比 Table 5 Experimental results comparison among different algorithms on adult dataset

表6 在shoppers 數據集上不同算法的實驗結果對比 Table 6 Experimental results comparison among different algorithms on shoppers dataset

表7 在diabetes 數據集上不同算法的實驗結果對比 Table 7 Experimental results comparison among different algorithms on diabetes dataset
本文實驗的加權采樣算法(Weighted SamplingCNN)和更新權重加權采樣算法(UWSCNN)相較于傳統生成樣本類的非平衡數據處理算法的性能指標較高。從表7 可以看出:SMOTECNN、BSMOTECNN 等算法的F1 值和G-mean 均低于0.98,加權采樣算法高于0.98。實驗結果驗證了按照某種規律或算法生成新樣本的方法會生成一部分的干擾樣本,容易混淆模型對數據樣本的分類,而加權采樣算法對權重較大的樣本進行多次采樣,使模型重點訓練重要的樣本,讓模型訓練最原始的樣本特征,避免學習生成樣本的特征造成模型分類混亂。因此,UWSCNN 算法能夠有效解決生成樣本質量較低的問題。
經過對比上述采樣算法和更新權重加權采樣算法UWSCNN 的分類效果,文獻[4]的SMOTECNN 采樣算法和文獻[6]的BSMOTECNN 采樣算法根據某種規律生成少數樣本,在模型進行分類訓練時,容易對數據結果造成混淆,在一定程度上降低模型的分類效率。ADASYNCNN 借助樣本的不同權重生成不同數量的樣本。對比現有生成類采樣算法,DB-SMOTECNN 添加了代價敏感算法,但是相較于UWSCNN 采樣算法的分類效果較差。UWSCNN 使得模型對原始的少數類樣本重點訓練以學習更多的樣本,提升模型對樣本分類的準確率。
本文提出基于卷積神經網絡的結構化非平衡數據分類算法。基于VGG 網絡模型構建具有較少參數量的卷積組,將原始非平衡一維結構化數據轉換為三維數組形式的多通道非平衡數據,用于一維結構化數據的分類。設計更新權重加權采樣算法,在模型分類過程中關注易產生混淆的高質量樣本,提升對少數類樣本的分類效率。實驗結果表明,該算法能有效提高對非平衡數據的分類性能。由于本文所提的算法主要作用于二分類非平衡數據集,因此后續將在多類別的非平衡數據集中進行實驗,以提高分類的準確率。