黎 旭,陳家兌,吳永明,2,3,宗文澤
1.貴州大學 現代制造技術教育部重點實驗室,貴陽 550025
2.貴州大學 機械工程學院,貴陽 550025
3.貴州大學 公共大數據國家重點實驗室,貴陽 550025
制造業海量生產數據中存在較多不平衡數據。這些不平衡數據大多數是原材料配比異常、設備故障、零部件質量缺陷等生產異常所產生的數據。如在磷酸制造流程中,由于原料配比異常情況較為稀少所導致的總體數據分布不均衡,易造成原料配比監測系統對異常情況識別率偏低,最終影響產物品質。因此,對不平衡數據準確分類,進而指導生產、實現智能制造具有重要意義[1]。但是傳統分類器旨在提高整體數據的分類準確率,而忽略對少數類樣本的分類性能。然而在不平衡數據集中,數量較少的一類樣本往往比其他類樣本更具價值,錯分類造成的代價更高。因此,提高對不平衡數據中少數類樣本分類準確率已成為當下研究熱點之一。目前,解決不平衡數據分類問題主要是算法和數據兩個層面。算法層面主要是通過集成學習和代價敏感學習等優化分類模型;數據層面主要通過改變訓練集中樣本的分布和特征的選擇來提高少數類的分類精度,其中數據過采樣是數據層面最具代表性的方法之一[2]。
數據過采樣是實現不平衡數據平衡的重要手段,主要通過增加少數類樣本數量來提高少數類的分類性能,最簡單的過采樣方法是隨機復制少數類,從而使數據達到平衡,但是單純復制少數類,容易導致過擬合。為解決此類問題,Chawla 等[3]提出了合成少數過采樣技術(synthetic minority oversampling technology,SMOTE),它是基于隨機過采樣算法的一種改進方案,該方案簡單有效,能大幅度改善數據集的平衡性[4]。He 等[5]提出了一種基于樣本分布改進的自適應過采樣方法ADASYN(adaptive synthetic sampling method),能有效提升分類器分類性能[6]。Douzas 等[7]提出一種基于聚類[8]的過采樣方法K-means SMOTE,該算法能有效解決類間和類內失衡問題[9],但其過采樣結果很大程度上取決于Kmeans 聚類的效果,易放大少數類樣本的誤差,降低分類器的分類精度。
針對上述問題,本文提出一種結合改進的SMOTE和局部離群因子(local outlier factor,LOF)的過采樣策略K-means SMOTE-LOF,通過公共數據集的性能測試,驗證了算法的有效性。并利用本文算法對磷酸生產中的不平衡數據進行過采樣,解決了磷酸生產過程中原料配比異常檢測的問題。
下面簡單總結了SMOTE 方法、K-means SMOTE方法和LOF算法的基本原理及算法流程。
SMOTE過采樣算法是基于隨機過采樣的一種改進方案,該算法的基本思想是對少數類樣本進行分析,并根據少數類樣本人工合成新樣本添加到數據集中。SMOTE 人工合成樣本過程中,少數類樣本在同類近鄰樣本中隨機選擇一個樣本,在兩樣本之間進行隨機插值,對每個少數類樣本合成數量相同的樣本。SMOTE合成的新樣本融合了兩個相鄰樣本的特征,與隨機過采樣相比,一定程度上增加了少數類樣本的多樣性,但是該算法在最近鄰的選擇上存在一定的盲目性,容易造成決策邊界混淆的問題。K-means SMOTE過采樣算法[7]是基于K-means 和SMOTE 的一種少數類過采樣改進方案,旨在彌補SMOTE 算法的缺陷。該算法通過對整個樣本空間進行K-means 聚類,避免在不安全區域合成樣本,有效提高了少數類樣本的分類準確率。相比于其他改進的SMOTE算法,K-means SMOTE更加簡潔。實驗結果表明,此方法能有效改善合成樣本邊緣化問題。
局部離群因子(LOF)是一種基于密度的異常檢測算法。Wang等[10]利用LOF結合邊界判別噪聲檢測對噪聲像素進行識別。Chen等[11]提出一種基于LOF的鋰離子電池組電壓故障檢測方法,將模型的系統識別算法融合到離群點檢測算法中,通過離群值濾波方法,計算局部離群因子值對故障電池進行檢測。LOF 和多數算法的區別在于使用樣本點與其鄰域的密度比值來表示離群點程度,量化對象離群的程度,通過評價觀測數據相對于相鄰數據的局部偏差,利用局部異常因子描述參數的異常程度,而且通過樣本的鄰域計算密度,而不是全局計算,不會由于數據集中不同區域密度的分散情況不同而錯誤地將正常點判定為異常點[12]。
LOF算法具體步驟如下:
步驟1 計算樣本p的第k距離dk(p)。
在樣本空間C內,將兩個樣本p和o的距離記為d(p,o),樣本p的第k距離記作dk(p),k為p的最近鄰樣本數目。
步驟2 計算p的第k距離鄰域Nk(p)。
樣本p的第k距離鄰域為p的第k距離及以內的所有點,包括第k距離的點,即:

