以前在做情感分類問題都是用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
暫時沒有想好,要嘗試一下,結果出來再填上