黎 旭,陳家兌,吳永明,2,3,宗文澤
1.貴州大學(xué) 現(xiàn)代制造技術(shù)教育部重點實驗室,貴陽 550025
2.貴州大學(xué) 機械工程學(xué)院,貴陽 550025
3.貴州大學(xué) 公共大數(shù)據(jù)國家重點實驗室,貴陽 550025
制造業(yè)海量生產(chǎn)數(shù)據(jù)中存在較多不平衡數(shù)據(jù)。這些不平衡數(shù)據(jù)大多數(shù)是原材料配比異常、設(shè)備故障、零部件質(zhì)量缺陷等生產(chǎn)異常所產(chǎn)生的數(shù)據(jù)。如在磷酸制造流程中,由于原料配比異常情況較為稀少所導(dǎo)致的總體數(shù)據(jù)分布不均衡,易造成原料配比監(jiān)測系統(tǒng)對異常情況識別率偏低,最終影響產(chǎn)物品質(zhì)。因此,對不平衡數(shù)據(jù)準確分類,進而指導(dǎo)生產(chǎn)、實現(xiàn)智能制造具有重要意義[1]。但是傳統(tǒng)分類器旨在提高整體數(shù)據(jù)的分類準確率,而忽略對少數(shù)類樣本的分類性能。然而在不平衡數(shù)據(jù)集中,數(shù)量較少的一類樣本往往比其他類樣本更具價值,錯分類造成的代價更高。因此,提高對不平衡數(shù)據(jù)中少數(shù)類樣本分類準確率已成為當(dāng)下研究熱點之一。目前,解決不平衡數(shù)據(jù)分類問題主要是算法和數(shù)據(jù)兩個層面。算法層面主要是通過集成學(xué)習(xí)和代價敏感學(xué)習(xí)等優(yōu)化分類模型;數(shù)據(jù)層面主要通過改變訓(xùn)練集中樣本的分布和特征的選擇來提高少數(shù)類的分類精度,其中數(shù)據(jù)過采樣是數(shù)據(jù)層面最具代表性的方法之一[2]。
數(shù)據(jù)過采樣是實現(xiàn)不平衡數(shù)據(jù)平衡的重要手段,主要通過增加少數(shù)類樣本數(shù)量來提高少數(shù)類的分類性能,最簡單的過采樣方法是隨機復(fù)制少數(shù)類,從而使數(shù)據(jù)達到平衡,但是單純復(fù)制少數(shù)類,容易導(dǎo)致過擬合。為解決此類問題,Chawla 等[3]提出了合成少數(shù)過采樣技術(shù)(synthetic minority oversampling technology,SMOTE),它是基于隨機過采樣算法的一種改進方案,該方案簡單有效,能大幅度改善數(shù)據(jù)集的平衡性[4]。He 等[5]提出了一種基于樣本分布改進的自適應(yīng)過采樣方法ADASYN(adaptive synthetic sampling method),能有效提升分類器分類性能[6]。Douzas 等[7]提出一種基于聚類[8]的過采樣方法K-means SMOTE,該算法能有效解決類間和類內(nèi)失衡問題[9],但其過采樣結(jié)果很大程度上取決于Kmeans 聚類的效果,易放大少數(shù)類樣本的誤差,降低分類器的分類精度。
針對上述問題,本文提出一種結(jié)合改進的SMOTE和局部離群因子(local outlier factor,LOF)的過采樣策略K-means SMOTE-LOF,通過公共數(shù)據(jù)集的性能測試,驗證了算法的有效性。并利用本文算法對磷酸生產(chǎn)中的不平衡數(shù)據(jù)進行過采樣,解決了磷酸生產(chǎn)過程中原料配比異常檢測的問題。
下面簡單總結(jié)了SMOTE 方法、K-means SMOTE方法和LOF算法的基本原理及算法流程。
SMOTE過采樣算法是基于隨機過采樣的一種改進方案,該算法的基本思想是對少數(shù)類樣本進行分析,并根據(jù)少數(shù)類樣本人工合成新樣本添加到數(shù)據(jù)集中。SMOTE 人工合成樣本過程中,少數(shù)類樣本在同類近鄰樣本中隨機選擇一個樣本,在兩樣本之間進行隨機插值,對每個少數(shù)類樣本合成數(shù)量相同的樣本。SMOTE合成的新樣本融合了兩個相鄰樣本的特征,與隨機過采樣相比,一定程度上增加了少數(shù)類樣本的多樣性,但是該算法在最近鄰的選擇上存在一定的盲目性,容易造成決策邊界混淆的問題。K-means SMOTE過采樣算法[7]是基于K-means 和SMOTE 的一種少數(shù)類過采樣改進方案,旨在彌補SMOTE 算法的缺陷。該算法通過對整個樣本空間進行K-means 聚類,避免在不安全區(qū)域合成樣本,有效提高了少數(shù)類樣本的分類準確率。相比于其他改進的SMOTE算法,K-means SMOTE更加簡潔。實驗結(jié)果表明,此方法能有效改善合成樣本邊緣化問題。
局部離群因子(LOF)是一種基于密度的異常檢測算法。Wang等[10]利用LOF結(jié)合邊界判別噪聲檢測對噪聲像素進行識別。Chen等[11]提出一種基于LOF的鋰離子電池組電壓故障檢測方法,將模型的系統(tǒng)識別算法融合到離群點檢測算法中,通過離群值濾波方法,計算局部離群因子值對故障電池進行檢測。LOF 和多數(shù)算法的區(qū)別在于使用樣本點與其鄰域的密度比值來表示離群點程度,量化對象離群的程度,通過評價觀測數(shù)據(jù)相對于相鄰數(shù)據(jù)的局部偏差,利用局部異常因子描述參數(shù)的異常程度,而且通過樣本的鄰域計算密度,而不是全局計算,不會由于數(shù)據(jù)集中不同區(qū)域密度的分散情況不同而錯誤地將正常點判定為異常點[12]。
LOF算法具體步驟如下:
步驟1 計算樣本p的第k距離dk(p)。
在樣本空間C內(nèi),將兩個樣本p和o的距離記為d(p,o),樣本p的第k距離記作dk(p),k為p的最近鄰樣本數(shù)目。
步驟2 計算p的第k距離鄰域Nk(p)。
樣本p的第k距離鄰域為p的第k距離及以內(nèi)的所有點,包括第k距離的點,即:
步驟3 計算樣本p與o的可達距離rdk(p,o):
步驟4 計算局部可達密度lrdk(p):
步驟5 計算局部離群因子LOF:
局部離群因子表示為樣本p的鄰域Nk(p)的局部可達密度與點p的局部可達密度之比的平均數(shù)。這個比值越大于1,說明p的密度小于其鄰域點密度,p越可能是異常點。
K-means SMOTE 算法通過過濾簇群解決樣本類內(nèi)和類間不平衡問題,過濾少數(shù)類占比低的簇,在少數(shù)類主導(dǎo)的簇中進行樣本合成。然而,K-means SMOTE方法仍存在三個待改進的點。
(1)決策邊界混淆
如圖1(a)所示,在樣本生成中,如果少數(shù)類樣本處在多數(shù)類樣本集的分布邊緣,則由此少數(shù)類樣本和相鄰?fù)悩颖井a(chǎn)生的合成樣本也會處于該邊緣,且邊緣化程度不斷加劇,從而模糊了多數(shù)類樣本與少數(shù)類樣本的邊界,使其邊界的模糊程度不斷升高。雖然數(shù)據(jù)集的平衡性得到了一定程度改善,但是加大了分類難度。由于SMOTE 算法只是簡單地在線段之間合成新樣本,線段關(guān)系過于單一,無法適應(yīng)高維特征樣本,合成樣本中包含的少數(shù)類樣本特征會隨著維度的增加而減少,從而偏離潛在的真實樣本。因此,在合成樣本過程中參考更多的少數(shù)類樣本,融合多個樣本的特征是一種有效的解決方法。
圖1 合成樣本分布對比Fig.1 Synthetic sample distribution comparison
(2)過采樣規(guī)模盲目
K-means SMOTE 算法在每個少數(shù)類樣本上合成相同數(shù)目的新樣本,忽視了樣本的分類難度和分布情況差異。如果能充分利用少數(shù)類樣本間的相似度信息,再以此決定合成樣本的數(shù)目,將會進一步提高不平衡數(shù)據(jù)集的分類精度。
(3)合成樣本離群點
過采樣算法根據(jù)現(xiàn)有的樣本,人工合成新樣本,以此來提升分類模型效率。但是合成樣本與真實樣本之間并不完全相同,例如少數(shù)類與多數(shù)類邊界合成的樣本可能同時包含了多數(shù)類樣本特征和少數(shù)類樣本特征,導(dǎo)致合成的樣本中出現(xiàn)離群點。全局樣本分布不均衡會影響基于聚類的離群點檢測算法的準確率,而基于密度的異常檢測算法能有效解決失衡分布的問題[13]。
針對2.1 節(jié)提出的三個缺陷,本文提出結(jié)合改進的SMOTE 和局部離群因子(LOF)的過采樣策略,彌補了以上缺陷。
(1)針對合成樣本邊緣化和合成樣本無法適應(yīng)潛在的少數(shù)類特征問題,本文提出一種改進的SMOTE 過采樣策略。令樣本維度為n,根據(jù)最近鄰距離使用輪盤賭算法隨機選擇n次最近鄰樣本,對每個維度單獨進行隨機插值,以此合成新樣本。此外,為避免合成樣本與原始樣本重疊,引入Sigmoid函數(shù)來平滑新樣本分布,使合成樣本更多分布在原始樣本之間的區(qū)域,防止過擬合。每個維度值按照式(5)進行合成:
其中,dimk為近鄰樣本的維度值,w為[-3,3]之間的隨機實數(shù)。
在邊界樣本中,噪聲樣本數(shù)量遠少于正常樣本,因此通過融合多個邊界同類樣本的特征,可以降低合成樣本中不同類樣本特征的占比權(quán)重,如圖1(b)所示,從而解決了合成樣本混淆決策邊界問題,使得合成樣本更接近于同類樣本集,擴寬分類器的決策區(qū)域。
改進的SMOTE算法的具體實現(xiàn)步驟如下:
(2)針對過采樣規(guī)模盲目性的問題,本文采用Kmeans 聚類算法,根據(jù)聚類結(jié)果計算樣本相似度,即少數(shù)類樣本與其所屬簇中心的距離(相似度越大,距離越?。?,每個少數(shù)類根據(jù)相似度調(diào)整合成樣本數(shù),相似度越大,合成樣本數(shù)越多。理論上,聚類中心能最大程度上代表某一類的樣本特征[8],因此使用樣本與聚類中心的距離作為相似度信息是可行的。同時,對樣本稀疏區(qū)域進行有約束的過采樣,能夠充分利用樣本間的分布特征,維持少數(shù)類樣本的原始分布特性。
過采樣規(guī)模調(diào)整算法的具體實現(xiàn)步驟如下:
(3)對于合成樣本誤差的問題,本文引入LOF 算法來剔除離群值,通過計算每個少數(shù)類樣本與合成樣本的局部密度和鄰域密度,判斷合成樣本的可信度。LOF算法通過計算樣本點與其鄰域密度的比值,能極大地降低樣本分布不均衡的影響。
改進的K-means SMOTE-LOF算法流程首先利用K-means 聚類對整個輸入空間進行聚類,合成過程中,利用改進的SMOTE算法合成新樣本,最后應(yīng)用LOF對合成樣本和少數(shù)類樣本進行異常值檢測,將合成樣本和訓(xùn)練集共同訓(xùn)練分類器。具體實現(xiàn)步驟如下:
步驟1 計算待合成少數(shù)類樣本數(shù)量:
其中,Nmaj和Nmin為簇內(nèi)多數(shù)類與少數(shù)類樣本數(shù)量;α為過采樣率,當(dāng)α=1 時,合成樣本數(shù)等于多數(shù)類與少數(shù)類之差。
步驟2 對數(shù)據(jù)集X進行K-means 聚類,得到c個簇和聚類中心oi。
步驟3 計算每簇的不平衡率IR=Nmaj/Nmin,去除不平衡率大于不平衡閾值irt的簇。
步驟4 通過計算過濾后每簇少數(shù)類樣本間的距離之和,得到每個簇的稀疏度sp:
步驟5 根據(jù)稀疏度計算每簇需要合成樣本數(shù)量g:
步驟6 對每個簇,計算聚類中心oi與每個少數(shù)類的距離,根據(jù)距離計算每個樣本需要合成數(shù)目r:
其中,d(xj,oi)為樣本j與聚類中心oi的歐式距離。
步驟7 對每個需要合成樣本的少數(shù)類樣本,找到K個同類近鄰樣本。對樣本的M維度,按照輪盤賭算法選擇M次近鄰樣本,距離越近,選擇概率越大。概率P為:
根據(jù)2.2節(jié)中式(5)合成樣本。
步驟8 將合成樣本加入整個少數(shù)類樣本集中,利用LOF算法對此樣本集進行異常值檢測,刪除離群因子值大于閾值的樣本。
改進的算法在樣本合成過程中,不同維度參考不同的同類樣本,更加符合高維數(shù)據(jù)之間的樣本關(guān)系,而不是簡單的線性關(guān)系。算法流程如圖2所示。
圖2 算法流程圖Fig.2 Algorithm flowchart
改進的K-means SMOTE-LOF 算法中,在數(shù)據(jù)集進行K-means 聚類和分配過采樣權(quán)重過程中,僅計算樣本點與聚類中心之間的歐式距離,其時間復(fù)雜度為O(l×k×n),l為迭代次數(shù),k為簇數(shù),一般l、k都可認為常量。在改進SMOTE 算法合成樣本階段,由于需要針對樣本的每個維度進行單獨插值,時間復(fù)雜度為O(d×n),d為數(shù)據(jù)維度,可認為常量。LOF 算法時間復(fù)雜度為O(n)[14]。因此,改進的K-means SMOTE-LOF算法總體時間復(fù)雜度為O(n),空間復(fù)雜度同為O(n)。
在不平衡數(shù)據(jù)集中,用于評估分類器性能的各種評估指標并不完全適用。針對此類問題,專門提出了用于處理不平衡數(shù)據(jù)的評價指標[15]。分類評價指標是將每個樣本的真實類別與預(yù)測類別進行比較,通過構(gòu)建一個混淆矩陣來評估分類效果,如表1中行代表樣本的真實類別,列代表分類算法的預(yù)測類別,其中正類為少數(shù)類,反類為多數(shù)類。TP、TN為預(yù)測正確的少數(shù)類和多數(shù)類樣本數(shù)量;FN、FP為預(yù)測錯誤的少數(shù)類和多數(shù)類樣本數(shù)量。
表1 混淆矩陣Table 1 Confusion matrix
精確值(precision)和召回率(recall)的計算公式如下:
本文采用F1-score、G-mean、AUC 作為分類效果的評價標準。F1-score為精確值和召回率的組合,只有當(dāng)二者都比較大時,F(xiàn)1-score 值才能得到比較大的數(shù)值,因此它能有效衡量不平衡數(shù)據(jù)分類的效果,計算公式如下:
從式(13)可看出,只有當(dāng)少數(shù)類樣本分類精度和多數(shù)類分類精度都較大時,G-mean 值才能較大。因此,F(xiàn)1-score值和G-mean值常作為衡量數(shù)據(jù)集整體分類性能的評價指標。
不平衡分類還有一個十分常用的評價指標AUC值,即接收機工作特征曲線(receiver operating characteristic curve,ROC)下的面積,能客觀反映對正樣本、負樣本綜合預(yù)測的能力,還能消除樣本傾斜對分類效果的影響。ROC 曲線是反映敏感度和特異度連續(xù)變量的綜合指標,它的橫坐標是假陽性率(false positive rate,F(xiàn)PR),縱坐標為真陽性率(true positive rate,TPR),兩者計算公式如下:
通過調(diào)整分類器閾值,生成若干個點,點連線之后的曲線即是ROC 曲線,曲線下的面積即是AUC 值,AUC值越接近1,則代表分類結(jié)果越準確。
本次實驗從UCI 上下載了4 個數(shù)據(jù)集,4 個數(shù)據(jù)集的組成如表2 所示,其中目標類為少數(shù)類,其余類都合并為多數(shù)類[16]。
表2 實驗數(shù)據(jù)的特征和分布Table 2 Features and distribution of experimental data
為驗證改進的K-means SMOTE-LOF算法的有效性,應(yīng)用SMOTE、ADASYN、K-means SMOTE 和Kmeans SMOTE-LOF算法分別在數(shù)據(jù)集中進行對比實驗,并且與傳統(tǒng)分類結(jié)果進行對比。分類器采用支持向量機(support vector machine,SVM),樸素貝葉斯(Na?ve Bayes,NB)、決策樹(decision trees,DT)。
實驗中的算法參數(shù)如表3 所示,SMOTE 算法中的KNN最近鄰搜索的最近鄰數(shù)為5,過采樣率為1,即合成樣本數(shù)量為數(shù)據(jù)集中多數(shù)類樣本數(shù)量減去少數(shù)類樣本數(shù)量,輸出的結(jié)果中少數(shù)類與多數(shù)類比例為1∶1。Kmeans SMOTE和改進的K-means SMOTE-LOF算法中K-means 聚類采用Mirzaei 等[16]初始點選擇策略,即聚類簇個數(shù)設(shè)置為數(shù)據(jù)集中樣本數(shù)開方后取整。初始中心點選擇則依據(jù)與樣本中心點的距離來選取,計算所有樣本點與數(shù)據(jù)集中心點的歐氏距離并按降序依次排列,均勻地從降序排列的樣本中抽出k個中心點作為初始中心點。誤差閾值設(shè)置為0.01,最大迭代次數(shù)設(shè)置為200。LOF 算法中最近鄰數(shù)設(shè)置為5,局部離群因子閾值設(shè)置為1.5,即離群因子超過1.5的樣本點可認為是異常值[17-18]。
表3 算法參數(shù)Table 3 Algorithm parameters
上述四種過采樣模型是不平衡數(shù)據(jù)分類預(yù)測中常用的模型,各種模型的性能各有優(yōu)缺點。為客觀比較各類方法和提升模型的泛化能力,防止模型過擬合,本文采用五折交叉驗證得到最終實驗結(jié)果,用原始數(shù)據(jù)樣本的70%作為訓(xùn)練集,應(yīng)用這一部分樣本和合成的樣本對分類器進行訓(xùn)練,余下30%樣本作為測試集。為得到真實的實驗結(jié)果,合成的數(shù)據(jù)樣本只參與分類器的訓(xùn)練階段,測試階段的數(shù)據(jù)全為真實數(shù)據(jù)。
表4分別給出了四種方法在四個數(shù)據(jù)集上的F1-score值、G-mean值和AUC值,每行的黑色加粗的數(shù)字表示該行的最大值。由實驗結(jié)果可知,本文提出的算法較其他對比算法表現(xiàn)更好,對于少數(shù)類分類更加準確,G-mean 值和F1-score 值相較其他方法提升了5%~8%。提高少數(shù)類分類的準確率往往會降低分類器對多數(shù)類分類的準確率,實驗結(jié)果中,SMOTE 算法相較于ADASYN 算法表現(xiàn)更好,這是因為ADASYN 算法傾向于在多數(shù)類與少數(shù)類邊界上合成更多的數(shù)據(jù),對難分類的樣本進行更多的訓(xùn)練,以此來提高分類精度。而Kmeans SMOTE算法在一些數(shù)據(jù)集上表現(xiàn)得比除本文方法外的其他算法更好,這主要是因為K-means SMOTE算法能夠消除類間和類內(nèi)不平衡,在一定程度上,Kmeans SMOTE 算法在K-means 聚類和過濾簇群的過程中去除了原始數(shù)據(jù)中的異常點和離群點,因此分類準確率得以提高。本文算法繼承了K-means SMOTE 算法上述優(yōu)點,又在此基礎(chǔ)上改進了SMOTE算法,參考了更多的少數(shù)類樣本,使得合成樣本更加合理。此外,在合成樣本之后,對合成樣本再進行去除異常點和離群點的操作,最大程度降低合成樣本的誤差,更好地訓(xùn)練分類器模型。
表4 不同過采樣算法的實驗結(jié)果Table 4 Experimental results of different oversampling algorithms
磷酸生產(chǎn)過程是用無機酸分解磷礦粉,分離出粗磷酸,再經(jīng)凈化后制得磷酸產(chǎn)物,原料配比異常會導(dǎo)致毒性元素進入溶液,引起催化劑快速失活,從而造成前處理脫除效果不佳,殘留雜質(zhì)過多,對磷酸制備過程和下游產(chǎn)品質(zhì)量均有較大影響[19]。因此,監(jiān)控生產(chǎn)過程中原料配比是否異常,分析異常數(shù)據(jù)具有重要意義。
實驗研究對象選擇了某集團硫酸分解制取磷酸工藝數(shù)據(jù),數(shù)據(jù)由1 440組磷礦漿流量、催化劑流量和稀磷酸流量組成,其中原料配比異常的數(shù)據(jù)有140組,如表5所示。
表5 原料配比的影響Table 5 Influence of raw material ratio
合成數(shù)據(jù)分布情況如圖3所示,藍點依次為SMOTE算法、ADASYN算法、K-means SMOTE算法及改進的K-means SMOTE-LOF算法合成樣本,皆為數(shù)據(jù)配比不均數(shù)據(jù),黃點為正常數(shù)據(jù)??梢钥闯觯紨?shù)據(jù)中正常原料配比樣本與異常原料配比樣本邊界混淆。由圖3可知,SMOTE合成的樣本具有盲目性,沒有針對少數(shù)類樣本分布的特點進行合成,而ADASYN 算法合成的樣本集中于多數(shù)類樣本與少數(shù)類樣本重合區(qū)域,這一類合成的樣本同時包含多數(shù)類與少數(shù)類的特征,訓(xùn)練過程難以識別,導(dǎo)致分類效果不佳。K-means SMOTE算法在合成樣本之前將包含少數(shù)類特征的樣本識別并限制其合成樣本,很大程度上減少了合成樣本的誤差,但是合成的樣本更加密集,在分類時容易導(dǎo)致過擬合,模型的泛化能力下降。而改進的K-means SMOTE-LOF合成的樣本參考更多的原始樣本,從而使得合成樣本分布更為合理。
圖3 不同過采樣策略合成數(shù)據(jù)分布Fig.3 Synthetic data distribution with different oversampling strategies
不同算法實驗結(jié)果對比如圖4 所示。由圖4 可知,NB 和LR 分類器中,未處理數(shù)據(jù)集的查準率(precision)為1,而查全率(recall)僅有0.2,表明不存在多數(shù)類樣本被預(yù)測為少數(shù)類,而大量的少數(shù)類樣本被預(yù)測為多數(shù)類,這是由于多數(shù)類樣本和少數(shù)類樣本在數(shù)量上的傾斜,以總體精度為目的的分類模型往往會忽略少數(shù)類,造成少數(shù)類分類精度較低。圖4 顯示F1-score 指標和G-mean指標中,改進的K-means SMOTE-LOF算法表現(xiàn)突出,說明該算法能在不降低分類器預(yù)測多數(shù)類的準確率前提下顯著提升分類器對少數(shù)類預(yù)測的性能。同時,改進的K-means SMOTE-LOF 算法相對于其他算法AUC 值提升最大,說明在所有分類器上本文提出的算法均取得最佳效果。此外,經(jīng)過采樣處理后,SVM、NB、Adaboost、DT、LR 模型對原料配比不均數(shù)據(jù)AUC值分別提升為14.00%、19.85%、11.76%、4.73%、31.37%。
圖4 不同算法對實驗數(shù)據(jù)的性能Fig.4 Performance of different algorithms on experimental data
本文針對現(xiàn)有過采樣算法存在樣本合成過程中誤差大及合成樣本邊緣化的問題,提出了一種基于局部離群因子和改進的K-means SMOTE 的不平衡數(shù)據(jù)分類算法。通過公共數(shù)據(jù)集驗證了本文算法的可行性和優(yōu)越性,最后以磷酸生產(chǎn)數(shù)據(jù)為例,對原料配比不平衡數(shù)據(jù)進行分類實驗,并與SMOTE、ADASYN 和K-means SMOTE 算法的分類結(jié)果進行對比,結(jié)果表明本文算法在合成樣本可信度和對少數(shù)類數(shù)據(jù)預(yù)測上更具有優(yōu)勢,能對生產(chǎn)中的不平衡數(shù)據(jù)進行有效分類。