步驟3 計算樣本p與o的可達距離rdk(p,o):

步驟4 計算局部可達密度lrdk(p):

步驟5 計算局部離群因子LOF:

局部離群因子表示為樣本p的鄰域Nk(p)的局部可達密度與點p的局部可達密度之比的平均數。這個比值越大于1,說明p的密度小于其鄰域點密度,p越可能是異常點。
K-means SMOTE 算法通過過濾簇群解決樣本類內和類間不平衡問題,過濾少數類占比低的簇,在少數類主導的簇中進行樣本合成。然而,K-means SMOTE方法仍存在三個待改進的點。
(1)決策邊界混淆
如圖1(a)所示,在樣本生成中,如果少數類樣本處在多數類樣本集的分布邊緣,則由此少數類樣本和相鄰同類樣本產生的合成樣本也會處于該邊緣,且邊緣化程度不斷加劇,從而模糊了多數類樣本與少數類樣本的邊界,使其邊界的模糊程度不斷升高。雖然數據集的平衡性得到了一定程度改善,但是加大了分類難度。由于SMOTE 算法只是簡單地在線段之間合成新樣本,線段關系過于單一,無法適應高維特征樣本,合成樣本中包含的少數類樣本特征會隨著維度的增加而減少,從而偏離潛在的真實樣本。因此,在合成樣本過程中參考更多的少數類樣本,融合多個樣本的特征是一種有效的解決方法。

圖1 合成樣本分布對比Fig.1 Synthetic sample distribution comparison
(2)過采樣規模盲目
K-means SMOTE 算法在每個少數類樣本上合成相同數目的新樣本,忽視了樣本的分類難度和分布情況差異。如果能充分利用少數類樣本間的相似度信息,再以此決定合成樣本的數目,將會進一步提高不平衡數據集的分類精度。
(3)合成樣本離群點
過采樣算法根據現有的樣本,人工合成新樣本,以此來提升分類模型效率。但是合成樣本與真實樣本之間并不完全相同,例如少數類與多數類邊界合成的樣本可能同時包含了多數類樣本特征和少數類樣本特征,導致合成的樣本中出現離群點。全局樣本分布不均衡會影響基于聚類的離群點檢測算法的準確率,而基于密度的異常檢測算法能有效解決失衡分布的問題[13]。
針對2.1 節提出的三個缺陷,本文提出結合改進的SMOTE 和局部離群因子(LOF)的過采樣策略,彌補了以上缺陷。
(1)針對合成樣本邊緣化和合成樣本無法適應潛在的少數類特征問題,本文提出一種改進的SMOTE 過采樣策略。令樣本維度為n,根據最近鄰距離使用輪盤賭算法隨機選擇n次最近鄰樣本,對每個維度單獨進行隨機插值,以此合成新樣本。此外,為避免合成樣本與原始樣本重疊,引入Sigmoid函數來平滑新樣本分布,使合成樣本更多分布在原始樣本之間的區域,防止過擬合。每個維度值按照式(5)進行合成:

