1 简介
在某些时候,我们可能会遇到一些大问题,那就是正样本特别少,负样本特别多(样本不均衡)。
在样本不均横的时候,其数据集在一定程度上会极大影响模型的训练。
那么如何处理这类的问题呢?
2 类别不平衡样本处理三招
2.1 加权处理
在绝大多数的模型中,模型可以使用类别权重,或则样本权重进行训练。
加权的操作很简单,步骤如下:
- 遍历每一个样本;
- 如果样本满足某一个要求,就定义权重;
(例如在不平衡的二分类中,如果样本的标签为1,那么我们将其权重设置为w1(自定义);如果样本标签为0;那么我们将其权重设置为w2(自定义)) - 将样本权重代入模型进行训练&测试.
加权的直观理解就是我认为一个正样本的价值顶得上多个负样本,那么我们希望将其在模型的重要性调整为某一个权重。
2.2 过采样
常用:SMOTE采样。
2.3 欠采样
欠采样和过采样是相对的,过采样就是对少的样本进行采样生成更多的样本,
那么欠采样就是对多的样本进行采样,降低类别多的样本数,使得我们的样本
个数更少。
欠采样的好处非常多,例如当模型的训练对于内存和速度有较大的要求时,就可以使用欠采样。在去年NIPS的AutoML比赛中,第三名的队伍通过多次对负样本进行欠采样然后进行最终算法的集成,达到的效果要比采用所有数据进行调参得到的结果还要好,
欠采样可以:
带来训练数据的差异性,方便模型集成;
降低训练数据集的大小,加速模型的训练&降低内存的使用.
在某些特定的数据集上达到奇效。
我认为:对数据集可以进行欠采样(采样时添加随机扰动),在一定程度上可以多数样本不均衡的问题。
4 参考文章
SMOTE算法:https://www.jianshu.com/p/13fc0f7f5565
Tackling Class imbalance:https://www.kaggle.com/shahules/tackling-class-imbalance#Python-imbalanced-learn-module%3C/br%3E
从零开始实现过抽样算法smote:https://zhuanlan.zhihu.com/p/30993972
不平衡数据分类算法介绍与比较:https://blog.csdn.net/a358463121/article/details/52304670
不平衡数据处理:https://zhuanlan.zhihu.com/p/21406238
https://mp.weixin.qq.com/s/pOJof9aGp8iRlJuKH_Iz-A