目前正在做的一個項目碰到了樣本不均衡的問題,轉載博主的文章以方便項目改進研究
原文:https://blog.csdn.net/quiet_girl/article/details/77948345
論文鏈接:Learning from Imbalanced Data
一、基本概念
1、類間不平衡 VS. 類內不平衡
類間不平衡:不同類別之間的數據量相差較大。
類內不平衡:某一個類分布成多個小聚類,每個小聚類數據量相差較大。
如下圖:
圖(a)中圓形和五角星代表2個不同的類,他們的數目量相差較大,因此屬於類間不平衡。
圖(b)中:A代表圓形類中數量較大的圓形集合,D代表圓形類中數量較小的圓形集合。B代表五角星中數量較大的五角星集合,C代表五角星中數量較小的五角星集合。因此在這個圖中,圓形和五角星分別存在類內不平衡,而且圓形和五角星存在類間不平衡。
1、內在不平衡 VS. 外在不平衡
內在不平衡:由於數據本身導致的數據不平衡,即數據本身存在正負樣例差。
外在不平衡:除了數據本身之外,因為一些外界元素導致數據不平衡,如:時間、存儲。舉例:我們需要獲取一段時間的持續的數據流,但是在這個時間段內傳輸出現中斷問題,導致中斷這個時間的數據缺失。
1、相對不平衡 VS. 絕對不平衡
絕對不平衡:由於正負樣例之比較大,例如:正例10000個,負例100個,正負例之比為100:1,這種情況叫做相對不平衡。
相對不平衡:雖然正負樣例之比較大,例如:正負樣例之比為100:1,但是負樣例本身數目很大,如2000個,這種情況叫做相對不平衡。
上圖(a)和(b)都存在相對不平衡。
二、存在問題
1、單一的評價指標已經不能滿足實際需求,因此需要提供更合適的評估指標,如ROC曲線等。
2、在實際應用中,數據的相對不平衡很常見,數據復雜度會增加訓練難度,數據復雜性和數據不平衡互相影響。
3、數據重疊和數據代表性不足問題。如上圖中(b)的C集合存在數據重疊問題。
4、樣本數目較少。現階段,比較常見的是數據維度高但是樣本數目少,這樣便很難使用算法來預測,因為很難從少量的數據中找到規則,目前針對這個問題的處理也有一些方法,如:主成分分析(PCA)。
三、解決方案
一開始使用決策樹來解決這個問題,但是由於相對不平衡、絕對不平衡、類間不平衡和高維度的問題,使得決策樹性能很差,因此,下面的一些方法被提出。
1、取樣方法
取樣方法:將不平衡數據通過某些方法變成平衡數據。
(1)隨機過采樣和欠采樣
隨機過采樣(Random Oversampling):向minority中添加數據,可通過復制minority數據等,使得minority和majority數目相等。 —-添加重復數據,導致數據過擬合(overfit)
隨機欠采樣(Random Undersampling):從majority中減掉數據,使得minority和majority數目相等。 —-可能會丟失一些重要的數據。
(2)Informed Undersampling
Informed Undersampling主要有3種算法:EasyEnsemble、BalanceCascade、K-nearest neighbour(KNN)和one-sided selection(OSS),主要目的是克服傳統隨機欠采樣導致的數據丟失問題。
EasyEnsemble:多次欠采樣(放回采樣)產生多個不同的訓練集,進而訓練多個不同的分類器,通過組合多個分類器的結果得到最終的結果。—-EasyEnsemble是非監督學習算法
BalanceCascade:先通過一次欠采樣產生訓練集,訓練一個分類器,對於那些分類正確的majority樣本不放回,然后對這個更小的majority樣本下采樣產生訓練集,訓練第二個分類器,以此類推,最終組合所有分類器的結果得到最終結果。 —-BalanceCascade是監督學習算法
KNN:使用K近鄰的方法挑選出一些K個樣本,至於什么算是鄰近的樣本,每個算法有不同的定義。
(3)Synthetic Sampling with Data Generation
synthetic minority oversampling technique(SMOTE)算法,算法在minority中,基於特征空間相似度,人工創造一些數據。如下圖是SMOTE的過程:
圖(a)表示對於這個不平衡數據,找出了x_i的K近鄰(K=6),根據某個特定的公式,可以將需要創造的數據定位下來,如圖(b)中的菱形即表示添加的數據。
但是,SMOTE容易出現過泛化和高方差的問題,而且,容易制造出重疊的數據。
(4)Adaptive Synthetic Sampling
為了克服SMOTE的缺點,Adaptive Synthetic Sampling方法被提出,主要包括:Borderline-SMOTE和Adaptive Synthetic Sampling(ADA-SYN)算法。
Borderline-SMOTE:對靠近邊界的minority樣本創造新數據。其與SMOTE的不同是:SMOTE是對每一個minority樣本產生綜合新樣本,而Borderline-SMOTE僅對靠近邊界的minority樣本創造新數據。如下圖,只對A中的部分數據進行操作:
ADA-SYN:根據majority和minority的密度分布,動態改變權重,決定要generate多少minority的新數據。
(5)Sampling with Data Cleaning Techniques
Tomek links用於去除重疊數據,其主要思想是:找出最近距離的2個樣本(這2個樣本屬於不同的類),然后將這2個樣本都去除,直到某一樣本周圍的近鄰都是屬於同一類。如下圖:
圖(a)表示原始數據,在原始數據中有數據重疊的現象;圖(b)表示SMOTE之后的數據,比(a)中新添加了一些數據;圖(a)表示Tomek links被找出;圖(d)是刪除Tomek links后的數據,可以看出,不同的聚類可以比較明顯的分辨出。
(6)Cluster-based Sampling Method
基於聚類的采樣算法(cluster-based sampling method,CBO)用來解決類內和類間數據的不平衡問題。其利用K-means技術,如下圖,可以很好地解釋CBO的原理:
圖(a)表示原始數據;圖(b)中C_A,…,C_E表示初始的聚類中心;圖(c)中新的C_A,…,C_E表示更新過的聚類中心(根據歐氏距離);圖(d)中,基於圖(c)我們知道最大數目的聚類是A,有20個樣本,有圓形有3個聚類,所以圓形樣本共20*3=60個,因此五角星每個聚類的樣本數為60/2=30個。從圖(d)最后的結果可以看出,相比較於原始數據,圖(d)能更好地展現出少數類的分布。
(7)Integration of Sampling and Boosting
SMOTEBoost:基於SMOTE和Adaboost.M2的算法,其在boosting的每次迭代中都引入了SMOTE的方法,因此生成的每個分類器都集中於minority類,因為最后集成而得的分類器性能較好。
DataBoost-IM:其將數據生成技術和Adaboost.M1結合,在沒有犧牲majority類准確度的情況下,提高minority的預測率。DataBoost-IM根據類間difficult-to-learn比率去生成綜合樣本。這種方法在解決強不平衡數據方面有很好的性能,但是可能依賴於較適合的數據生成方法。
2、代價敏感方法
采樣方法主要考慮正負例的分布,而代價敏感方法主要考慮誤分類樣本的代價,通過代價矩陣來度量。
(1)代價矩陣
如上圖:C(i, j)表示j類的樣本被誤分類為i類的代價。
在二元分類中,C(Min, Maj)表示Majority類的樣本被誤分類到Minority的代價,C(Maj, Min)表示Minority類的樣本被誤分類到Majority類的代價,因此C(Maj, Min)>C(Min, Maj)。
最終,判斷的標准是使得所有樣本的代價和盡可能小。(若被正確分類,則代價為0)。
(2)Cost-Sensitive Dataspace Weighting with Adaptive Boosting
3個代碼敏感的Boosting函數,AdaC1、AdaC2、AdaC3。
AdaBoost.M1的主要思想是迭代更新訓練集的分布。有幾種不同的算法,它們的區別是將一個參數變量設置在指數外面、指數里面等。
(3)Cost-Sensitive Decision Trees
代價敏感的決策樹應用主要有三種形式:(i)代價敏感調整可以用於決策閾值,使用ROC刻畫性能取值范圍,ROC曲線的特征點用作最后的閾值。(ii)對於每個節點的拆分標准,可以作為代價敏感的考慮因素。(iii)可以在決策樹上應用代價敏感的剪枝。在不平衡數據,直接移除掉概率低於某一特定閾值的節點,會發現移除的數據大多都是minority的數據,因此,應將重點放在概率估計上,使得剪掉的是positive的數據。
Cost-Sensitive Neural Networks
代價敏感性在神經網絡上的應用主要有4個方面:(i)代價敏感變更可以應用到概率評估上(ii)神經網絡的輸出也可以是代價敏感的(iii)代價敏感變更適用於學習參數(iv)最小誤差函數可以用來預期代價。
3、基於核的算法和不平衡數據的積極學習算法
(1)基於核函數的采樣算法:這里主要講GSVM-RU(Granular Support Vector Machines-Repetitive Undersampling)算法,在此之前,先看GSVM算法的思想:(i)通過觀察本地子集重要性和全局關聯的trade-off分析內部數據的分布。(ii)通過使用平行計算提高計算效率。
GSVM-RU算法通過在欠采樣過程中迭代學習步驟,充分利用了GSVM。因為在不平衡數據中,minority的數據認為是positive的,而線性SVM通過postive的sample和一些其他的sample訓練。SVM將negative的sample標記為支持向量(因此叫做NLSVs),為了使訓練集更小,這些negative的數據被移除。基於這個變小了的數據集,一個新的線性SVM和NLSV產生,並且NLSV形成的negative被移除,如此循環,得到多個negative的granular,最后,考慮全局關聯的聚集操作被用來從這些迭代的negative granular中選擇特定的樣本集,將這些負樣本和正樣本組成訓練集訓練SVM模型。這樣,GSVM-RU模型使用SVM去欠采樣,形成多個信息顆粒,這些granular最后組合在一起訓練SVM。
(2)有一些已有的對解決不平衡數據的基於核函數的算法的成果,和積極學習算法進行了論述。
4、關於不平衡學習的其他算法
一些文章概述。
四、不平衡數據評估指標
(1)單一評估指標、ROC曲線和PR曲線見機器學習:准確率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲線、PR曲線
(2)除此之外,Cost Function也可以作為一個指標。
(3)對於多分類,可以使用n個ROC曲線,即將其中一類當做正例,其余類當做負例。
參考文章:
easy ensemble 算法和balance cascade算法
如何解決機器學習中數據不平衡問題