不平衡數據集處理

2023-05-19     CDA數據分析師

原標題:不平衡數據集處理

CDA數據分析師

不平衡數據集

不平衡數據集是指數據集中各個類別下的樣本數量相差很大,比如,二分類數據集中,有0和1兩個類別,其中0類樣本占90%,而1類樣本占10%;三分類樣本中,有0類、1類和2類,其中,0類樣本占75%,1類樣本占20%,2類樣本占5%。

數據不平衡的情況是常見且合理的,比如在銀行貸款違約的識別中,絕大多數的交易是正常的,只有少部分屬於違約客戶;在進行客戶是否會流失的判斷時,直接使用不平衡數據建立模型時,可能會對多數類樣本過擬合,而對少數類樣本欠擬合,且當分類器將所有樣本均劃分為多數類樣本時,儘管分類器的準確率很高,但實際上是一個無效的分類器。

不平衡數據集的處理方法

從數據角度出發,用來處理不平衡數據的方法主要是採樣,包括欠採樣和過採樣以及一些改進的方法。從算法角度出發,主要是基於代價敏感學習的算法,代表算法有adacost。

從數據角度處理不平衡數據

(1)隨機採樣

1)隨機過採樣(上採樣)

針對不平衡數據,隨機過採樣的基本思想是從少數類樣本中進行隨機採樣,以此來增加少數類樣本的數量。

2)隨機欠採樣(下採樣)

針對不平衡數據,隨機欠採樣的基本思想是從多數類樣本中隨機選取少量樣本,再與少數類樣本合併作為新的訓練數據集。

3)隨機採樣的優缺點

隨機採樣的優點就是簡單易懂,對於過採樣而言,其缺點是數據集中會存在一部分重複樣本,訓練出的模型可能存在過擬合;對於欠採樣而言,缺點是存在信息丟失,只使用了部分數據集,導致模型無法捕捉到全部數據信息。

(2)過採樣的改進方法

相對於隨機過採樣法,還有以下幾種改進的過採樣方法

1)SMOTE

SMOTE算法的基本思想是為少數類樣本人工合成新樣本並添加到數據集中,具體過程如下:

對於少數類中每一個樣本x,計算該點與少數類中其他樣本點的距離,得到最近的k個近鄰

根據樣本不平衡比例設置一個採樣比例以確定採樣倍率,對於每一個少數類樣本x,從其k近鄰中隨機選擇若干個樣本,假設選擇的近鄰為x'

對於每一個隨機選出的近鄰x',分別與原樣本按照如下的公式構建新的樣本

xnew=x+rand(0,1) (x′x)

SMOTE算法的缺點包括兩方面,一方面是如果選取的少數類樣本周圍都是少數類樣本,則新合成的樣本不會提供太多有用信息。就像SVM中遠離margin的點對決策邊界影響不大;另一方面是如果選取的少數類樣本周圍都是多數類樣本,這類的樣本可能是噪聲,則新合成的樣本會與周圍的多數類樣本產生大部分重疊,導致分類困難。

2)Borderline-SMOTE

原始SMOTE算法的對所有少數類樣本都是一視同仁的,我們希望新合成的少數類樣本能處於兩個類別的邊界附近,因為在實際建模過程中那些處於邊界位置的樣本更容易被錯分,因此利用邊界位置的樣本信息產生新樣本可以給模型帶來更大的體徵,能提供足夠的信息用以分類,即Borderline SMOTE算法做的事情。判斷邊界的一個簡單的規則為:如果K近鄰中有一半以上是多數類樣本,則這部分少數類為邊界樣本。簡單來講就是只為那些周圍大部分是多數類樣本的少數類樣本生成新樣本。

假設a為少數類中的一個樣本,此時少數類的樣本分為三類(依據為k_neighbors),如下圖所示:

(i) 噪音樣本(noise), 該少數類的所有最近鄰樣本都來自於不同於樣本a的其他類別:

(ii) 危險樣本(in danger), 至少一半的最近鄰樣本來自於同一類(不同於a的類別);

