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

Candy_GL發表於2018-09-26

基礎概念

類別不均衡是指在分類學習演算法中,不同類別樣本的比例相差懸殊,它會對演算法的學習過程造成重大的干擾。比如在一個二分類的問題上,有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才能被預測為多數類。

 

相關文章