什么是數(shù)據(jù)不均衡?
在分類中,訓(xùn)練數(shù)據(jù)不均衡是指不同類別下的樣本數(shù)目相差巨大。
舉兩個(gè)例子:
①在一個(gè)二分類問題中,訓(xùn)練集中class 1的樣本數(shù)比上class 2的樣本數(shù)的比值為60:1。使用邏輯回歸進(jìn)行分類,最后結(jié)果是其忽略了class 2,將所有的訓(xùn)練樣本都分類為class 1。
②在三分類問題中,三個(gè)類別分別為A,B,C,訓(xùn)練集中A類的樣本占70%,B類的樣本占25%,C類的樣本占5%。最后我的分類器對(duì)類A的樣本過擬合了,而對(duì)其它兩個(gè)類別的樣本欠擬合。
實(shí)際上,訓(xùn)練數(shù)據(jù)不均衡是常見并且合理的情況。
舉兩個(gè)例子:
①在欺詐交易識(shí)別中,絕大部分交易是正常的,只有極少部分的交易屬于欺詐交易。
②在客戶流失問題中,絕大部分的客戶是會(huì)繼續(xù)享受其服務(wù)的(非流失對(duì)象),只有極少數(shù)部分的客戶不會(huì)再繼續(xù)享受其服務(wù)(流失對(duì)象)。
那么訓(xùn)練數(shù)據(jù)不均衡會(huì)導(dǎo)致什么問題呢?
如果訓(xùn)練集的90%的樣本是屬于同一個(gè)類的,而我們的分類器將所有的樣本都分類為該類,在這種情況下,該分類器是無效的,盡管最后的分類準(zhǔn)確度為90%。所以在數(shù)據(jù)不均衡時(shí),準(zhǔn)確度(Accuracy)這個(gè)評(píng)價(jià)指標(biāo)參考意義就不大了。實(shí)際上,如果不均衡比例超過4:1,分類器就會(huì)偏向于大的類別。
解決方法
1、擴(kuò)充數(shù)據(jù)集
首先想到能否獲得更多數(shù)據(jù),尤其是小類(該類樣本數(shù)據(jù)極少)的數(shù)據(jù),更多的數(shù)據(jù)往往能得到更多的分布信息。
2、對(duì)數(shù)據(jù)集進(jìn)行重采樣
過采樣(over-sampling),對(duì)小類的數(shù)據(jù)樣本進(jìn)行過采樣來增加小類的數(shù)據(jù)樣本個(gè)數(shù),即采樣的個(gè)數(shù)大于該類樣本的個(gè)數(shù)。
欠采樣(under-sampling),對(duì)大類的數(shù)據(jù)樣本進(jìn)行欠采樣來減少大類的數(shù)據(jù)樣本個(gè)數(shù),即采樣的個(gè)數(shù)少于該類樣本的個(gè)數(shù)。
采樣算法容易實(shí)現(xiàn),效果也不錯(cuò),但可能增大模型的偏差(Bias),因?yàn)榉糯蠡蛘呖s小某些樣本的影響相當(dāng)于改變了原數(shù)據(jù)集的分布。對(duì)不同的類別也要采取不同的采樣比例,但一般不會(huì)是1:1,因?yàn)榕c現(xiàn)實(shí)情況相差甚遠(yuǎn),壓縮大類的數(shù)據(jù)是個(gè)不錯(cuò)的選擇。
3、人造數(shù)據(jù)
一種簡(jiǎn)單的產(chǎn)生人造數(shù)據(jù)的方法是:在該類下所有樣本的每個(gè)屬性特征的取值空間中隨機(jī)選取一個(gè)組成新的樣本,即屬性值隨機(jī)采樣。此方法多用于小類中的樣本,不過它可能破壞原屬性的線性關(guān)系。如在圖像中,對(duì)一幅圖像進(jìn)行扭曲得到另一幅圖像,即改變了原圖像的某些特征值,但是該方法可能會(huì)產(chǎn)生現(xiàn)實(shí)中不存在的樣本。
有一種人造數(shù)據(jù)的方法叫做SMOTE(Synthetic Minority Over-sampling Technique)。SMOTE是一種過采樣算法,它構(gòu)造新的小類樣本而不是產(chǎn)生小類中已有的樣本的副本。它基于距離度量選擇小類別下兩個(gè)或者更多的相似樣本,然后選擇其中一個(gè)樣本,并隨機(jī)選擇一定數(shù)量的鄰居樣本對(duì)選擇的那個(gè)樣本的一個(gè)屬性增加噪聲,每次處理一個(gè)屬性。這樣就構(gòu)造了許多新數(shù)據(jù)。
SMOTE算法的多個(gè)不同語(yǔ)言的實(shí)現(xiàn)版本:
?Python: UnbalancedDataset模塊提供了SMOTE算法的多種不同實(shí)現(xiàn)版本,以及多種重采樣算法。
?R: DMwR package。
?Weka: SMOTE supervised filter。
4、改變分類算法
①使用代價(jià)函數(shù)時(shí),可以增加小類樣本的權(quán)值,降低大類樣本的權(quán)值(這種方法其實(shí)是產(chǎn)生了新的數(shù)據(jù)分布,即產(chǎn)生了新的數(shù)據(jù)集),從而使得分類器將重點(diǎn)集中在小類樣本身上。剛開始,可以設(shè)置每個(gè)類別的權(quán)值與樣本個(gè)數(shù)比例的倒數(shù),然后可以使用過采樣進(jìn)行調(diào)優(yōu)。
②可以把小類樣本作為異常點(diǎn)(outliers),把問題轉(zhuǎn)化為異常點(diǎn)檢測(cè)問題(anomaly detection)。此時(shí)分類器需要學(xué)習(xí)到大類的決策分界面,即分類器是一個(gè)單個(gè)類分類器(One Class Classifier)。
③由Robert E. Schapire提出的”The strength of weak learnability”方法,該方法是一個(gè)boosting算法,它遞歸地訓(xùn)練三個(gè)弱學(xué)習(xí)器,然后將這三個(gè)弱學(xué)習(xí)器結(jié)合起形成一個(gè)強(qiáng)的學(xué)習(xí)器。算法流程如下:
?首先使用原始數(shù)據(jù)集訓(xùn)練第一個(gè)學(xué)習(xí)器L1。
?然后使用50%在L1學(xué)習(xí)正確和50%學(xué)習(xí)錯(cuò)誤的那些樣本訓(xùn)練得到學(xué)習(xí)器L2,即從L1中學(xué)習(xí)錯(cuò)誤的樣本集與學(xué)習(xí)正確的樣本集中,循環(huán)采樣一邊一個(gè)。
?接著,使用L1與L2不一致的那些樣本去訓(xùn)練得到學(xué)習(xí)器L3。
?最后,使用投票方式作為最后輸出。
那么如何使用該算法來解決數(shù)據(jù)不均衡問題呢? 假設(shè)是一個(gè)二分類問題,大部分的樣本都是true類。
?讓L1輸出始終為true。
?使用50%在L1分類正確的與50%分類錯(cuò)誤的樣本訓(xùn)練得到L2,即從L1中學(xué)習(xí)錯(cuò)誤的樣本集與學(xué)習(xí)正確的樣本集中,循環(huán)采樣一邊一個(gè)。因此,L2的訓(xùn)練樣本是平衡的。
?接著使用L1與L2分類不一致的那些樣本訓(xùn)練得到L3,即在L2中分類為false的那些樣本。
?最后,結(jié)合這三個(gè)分類器,采用投票的方式來決定分類結(jié)果,因此只有當(dāng)L2與L3都分類為false時(shí),最終結(jié)果才為false,否則true。
④以下方法同樣會(huì)破壞某些類的樣本的分布:
?設(shè)超大類中樣本的個(gè)數(shù)是極小類中樣本個(gè)數(shù)的L倍,那么在隨機(jī)梯度下降(SGD,stochastic gradient descent)算法中,每次遇到一個(gè)極小類中樣本進(jìn)行訓(xùn)練時(shí),訓(xùn)練L次。
?將大類中樣本劃分到L個(gè)聚類中,然后訓(xùn)練L個(gè)分類器,每個(gè)分類器使用大類中的一個(gè)簇與所有的小類樣本進(jìn)行訓(xùn)練得到。最后對(duì)這L個(gè)分類器采取少數(shù)服從多數(shù)對(duì)未知類別數(shù)據(jù)進(jìn)行分類,如果是連續(xù)值(預(yù)測(cè)),那么采用平均值。
?設(shè)小類中有N個(gè)樣本。將大類聚類成N個(gè)簇,然后使用每個(gè)簇的中心組成大類中的N個(gè)樣本,加上小類中所有的樣本進(jìn)行訓(xùn)練。
如果不想破壞樣本分布,可以使用全部的訓(xùn)練集采用多種分類方法分別建立分類器而得到多個(gè)分類器,投票產(chǎn)生預(yù)測(cè)結(jié)果。
5、嘗試其它評(píng)價(jià)指標(biāo)
因?yàn)椤皽?zhǔn)確度(Accuracy)”這個(gè)評(píng)價(jià)指標(biāo)在數(shù)據(jù)不均衡的情況下有時(shí)是無效的。因此在類別不均衡分類任務(wù)中,需要使用更有說服力的評(píng)價(jià)指標(biāo)來對(duì)分類器進(jìn)行評(píng)價(jià)。








暫無數(shù)據(jù)