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