其中,dimk為近鄰樣本的維度值,w為[-3,3]之間的隨機實數。
在邊界樣本中,噪聲樣本數量遠少于正常樣本,因此通過融合多個邊界同類樣本的特征,可以降低合成樣本中不同類樣本特征的占比權重,如圖1(b)所示,從而解決了合成樣本混淆決策邊界問題,使得合成樣本更接近于同類樣本集,擴寬分類器的決策區域。
改進的SMOTE算法的具體實現步驟如下:

(2)針對過采樣規模盲目性的問題,本文采用Kmeans 聚類算法,根據聚類結果計算樣本相似度,即少數類樣本與其所屬簇中心的距離(相似度越大,距離越小),每個少數類根據相似度調整合成樣本數,相似度越大,合成樣本數越多。理論上,聚類中心能最大程度上代表某一類的樣本特征[8],因此使用樣本與聚類中心的距離作為相似度信息是可行的。同時,對樣本稀疏區域進行有約束的過采樣,能夠充分利用樣本間的分布特征,維持少數類樣本的原始分布特性。
過采樣規模調整算法的具體實現步驟如下:


(3)對于合成樣本誤差的問題,本文引入LOF 算法來剔除離群值,通過計算每個少數類樣本與合成樣本的局部密度和鄰域密度,判斷合成樣本的可信度。LOF算法通過計算樣本點與其鄰域密度的比值,能極大地降低樣本分布不均衡的影響。
改進的K-means SMOTE-LOF算法流程首先利用K-means 聚類對整個輸入空間進行聚類,合成過程中,利用改進的SMOTE算法合成新樣本,最后應用LOF對合成樣本和少數類樣本進行異常值檢測,將合成樣本和訓練集共同訓練分類器。具體實現步驟如下:
步驟1 計算待合成少數類樣本數量:

其中,Nmaj和Nmin為簇內多數類與少數類樣本數量;α為過采樣率,當α=1 時,合成樣本數等于多數類與少數類之差。
步驟2 對數據集X進行K-means 聚類,得到c個簇和聚類中心oi。
步驟3 計算每簇的不平衡率IR=Nmaj/Nmin,去除不平衡率大于不平衡閾值irt的簇。
步驟4 通過計算過濾后每簇少數類樣本間的距離之和,得到每個簇的稀疏度sp:

步驟5 根據稀疏度計算每簇需要合成樣本數量g:

步驟6 對每個簇,計算聚類中心oi與每個少數類的距離,根據距離計算每個樣本需要合成數目r:

其中,d(xj,oi)為樣本j與聚類中心oi的歐式距離。
步驟7 對每個需要合成樣本的少數類樣本,找到K個同類近鄰樣本。對樣本的M維度,按照輪盤賭算法選擇M次近鄰樣本,距離越近,選擇概率越大。概率P為:

根據2.2節中式(5)合成樣本。
步驟8 將合成樣本加入整個少數類樣本集中,利用LOF算法對此樣本集進行異常值檢測,刪除離群因子值大于閾值的樣本。
改進的算法在樣本合成過程中,不同維度參考不同的同類樣本,更加符合高維數據之間的樣本關系,而不是簡單的線性關系。算法流程如圖2所示。

圖2 算法流程圖Fig.2 Algorithm flowchart
改進的K-means SMOTE-LOF 算法中,在數據集進行K-means 聚類和分配過采樣權重過程中,僅計算樣本點與聚類中心之間的歐式距離,其時間復雜度為O(l×k×n),l為迭代次數,k為簇數,一般l、k都可認為常量。在改進SMOTE 算法合成樣本階段,由于需要針對樣本的每個維度進行單獨插值,時間復雜度為O(d×n),d為數據維度,可認為常量。LOF 算法時間復雜度為O(n)[14]。因此,改進的K-means SMOTE-LOF算法總體時間復雜度為O(n),空間復雜度同為O(n)。
在不平衡數據集中,用于評估分類器性能的各種評估指標并不完全適用。針對此類問題,專門提出了用于處理不平衡數據的評價指標[15]。分類評價指標是將每個樣本的真實類別與預測類別進行比較,通過構建一個混淆矩陣來評估分類效果,如表1中行代表樣本的真實類別,列代表分類算法的預測類別,其中正類為少數類,反類為多數類。TP、TN為預測正確的少數類和多數類樣本數量;FN、FP為預測錯誤的少數類和多數類樣本數量。

