天天看點

NLP 語料分類不均衡的解決辦法

以前在做情感分類問題都是用sst等等,一些經典的語料,但是當自己要做語料的時候,才發現事情并不是想象的那麼簡單。要進行語料清洗,語料的切分(十折交叉),現在又要考慮語料的均衡性問題。

不平衡問題:類别之間的語料數目相差很大

看一下我的語料:

一共6類,數目差别非常大。

類别之間的語料數目不平衡是制約很多分類算法準确率的一個因素。很多分類器分類的時候都會傾向将語料分為大類,是以造成分類的準确率降低。但是不平衡分類這個問題是确實存在而且普遍存在的,很多時候那些少數類才是值得我們關注的。例如,網絡攻擊,信用卡非法交易,等。信用卡非法交易是屬于少類,分類是少類的語料準确率低,難以發現這個非法的記錄。

為啥少類語料分類準确率低?因為少類語料的特征不明顯,容易跟噪聲語料混在一起。而大部分的分類方法都是基于特征來進行分類。少類特征不明顯,是以也難以将少類的語料差別出來。

正常的做法:

過抽樣

  • 直接複制,即不斷複制類别樣本數少的類别樣本。
  • 插值法:通過對樣本歸一化,采樣,求得樣本分布,極值,均值等,然後根據樣本分布,極值,均值來生成新樣本來擴充樣本數目。

欠抽樣

  • 直接删除
  • 随機減少多數類樣本的數量。

Weighted loss function,一個處理非平衡資料常用的方法就是設定損失函數的權重,使得少數類判别錯誤的損失大于多數類判别錯誤的損失。在python的sk-learn中我們可以使用class_weight參數來設定權重,提高少數類權重,例如設定為多數類的10倍。

RBG和Kaiming給出的相當牛逼的方法,這裡不做詳細介紹。

詳情見連結:

http://blog.csdn.net/u014380165/article/details/77019084

看到一篇部落格:

感覺腦洞很大,一種特殊的過抽樣

本文首先分析樣本數少的類别,通過文本句法依賴分析,文本詞性标記分析詞的相關屬性,然後采用同義詞替換的方式生成新的文本。方法簡單有效
https://blog.csdn.net/u014535908/article/details/79035653

暫時沒有想好,要嘗試一下,結果出來再填上

https://blog.csdn.net/jerryfy007/article/details/72904257 http://blog.sina.com.cn/s/blog_afa352bf0102vo57.html https://blog.csdn.net/u014380165/article/details/77019084