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

基礎概念

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章