表1 混淆矩陣Table 1 Confusion matrix
精確值(precision)和召回率(recall)的計算公式如下:

本文采用F1-score、G-mean、AUC 作為分類效果的評價標準。F1-score為精確值和召回率的組合,只有當二者都比較大時,F1-score 值才能得到比較大的數值,因此它能有效衡量不平衡數據分類的效果,計算公式如下:

從式(13)可看出,只有當少數類樣本分類精度和多數類分類精度都較大時,G-mean 值才能較大。因此,F1-score值和G-mean值常作為衡量數據集整體分類性能的評價指標。
不平衡分類還有一個十分常用的評價指標AUC值,即接收機工作特征曲線(receiver operating characteristic curve,ROC)下的面積,能客觀反映對正樣本、負樣本綜合預測的能力,還能消除樣本傾斜對分類效果的影響。ROC 曲線是反映敏感度和特異度連續變量的綜合指標,它的橫坐標是假陽性率(false positive rate,FPR),縱坐標為真陽性率(true positive rate,TPR),兩者計算公式如下:

通過調整分類器閾值,生成若干個點,點連線之后的曲線即是ROC 曲線,曲線下的面積即是AUC 值,AUC值越接近1,則代表分類結果越準確。
本次實驗從UCI 上下載了4 個數據集,4 個數據集的組成如表2 所示,其中目標類為少數類,其余類都合并為多數類[16]。

表2 實驗數據的特征和分布Table 2 Features and distribution of experimental data
為驗證改進的K-means SMOTE-LOF算法的有效性,應用SMOTE、ADASYN、K-means SMOTE 和Kmeans SMOTE-LOF算法分別在數據集中進行對比實驗,并且與傳統分類結果進行對比。分類器采用支持向量機(support vector machine,SVM),樸素貝葉斯(Na?ve Bayes,NB)、決策樹(decision trees,DT)。
實驗中的算法參數如表3 所示,SMOTE 算法中的KNN最近鄰搜索的最近鄰數為5,過采樣率為1,即合成樣本數量為數據集中多數類樣本數量減去少數類樣本數量,輸出的結果中少數類與多數類比例為1∶1。Kmeans SMOTE和改進的K-means SMOTE-LOF算法中K-means 聚類采用Mirzaei 等[16]初始點選擇策略,即聚類簇個數設置為數據集中樣本數開方后取整。初始中心點選擇則依據與樣本中心點的距離來選取,計算所有樣本點與數據集中心點的歐氏距離并按降序依次排列,均勻地從降序排列的樣本中抽出k個中心點作為初始中心點。誤差閾值設置為0.01,最大迭代次數設置為200。LOF 算法中最近鄰數設置為5,局部離群因子閾值設置為1.5,即離群因子超過1.5的樣本點可認為是異常值[17-18]。

表3 算法參數Table 3 Algorithm parameters
上述四種過采樣模型是不平衡數據分類預測中常用的模型,各種模型的性能各有優缺點。為客觀比較各類方法和提升模型的泛化能力,防止模型過擬合,本文采用五折交叉驗證得到最終實驗結果,用原始數據樣本的70%作為訓練集,應用這一部分樣本和合成的樣本對分類器進行訓練,余下30%樣本作為測試集。為得到真實的實驗結果,合成的數據樣本只參與分類器的訓練階段,測試階段的數據全為真實數據。
表4分別給出了四種方法在四個數據集上的F1-score值、G-mean值和AUC值,每行的黑色加粗的數字表示該行的最大值。由實驗結果可知,本文提出的算法較其他對比算法表現更好,對于少數類分類更加準確,G-mean 值和F1-score 值相較其他方法提升了5%~8%。提高少數類分類的準確率往往會降低分類器對多數類分類的準確率,實驗結果中,SMOTE 算法相較于ADASYN 算法表現更好,這是因為ADASYN 算法傾向于在多數類與少數類邊界上合成更多的數據,對難分類的樣本進行更多的訓練,以此來提高分類精度。而Kmeans SMOTE算法在一些數據集上表現得比除本文方法外的其他算法更好,這主要是因為K-means SMOTE算法能夠消除類間和類內不平衡,在一定程度上,Kmeans SMOTE 算法在K-means 聚類和過濾簇群的過程中去除了原始數據中的異常點和離群點,因此分類準確率得以提高。本文算法繼承了K-means SMOTE 算法上述優點,又在此基礎上改進了SMOTE算法,參考了更多的少數類樣本,使得合成樣本更加合理。此外,在合成樣本之后,對合成樣本再進行去除異常點和離群點的操作,最大程度降低合成樣本的誤差,更好地訓練分類器模型。

