如何处理样本不均衡
1.1 选择合适的评价指标:
- 不要采用准确率(Accuracy);
- 主流评估方法包括:ROC,Precision-Recall curve,F1;
1.2若样本极度不均衡,可作为异常检测问题处理;
1.3 欠采样/过采样:
一般操作就是,对于样本比较多的类别进行欠采样,对样本比较少的类别进行过采样。但是对于多分类问题,会比较麻烦,而且本赛题是细粒度多分类问题。
常见的过采样方法:
- 随机打乱数据;
- 加入噪声,或随机剔除部分词;
- 裁剪掉某一句;
- 复制;
- 翻译成另一种语言,再翻译回来,eg.中文->英文->中文;
欠采样方法: 即对样本比较多的类别进行采样。
对于文本分类问题,过采样存在一定的问题,此处见[3],不赘述。
欠采样和过采样的缺点:
- 过采样:过拟合风险;
- 欠采样:样本缺失,偏差较大;
下采样缺失样本的解决办法:
- 1.EasyEnsemble:多次下采样(放回采样),训练多个不同的分类器;
- 2.BalanceCascade:首先一次下采样产生训练集,对于分类正确的多样本类别不放回,只放回分类错误的样本;
- 3.利用KNN试图挑选那些最具代表性的大众样本,叫做NearMiss;
1.4 训练策略:
在训练过程中采取的一些方法,例如sklearn中的class_weight,lightgbm和xgboost中的class_weight,他们均给出了参数可以设置类别比例,但是性能要具体讨论。
加权Loss:
在nn中常用binary_entropy(二分类)、category_entropy(多分类),作为目标函数,对待不均衡样本,可以对不同类别进行加权。比如样本比较少的类别,可以给予较高的权重。
参考资料:
[1]严重数据倾斜文本分类,比如正反比1:20~100,适合什么model,查准一般要做到多少可以上线?
[2]如何处理数据中的「类别不平衡」?
[3]文本分类 - 样本不平衡的解决思路与交叉验证CV的有效性
[4]干货|如何解决机器学习中数据不平衡问题
[5]文本多分类踩过的坑