一、Introduction
以前在做情感分类问题都是用sst等等,一些经典的语料,但是当自己要做语料的时候,才发现事情并不是想象的那么简单。要进行语料清洗,语料的切分(十折交叉),现在又要考虑语料的均衡性问题。
不平衡问题:类别之间的语料数目相差很大
看一下我的语料:
一共6类,数目差别非常大。
二、Influence
类别之间的语料数目不平衡是制约很多分类算法准确率的一个因素。很多分类器分类的时候都会倾向将语料分为大类,因此造成分类的准确率降低。但是不平衡分类这个问题是确实存在而且普遍存在的,很多时候那些少数类才是值得我们关注的。例如,网络攻击,信用卡非法交易,等。信用卡非法交易是属于少类,分类是少类的语料准确率低,难以发现这个非法的记录。
为啥少类语料分类准确率低?因为少类语料的特征不明显,容易跟噪声语料混在一起。而大部分的分类方法都是基于特征来进行分类。少类特征不明显,因此也难以将少类的语料区别出来。
三、别人的解决办法
常规的做法:
数据层面:
过抽样
- 直接复制,即不断复制类别样本数少的类别样本。
- 插值法:通过对样本归一化,采样,求得样本分布,极值,均值等,然后根据样本分布,极值,均值来生成新样本来扩充样本数目。
欠抽样
- 直接删除
- 随机减少多数类样本的数量。
算法层面:
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
四、个人的解决办法
暂时没有想好,要尝试一下,结果出来再填上
五、Reference
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