表4 不同過采樣算法的實驗結果Table 4 Experimental results of different oversampling algorithms
磷酸生產過程是用無機酸分解磷礦粉,分離出粗磷酸,再經凈化后制得磷酸產物,原料配比異常會導致毒性元素進入溶液,引起催化劑快速失活,從而造成前處理脫除效果不佳,殘留雜質過多,對磷酸制備過程和下游產品質量均有較大影響[19]。因此,監控生產過程中原料配比是否異常,分析異常數據具有重要意義。
實驗研究對象選擇了某集團硫酸分解制取磷酸工藝數據,數據由1 440組磷礦漿流量、催化劑流量和稀磷酸流量組成,其中原料配比異常的數據有140組,如表5所示。

表5 原料配比的影響Table 5 Influence of raw material ratio
合成數據分布情況如圖3所示,藍點依次為SMOTE算法、ADASYN算法、K-means SMOTE算法及改進的K-means SMOTE-LOF算法合成樣本,皆為數據配比不均數據,黃點為正常數據。可以看出,原始數據中正常原料配比樣本與異常原料配比樣本邊界混淆。由圖3可知,SMOTE合成的樣本具有盲目性,沒有針對少數類樣本分布的特點進行合成,而ADASYN 算法合成的樣本集中于多數類樣本與少數類樣本重合區域,這一類合成的樣本同時包含多數類與少數類的特征,訓練過程難以識別,導致分類效果不佳。K-means SMOTE算法在合成樣本之前將包含少數類特征的樣本識別并限制其合成樣本,很大程度上減少了合成樣本的誤差,但是合成的樣本更加密集,在分類時容易導致過擬合,模型的泛化能力下降。而改進的K-means SMOTE-LOF合成的樣本參考更多的原始樣本,從而使得合成樣本分布更為合理。

圖3 不同過采樣策略合成數據分布Fig.3 Synthetic data distribution with different oversampling strategies
不同算法實驗結果對比如圖4 所示。由圖4 可知,NB 和LR 分類器中,未處理數據集的查準率(precision)為1,而查全率(recall)僅有0.2,表明不存在多數類樣本被預測為少數類,而大量的少數類樣本被預測為多數類,這是由于多數類樣本和少數類樣本在數量上的傾斜,以總體精度為目的的分類模型往往會忽略少數類,造成少數類分類精度較低。圖4 顯示F1-score 指標和G-mean指標中,改進的K-means SMOTE-LOF算法表現突出,說明該算法能在不降低分類器預測多數類的準確率前提下顯著提升分類器對少數類預測的性能。同時,改進的K-means SMOTE-LOF 算法相對于其他算法AUC 值提升最大,說明在所有分類器上本文提出的算法均取得最佳效果。此外,經過采樣處理后,SVM、NB、Adaboost、DT、LR 模型對原料配比不均數據AUC值分別提升為14.00%、19.85%、11.76%、4.73%、31.37%。

圖4 不同算法對實驗數據的性能Fig.4 Performance of different algorithms on experimental data
本文針對現有過采樣算法存在樣本合成過程中誤差大及合成樣本邊緣化的問題,提出了一種基于局部離群因子和改進的K-means SMOTE 的不平衡數據分類算法。通過公共數據集驗證了本文算法的可行性和優越性,最后以磷酸生產數據為例,對原料配比不平衡數據進行分類實驗,并與SMOTE、ADASYN 和K-means SMOTE 算法的分類結果進行對比,結果表明本文算法在合成樣本可信度和對少數類數據預測上更具有優勢,能對生產中的不平衡數據進行有效分類。