前 言
對(duì)于整個(gè)數(shù)據(jù)建模來看,數(shù)據(jù)均衡算法屬于數(shù)據(jù)預(yù)處理一環(huán)。當(dāng)整個(gè)數(shù)據(jù)集從調(diào)出數(shù)據(jù)庫(kù)到拿到手的時(shí)候,對(duì)于分類數(shù)據(jù)集來說類別一般都是不均衡的,整個(gè)數(shù)據(jù)集合也是較為離散的。因此不可能一拿到數(shù)據(jù)集就可進(jìn)行建模,類別的不均衡會(huì)極大影響建模判斷準(zhǔn)確率。
其中,我們希望整個(gè)數(shù)據(jù)集合的類別數(shù)目都是相似的,這樣其特征數(shù)據(jù)權(quán)重能夠更好的計(jì)算出來,便于分類。對(duì)于預(yù)測(cè)模型也是如此。數(shù)據(jù)均衡是整個(gè)數(shù)學(xué)建模以及研究最重要不得不重視的一環(huán),下面我將詳細(xì)介紹數(shù)據(jù)均衡的方法以及運(yùn)用的不同場(chǎng)景。
一、為什么要做數(shù)據(jù)均衡?
首先在進(jìn)行實(shí)驗(yàn)之前我們要了解數(shù)據(jù)均衡的重要性,這是一件值得我們?nèi)ネ度氡姸嗑Φ氖?。一旦?shù)據(jù)均衡做的不好將極大可能影響模型的準(zhǔn)確性。數(shù)據(jù)預(yù)處理決定我們模型的上限,在一些重要的數(shù)學(xué)建模比賽或者是SCI論文中,數(shù)據(jù)均衡絕對(duì)是濃墨重彩的一環(huán)。我們可以這樣思考:
我們現(xiàn)在需要對(duì)一種疾病進(jìn)行甄別,該病的發(fā)病概率為2%,而且很嚴(yán)重,100個(gè)人之間就可能會(huì)有2個(gè)人攜帶病毒?,F(xiàn)在我們需要根據(jù)該病的特征數(shù)據(jù)構(gòu)建能夠判斷患病的人。如果我們不進(jìn)行數(shù)據(jù)均衡,倘若我們獲得了10000份人的檢測(cè)指標(biāo)數(shù)據(jù),其中有200人被標(biāo)記為患病。那么我們立刻進(jìn)行建模,因?yàn)榛疾∪巳簲?shù)量極少,那么模型根據(jù)每一次特征權(quán)重計(jì)算反復(fù)迭代,獲取最優(yōu)的結(jié)果。那該模型為何不直接把判斷人員數(shù)據(jù)歸為健康人群呢。這樣一來不管是判斷的人群是否有無此病都能夠得到98%的正確率甚至更高。那么我們的模型意義何在?
若是根據(jù)這個(gè)模型,再給10份數(shù)據(jù)其中有5份是患病者數(shù)據(jù),那么此時(shí)建立的模型絲毫沒有用處,甚至造成嚴(yán)重的后果。所以說數(shù)據(jù)均衡是整個(gè)建模中很重要的一環(huán)。如果我們一開始就把這200份患病者的指標(biāo)進(jìn)行數(shù)據(jù)填充與健康數(shù)據(jù)均衡,那樣我們還能夠發(fā)現(xiàn)獲得該病之后的指標(biāo)顯著特征,為后續(xù)醫(yī)生的判斷提供有力的支持。因此數(shù)據(jù)均衡是必不可少的一環(huán),現(xiàn)在讓我們來了解根據(jù)數(shù)據(jù)集場(chǎng)景的不同我們?cè)撊绾芜M(jìn)行數(shù)據(jù)均衡。
二、數(shù)據(jù)場(chǎng)景
1.大數(shù)據(jù)分布不均衡
拿兩個(gè)我所遇到過的場(chǎng)景建模來說,第一個(gè)網(wǎng)絡(luò)用戶購(gòu)買行為數(shù)據(jù)集來說,共擁有十三萬(wàn)行的數(shù)據(jù)中僅3千條用戶購(gòu)買行為數(shù)據(jù),如圖所示。這樣大數(shù)據(jù)量的不均衡情況,即為大數(shù)據(jù)量不均衡。
2.小數(shù)據(jù)分布不均衡
大數(shù)據(jù)量的不均衡情況居多,但難免有一些指標(biāo)很難測(cè)量的場(chǎng)景。就如醫(yī)學(xué)疾病檢測(cè)。
如圖所示,該數(shù)據(jù)量小,僅有一萬(wàn)數(shù)據(jù)量,患病人數(shù)僅只有百名。這樣的數(shù)據(jù)情況就為小數(shù)據(jù)分布不均衡。
這兩類數(shù)據(jù)不均衡情況都有適合它們的處理算法。
三、均衡算法類型
在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中兩者含義不同,但是思想方法類似。一個(gè)為數(shù)據(jù)中的采樣方法,一個(gè)為圖片的縮小和放大,這里重點(diǎn)解釋機(jī)器學(xué)習(xí)的采樣類型。
1.過采樣
過采樣也被稱為上采樣,這個(gè)方法更適用于小數(shù)據(jù)分布不均衡。如果是大數(shù)據(jù)分布不均衡,則將原來的小份類別不同的數(shù)據(jù)集擴(kuò)充到與類別不同的數(shù)據(jù)集對(duì)等大小的情況。如第一個(gè)例子的數(shù)據(jù),若進(jìn)行過采樣,則將會(huì)有超過26萬(wàn)的數(shù)據(jù)生成。與欠采樣相比計(jì)算權(quán)重比例以及運(yùn)算時(shí)間都會(huì)大大增加。甚至可能造成過擬合現(xiàn)象。而小數(shù)據(jù)分布不均衡運(yùn)用該方法還能避免數(shù)據(jù)量太少引起的欠擬合。
以下是過采樣效果圖,圖一為原始數(shù)據(jù)集。
2.欠采樣
欠采樣也被稱為下采樣,一般將將較大的類別數(shù)據(jù)進(jìn)行縮減,直至和類型不同的小量數(shù)據(jù)集相對(duì)等。如我們將例子一的數(shù)據(jù)進(jìn)行欠采樣,13w的用戶行為數(shù)據(jù)將縮減至6730條數(shù)據(jù),進(jìn)行建模的速度將會(huì)大大的加快。
以下是欠采樣算法效果圖:
3.組合采樣
不論是過采樣和欠采樣都會(huì)與原數(shù)據(jù)集存在一定的誤差,過采樣會(huì)導(dǎo)致很多樣本的數(shù)據(jù)特征與原樣本數(shù)據(jù)重疊導(dǎo)致難以分類清楚。而數(shù)據(jù)清洗技術(shù)恰好可以處理掉重疊樣本,所以可以將二者結(jié)合起來形成一個(gè)組合采樣,先過采樣再進(jìn)行數(shù)據(jù)清洗。
四、算法具體種類
以Imbalancd sklearn庫(kù)收錄的算法來看,過采樣共有11種方法,欠采樣共有8種方法,組合采樣有2種方法。
下面我們將從過采樣-欠采樣-組合采樣大體三個(gè)類型的算法逐個(gè)了解其重算法種類的大致功能作用,以及使用場(chǎng)景:
1.欠采樣算法
(1)RandomUnderSampler
隨機(jī)欠采樣是十分快捷的方式,從多數(shù)類樣本中隨機(jī)選取一些剔除掉。但是隨著采樣方法的研究和發(fā)展隨機(jī)欠采樣已經(jīng)很少使用。隨機(jī)欠采樣會(huì)損失大量的數(shù)據(jù),可能被剔除的樣本可能包含著一些重要信息,導(dǎo)致后續(xù)建模模型質(zhì)量并不是很好。
(2)ClusterCentroids
通過使用K-Means聚類質(zhì)心代替一個(gè)多數(shù)類的聚類,從而對(duì)多數(shù)類進(jìn)行欠采樣。通過帶有N個(gè)聚類的KMeans算法擬合到多數(shù)類,并以N個(gè)聚類質(zhì)心的坐標(biāo)作為新的多數(shù)樣本,從而保留N個(gè)多數(shù)樣本。這和K-means方法原理是一樣的。
(3)CondensedNearestNeighbour
CondensedNearestNeighbour 使用1近鄰的方法來進(jìn)行迭代, 來判斷一個(gè)樣本是應(yīng)該保留還是剔除, 具體的實(shí)現(xiàn)步驟如下:
集合C: 所有的少數(shù)類樣本;
1 選擇一個(gè)多數(shù)類樣本(需要下采樣)加入集合C, 其他的2 這類樣本放入集合S;
3 使用集合S訓(xùn)練一個(gè)1-NN的分類器, 對(duì)集合S中的樣本進(jìn)行分類;
4 將集合S中錯(cuò)分的樣本加入集合C;
5 重復(fù)上述過程, 直到?jīng)]有樣本再加入到集合C.
(4)EditedNearestNeighbours
(5)RepeatedEditedNearestNeighbours
EditedNearestNeighbours刪除其類別與其最近鄰之一不同的多數(shù)類別的樣本。這就是原理 RepeatedEditedNearestNeighbours。通過更改內(nèi)部最近鄰算法的參數(shù),在每次迭代中增加它,與AllKNN略有不同 。
(6)AllKNN
與RepeatedEditedNearestNeighbours不同的是,該算法內(nèi)部的最近鄰算法的近鄰數(shù)在每次迭代中都會(huì)增加。
代碼在上面統(tǒng)一概括了,此三類算法類似,只不過都以EditedNearestNeighbours為基礎(chǔ)在此上進(jìn)行優(yōu)化:
(7)InstanceHardnessThreshold
InstanceHardnessThreshold使用分類器的預(yù)測(cè)來排除樣本。所有以低概率分類的樣本都將被刪除。
(8)NearMiss
NearMiss算法實(shí)施一些啟發(fā)式規(guī)則以選擇樣本。NearMiss-1 從多數(shù)類中選擇最近的少數(shù)類樣本的平均距離最小的樣本。NearMiss-2 從多數(shù)類中選擇與負(fù)類最遠(yuǎn)樣本的平均距離最小的樣本。NearMiss-3 是一個(gè)兩步算法:首先,對(duì)于每個(gè)少數(shù)樣本, 將保留其最近鄰;然后,選擇的大多數(shù)樣本是與最近鄰居的平均距離最大的樣本。
(9)NeighbourhoodCleaningRul
NeighbourhoodCleaningRule使用 EditedNearestNeighbours刪除一些樣本。此外,他們使用 3 個(gè)最近鄰刪除不符合此規(guī)則的樣本。
代碼已貼在CondensedNearestNeighbour那一欄:
(10)OneSidedSelection
使用了 1-NN 并用于TomekLinks刪除被認(rèn)為有噪聲的樣本。
代碼已貼在CondensedNearestNeighbour那一欄:
(11) TomekLinks
TomekLinks :樣本x與樣本y來自于不同的類別,滿足以下條件,它們之間被稱之為TomekLinks:不存在另外一個(gè)樣本z,使得d(x,z) < d(x.y)或者d(y,z) < d(x,y)成立.其中d(.)表示兩個(gè)樣本之間的距離,也就是說兩個(gè)樣本之間互為近鄰關(guān)系.這個(gè)時(shí)候,樣本x或樣本y很有可能是噪聲數(shù)據(jù),或者兩個(gè)樣本在邊界的位置附近。
TomekL inks函數(shù)中的auto參數(shù)控制Tomek' s links中的哪些樣本被剔除.默認(rèn)的ratio= 'auto'’ 移除多 數(shù)類的樣本,當(dāng)ratio='ll'時(shí),兩個(gè)樣本均被移除。
2.過采樣算法
在隨機(jī)過采樣的基礎(chǔ)上,通過樣本構(gòu)造一方面降低了直接復(fù)制樣本代理的過擬合的風(fēng)險(xiǎn),另一方法實(shí)現(xiàn)了樣本的均衡。比如樣本構(gòu)造方法 SMOTE(Synthetic minority over-sampling technique)及其衍生算法。
(1)SMOTE
通過從少量樣本集合中篩選的樣本 和 及對(duì)應(yīng)的隨機(jī)數(shù) ,通過兩個(gè)樣本間的關(guān)系來構(gòu)造新的樣本 。SMOTE算法的基本思想是對(duì)少數(shù)類樣本進(jìn)行分析并根據(jù)少數(shù)類樣本人工合成新樣本添加到數(shù)據(jù)集中,具體如下圖所示,算法流程如下:
1 對(duì)于少數(shù)類中每一個(gè)樣本 ,以歐氏距離為標(biāo)準(zhǔn)計(jì)算它到少數(shù)類樣本集中所有樣本的距離,得到其 k 近鄰。
2 根據(jù)樣本不平衡比例設(shè)置一個(gè)采樣比例以確定采樣倍率N,對(duì)于每一個(gè)少數(shù)類樣本 ,從其k近鄰中隨機(jī)選擇若干個(gè)樣本,假設(shè)選擇的近鄰為 。
3 對(duì)于每一個(gè)隨機(jī)選出的近鄰 ,分別與原樣本 按照如下的公式構(gòu)建新的樣本。
偽代碼:
SMOTE會(huì)隨機(jī)選取少數(shù)類樣本用以合成新樣本,而不考慮周邊樣本的情況,這樣容易帶來兩個(gè)問題:
1 如果選取的少數(shù)類樣本周圍也都是少數(shù)類樣本,則新合成的樣本不會(huì)提供太多有用信息。這就像支持向量機(jī)中遠(yuǎn)離margin的點(diǎn)對(duì)決策邊界影響不大。
2 如果選取的少數(shù)類樣本周圍都是多數(shù)類樣本,這類的樣本可能是噪音,則新合成的樣本會(huì)與周圍的多數(shù)類樣本產(chǎn)生大部分重疊,致使分類困難。
總的來說我們希望新合成的少數(shù)類樣本能處于兩個(gè)類別的邊界附近,這樣往往能提供足夠的信息用以分類。
(2)RandomOverSampler
從樣本少的類別中隨機(jī)抽樣,再將抽樣得來的樣本添加到數(shù)據(jù)集中。然而這種方法如今已經(jīng)不大使用了,因?yàn)橹貜?fù)采樣往往會(huì)導(dǎo)致嚴(yán)重的過擬合,因而現(xiàn)在的主流過采樣方法是通過某種方式人工合成一些少數(shù)類樣本,從而達(dá)到類別平衡的目的。
BorderlineSMOTE、KMeansSMOTE、SVMSMOTE
SMOTE通過識(shí)別在重采樣期間要考慮的特定樣本來提出幾種變體。邊界版本 ( BorderlineSMOTE) 將檢測(cè)在兩個(gè)類之間的邊界中選擇哪個(gè)點(diǎn)。SVM 版本 ( SVMSMOTE) 將使用使用 SVM 算法找到的支持向量來創(chuàng)建新樣本,而 KMeans 版本 ( KMeansSMOTE) 將在之前進(jìn)行聚類,根據(jù)每個(gè)集群密度在每個(gè)集群中獨(dú)立生成樣本。
在處理連續(xù)和分類特征的混合時(shí), SMOTENC是唯一可以處理這種情況的方法。
但是,如果數(shù)據(jù)集僅由分類特征組成,則應(yīng)使用SMOTEN.:
(4)ADASYN
不平衡學(xué)習(xí)的自適應(yīng)綜合采樣方法,
ADASYN思想:基于根據(jù)少數(shù)類數(shù)據(jù)樣本的分布自適應(yīng)地生成少數(shù)類數(shù)據(jù)樣本的思想:與那些更容易學(xué)習(xí)的少數(shù)類樣本相比,更難學(xué)習(xí)的少數(shù)類樣本會(huì)生成更多的合成數(shù)據(jù)。ADASYN方法不僅可以減少原始不平衡數(shù)據(jù)分布帶來的學(xué)習(xí)偏差,還可以自適應(yīng)地將決策邊界轉(zhuǎn)移到難以學(xué)習(xí)的樣本上。
關(guān)鍵思想是使用密度分布作為標(biāo)準(zhǔn)來自動(dòng)決定需要為每個(gè)少數(shù)類樣本生成的合成樣本的數(shù)量。從物理上來說,是根據(jù)不同少數(shù)族的學(xué)習(xí)難度來衡量他們的權(quán)重分布。ADASYN后得到的數(shù)據(jù)集不僅將提供數(shù)據(jù)分布的平衡表示(根據(jù)β系數(shù)定義的期望平衡水平),還將迫使學(xué)習(xí)算法關(guān)注那些難以學(xué)習(xí)的樣本。
3.組合采樣
分別在Kinetic數(shù)據(jù)集和NTU-RGB+D數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。
(1)SMOTETomek、SMOTEENN
SMOTE允許生成樣本。但是,這種過采樣方法對(duì)底層分布沒有任何了解。因此,可能會(huì)生成一些噪聲樣本,例如,當(dāng)不同的類別不能很好地分離時(shí)。因此,應(yīng)用欠采樣算法來清理噪聲樣本可能是有益的。文獻(xiàn)中通常使用兩種方法:(i)Tomek 的鏈接和(ii)編輯最近鄰清理方法。不平衡學(xué)習(xí)提供了兩個(gè)即用型采樣器SMOTETomek和 SMOTEENN.
審核編輯:劉清
-
算法
+關(guān)注
關(guān)注
23文章
4587瀏覽量
92501 -
過采樣
+關(guān)注
關(guān)注
0文章
21瀏覽量
9563 -
均衡算法
+關(guān)注
關(guān)注
0文章
13瀏覽量
8899
原文標(biāo)題:機(jī)器學(xué)習(xí)丨數(shù)據(jù)均衡算法種類大全+Python代碼一文詳解
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論