機器學習中的類別不均衡問題



##基礎概念

類別不均衡是指在分類學習算法中,不同類別樣本的比例相差懸殊,它會對算法的學習過程造成重大的干擾。比如在一個二分類的問題上,有1000個樣本,其中5個正樣本,995個負樣本,在這種情況下,算法只需將所有的樣本預測為負樣本,那么它的精度也可以達到99.5%,雖然結果的精度很高,但它依然沒有價值,因為這樣的學習算法不能預測出正樣本。這里我們可以知道不均衡問題會導致樣本較少那一類的高錯分率,即較少一類的樣本會有較大的比例會被預測成樣本數量較多的那一類。


##解決方法

1、欠采樣,減少數量較多那一類樣本的數量,使得正負樣本比例均衡。
2、過采樣,增加數量較少那一類樣本的數量,使得正負樣本比例均衡。
3、不處理樣本,樣本分類閾值移動。


##欠采樣
###隨機欠采樣 隨機欠采樣是指隨機從多數類樣本中抽取一部分數據進行刪除,隨機欠采樣有一個很大的缺點是未考慮樣本的分布情況,而采樣過程又具有很大的隨機性,可能會誤刪多數類樣本中一些重要的信息。
###EasyEnsemble 和 BalanceCascade

EasyEnsemble是通過多次從多數類樣本有放回的隨機抽取一部分樣本生成多個子數據集,將每個子集與少數類數據聯合起來進行訓練生成多個模型,然后集合多個模型的結果進行判斷。這種方法看起來和隨機森林的原理很相似。

BalanceCascade是通過一次隨機欠采樣產生訓練集,訓練一個分類器,對於那些分類正確的多數類樣本不放回,然后對這個剩下的多數類樣本再次進行欠采樣產生第二個訓練集,訓練第二個分類器,同樣把分類正確的樣本不放回,以此類推,直到滿足某個停止條件,最終的模型也是多個分類器的組合。


###基於knn欠采樣

有四種 KNN 欠抽樣方法:

  • NearMiss-1 :選擇到最近的三個少數類樣本平均距離最小的那些多數類樣本
  • NearMiss-2 :選擇到最遠的三個少數類樣本平均距離最小的那些多數類樣本
  • NearMiss-3 :為每個少數類樣本選擇給定數目的最近多數類樣本,目的是保證每個少數類樣本都被一些多數類樣本包圍
  • 最遠距離 :選擇到最近的三個少數類樣本平均距離最大的那些多數類樣本

##過采樣
###隨機過采樣

隨機欠采樣是指多次隨機從少數類樣本中有放回的抽取數據,采樣數量大於原有的少數類樣本數量,其中有一部分數據會出現重復,而重復數據的出現會增大方差造成模型的過擬合。


###SMOTE算法

SMOTE全稱是Synthetic Minority Oversampling Technique即合成少數類過采樣技術,它是基於隨機過采樣算法的一種改進方案,SMOTE算法的基本思想是對少數類樣本進行分析並根據少數類樣本人工合成新樣本添加到數據集中。

SMOTE 算法是利用特征空間中現存少數類樣本之間的相似性來建立人工數據的,也可以認為SMOTE算法假設了在相距較近的少數類樣本之間的樣本仍然是少數類,
具體過程如下:

  • 隨機選擇一個少數類樣本,計算它到少數類樣本集中所有樣本的距離,得到它k近鄰。
  • 根據樣本不平衡比例設置一個采樣比例以確定采樣倍率n,對於每一個少數類樣本x,從其k近鄰中隨機選擇若干個樣本
  • 對於每一個隨機選出的近鄰,選擇一個在[0,1]之間的隨機數乘以隨機近鄰和x的特征向量的差,然后加上一個x,
    用公式表示:

SMOTE算法摒棄了隨機過采樣復制樣本的做法,可以防止隨機過采樣易過擬合的問題,而這些多出來的樣本本身不帶有信息,而且SMOTE 算法對於每個原少數類樣本產生相同數量的合成數據樣本,這就使得類間發生重復的可能性加大。


###Borderline-SMOTE算法

Borderline-SMOTE算法較SMOTE算法提升的地方是只為那些K近鄰中有一半以上多數類樣本的少數類樣本生成新樣本,因為這些樣本容易被錯分,而在這些少數類樣本附近生存人工合成樣本,有助於少數類樣本的分類正確。而如果少數類樣本周圍全是多數類樣本,這種情況下,這個樣本會被認定為噪聲樣本。

Borderline-SMOTE算法篩選樣本的公式如下:

它的選擇過程如下:

  • 對於每個 xi⊂Smin 確定一系列最近鄰樣本集,稱該數據集為 Si:k−nn,且 Si:k−nn⊂S
  • 對每個樣本 xi ,判斷出最近鄰樣本集中屬於多數類樣本的個數,即:|Si:k−nn⋂Smaj|
  • 選擇滿足上面不等式的 xi

###基於k-means過采樣

基於k-means聚類過采樣方法一般分為兩步:

  • 首先分別對正負例進行K-means聚類
  • 聚類之后,對其中較小的簇進行上面的過采樣方法擴充樣本數量
  • 然后在進行正負類樣本均衡擴充

該算法不僅可以解決類間不平衡問題,而且還能解決類內部不平衡問題。


##分類閾值移動

通常在一個二分類的問題中,我們經常將0.5作為預測結果的分類標准,比如將預測概率大於0.5分為A類,預測概率小於0.5分為B類,這里的0.5就是分類閾值。

在二分類問題中,假如預測一個樣本為A的概率為p,那么它為B的概率為1-p,而p/(1-p)表示兩類可能性的比,即幾率(odds),或稱為優勢比。如果p/(1-p)>1,我們認為該樣本是A類的幾率大於B。然而,在一個數據集中正負樣本比例不相同時,此時會有一個觀測幾率,假設在數據集中有m個A樣本,n個B樣本,那么觀測幾率為m/n(樣本均衡的情況下觀測幾率為1)。

在算法分類過程中,如果預測幾率p/(1-p)大於實際的觀測幾率m/n,此時我們才把樣本分類為A,而不是以0.5作為分類閾值(樣本均衡情況下以0.5作為閾值)
用公式表示:p/(1-p)>m/n
計算結果得到p>m/(m+n)
此時只有當p大於m/(m+n)時,預測結果為A類,這里m/(m+n) 取代0.5成為新的分類閾值。

借助以上的原理,在分類學習中面對樣本不均衡時,我們可以采用原有不均衡的樣本進行學習,然后通過改變決策規則來做分類,比如在樣本均衡時我們0.5作為分類閾值,而在樣本不均衡的情況下我們可以規定預測概率需要達到0.8才能被預測為多數類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM