1. 程式人生 > 其它 >【轉】機器學習中分類問題 類別樣本不均勻如何處理

【轉】機器學習中分類問題 類別樣本不均勻如何處理

最近剛好對類別不平衡的分類問題(也即長尾分佈學習,long-tailed recognition)做了一波review,整理一下我自己的總結,可以和其他回答互補一下,為小夥伴們提供一些思路和參考。這裡涵蓋的大部分也都是近年深度學習框架下的工作,如有遺漏歡迎補充。目前主流的方法大致有以下幾種(reference只列舉出了比較有代表性的):

  1. 重取樣(re-sampling:這是解決資料類別不平衡的非常簡單而暴力的方法,更具體可以分為兩種,對少樣本的過取樣[1],或是對多樣本的欠取樣[2]。當然,這類比較經典的方法一般效果都會欠佳,因為過取樣容易overfit到minor classes,無法學到更魯棒易泛化的特徵,往往在非常不平衡的資料上泛化效能會更差;而欠取樣則會直接造成
    major class
    嚴重的資訊損失,甚至會導致欠擬合的現象發生。
  2. 資料合成(synthetic samples):若不想直接重複取樣相同樣本,一種解決方法是生成和少樣本相似的“新”資料。一個最粗暴的方法是直接對少類樣本加隨機高斯噪聲,做data smoothing[3]。此外,此類方法中比較經典的還有SMOTE[4],其思路簡單來講是對任意選取的一個少類的樣本,用K近鄰選取其相似的樣本,通過對樣本的線性插值得到新樣本。說道這裡不禁想到和mixup[5]很相似,都是在input space做資料插值;當然,對於deep model,也可以在representation上做mixup(manifold-mixup)。基於這個思路,最近也有imbalance的mixup版本出現[6]
  3. 重加權(re-weighting):顧名思義,重加權是對不同類別(甚至不同樣本)分配不同權重,主要體現在重加權不同類別的loss來解決長尾分佈問題。注意這裡的權重可以是自適應的。此類方法的變種有很多,有最簡單的按照類別數目的倒數來做加權[7],按照“有效”樣本數加權[8],根據樣本數優化分類間距的loss加權[9],等等。對於max margin的這類方法,還可以用bayesian對每個樣本做uncertainty估計,來refine決策邊界[10]。這類方法目前應該是使用的最廣泛的,就不貼更多的reference了,可以看一下這個survey paper[3]
  4. 遷移學習(transfer learning)
    :這類方法的基本思路是對多類樣本和少類樣本分別建模,將學到的多類樣本的資訊/表示/知識遷移給少類別使用。代表性文章有[11][12]
  5. 度量學習(metric learning:本質上是希望能夠學到更好的embedding,對少類附近的boundary/margin更好的建模。有興趣的同學可以看看[13][14]。這裡多說一句,除了採用經典的contrastive/triplet loss的思路,最近火起來的contrastive learning,即做instance-level的discrimination,是否也可以整合到不均衡學習的框架中?
  6. 元學習/域自適應(meta learning/domain adaptation):這部分因為文章較少且更新一點,就合併到一起寫,最終的目的還是分別對頭部和尾部的資料進行不同處理,可以去自適應的學習如何重加權[15],或是formulate成域自適應問題[16]
  7. 解耦特徵和分類器(decoupling representation & classifier):最近的研究發現將特徵學習和分類器學習解耦,把不平衡學習分為兩個階段,在特徵學習階段正常取樣,在分類器學習階段平衡取樣,可以帶來更好的長尾學習結果[17][18]

作者:Yuzhe Yang
連結:https://www.zhihu.com/question/372186043/answer/1501948720
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。