(iii) 安全樣本(safe), 所有的最近鄰樣本都來自於同一個類。

然後對危險樣本(即邊界樣本)使用SMOTE算法得到一系列新樣本。具體來講,Borderline-SMOTE1和Borderline-SMOTE2,Borderline-SMOTE1在對邊界樣本點生成新樣本時,是在m近鄰(m_neighbors)隨機選擇少數類樣本(與SMOTE相同),Borderline-SMOTE2則是在m近鄰(m_neighbors)中的任意一個樣本(不關注樣本類別)

3)ADASYN(自適應綜合過採樣)

ADASYN方法的主要思想是根據數據分布情況,為不同的少數類樣本生成不同數量的新樣本。首先根據最終的平衡程度設定總共需要生成的新少數類樣本數量 ,然後為每個少數類樣本x計算分布比例。具體過程如下:

計算不平衡度:記少數類樣本為ms,多數類為ml,則不平衡度為 d = ms / ml,則d∈(0,1);

計算需要合成的樣本數量:G = (ml - ms)* b,b∈[0,1],當b = 1時,即G等於少數類和多數類的差值,此時,合成數據後的多數類個數和少數類數據正好平衡;

對每個屬於少數類的樣本用歐式距離計算k個鄰居,為k個鄰居中屬於多數類的樣本數目,記比例為r,r = / k,r∈[0,1];

根據上一步過程,得到每一個少數類樣本的 ri(k個鄰居中,多數類樣本所占的比利) ,用計算每個少數類樣本的周圍多數類的情況

計算每個少數類樣本需要合成的樣本數目;

在每個待合成的少數類樣本周圍k個鄰居中選擇1個少數類樣本,根據等式進行合成;

重複上一步的過程,直到完成每個少數類樣本所需合成的數目為止。

(3)欠採樣的改進方法

1)EasyEnsemble

從多數類中有放回的隨機採樣n次,每次選取與少數類數目近似的樣本量,那麼,可以得到n 個樣本集合記作{ },然後其中的每一份與少數類樣本結合組成n個訓練樣本{},然後在每一個訓練集上得到一個模型,最後取這n 個模型的均值作為結果。

2)BalanceCascade

先通過一次下採樣產生訓練集,訓練一個分類器,對於那些分類正確的多數類樣本不放回,然後對這個更小的多數類樣本下採樣產生訓練集,訓練第二個分類器,以此類推,最終組合所有分類器的結果得到最終結果。

3)NearMiss

NearMiss方法是利用距離遠近剔除多數類樣本的一類方法,實際操作中也是藉助kNN,總結起來有以下幾類:

NearMiss-1:在多數類樣本中選擇與最近的3個少數類樣本的平均距離最小的樣本。

NearMiss-2:在多數類樣本中選擇與最遠的3個少數類樣本的平均距離最小的樣本。

NearMiss-3:對於每個少數類樣本,選擇離它最近的給定數量的多數類樣本。

NearMiss-1和NearMiss-2方法的描述僅有一字之差,但其含義是完全不同的:NearMiss-1考慮的是與最近的3個少數類樣本的平均距離,是局部的;NearMiss-2考慮的是與最遠的3個少數類樣本的平均距離,是全局的。

NearMiss-1方法得到的多數類樣本分布也是「不均衡」的,它傾向於在比較集中的少數類附近找到更多的多數類樣本,而在孤立的(或者說是離群的)少數類附近找到更少的多數類樣本,原因是NearMiss-1方法考慮的局部性質和平均距離。

NearMiss-3方法則會使得每一個少數類樣本附近都有足夠多的多數類樣本,顯然這會使得模型的精確度高、召回率低。

論文中有對這幾種方法的比較,得到的結論是NearMiss-2的效果最好,不過這也是需要綜合考慮數據集和採樣比例的不同造成的影響。

參考連結:

文章來源: https://twgreatdaily.com/zh-sg/b5d66bdab0843f3f5e5d6104d1d012e8.html