在做特征工程时,有一部分的数据集会出现样本类别分布不均匀的情况,这种时候如果直接做分类,会使得模型只会学习到大样本类别数据的信息,无法学习小样本的数据,这样模型的预测效果和泛化能力都不是最优。
如果要达到最优的情况,一般在数据输入到模型之前会进行一些数据处理,包括数据集的构造+bagging,正负样本采样等操作。接下来,我从什么时候出现正负样本不均的情况,它会影响什么结果,以及最后解决的方法这三个角度,去梳理这类问题的过程。
(1)什么情况会遇到正负样本不均?
所谓的不平衡指的是不同类别的样本量异非常大。样本分布不均衡将导致样本量少的分类所包含的特征信息过少,并很难从中提取规律;即使得到分类模型,也容易产生过度依赖于有限的数据样本而导致过拟合的问题,当模型应用到新的数据上时,模型的准确性和鲁棒性将很差。
样本分布不平衡主要在于不同类别间的样本比例差异,以笔者的工作经验看,如果不同分类间的样本量差异达到超过10倍就需要引起警觉并考虑处理该问题,超过20倍就要一定要解决该问题。
一般在异常检测场景,发生频率低的等事件 上会出现正负样本不均。
(2)正负样本不均会影响什么结果?
(1)会影响 准确度(accuracy)
(2)不会影响 TPR,FPR ,AUC 等
不能用准确度这个指标来评价分类质量,在类别不均衡时,分类器会将所有的样本都分类到大类下面时,该指标值仍然会很高。即,该分类器偏向了大类这个类别的数据。
而一些其他评价指标 TPR,FPR ,AUC ,F1得分(F1 Score):(精确度与找召回率的加权平均)。不会受到影响。
真正率(TPR) = 灵敏度(Sensitivity) = TP/(TP+FN) 假正率(FPR) = 1-特异度(Specificity)
= FP/(FP+TN)
TPR和FPR分别是基于实际表现1、0出发的,也就是说在实际的正样本和负样本中来观察相关概率问题。因此,无论样本是否均衡,都不会被影响。
例如总样本中有90%的正样本,10%的负样本。TPR能够得到90%正样本中有多少是被真正覆盖的,而与那10%无关。同理FPR能够得到10%负样本中有多少是被覆盖的,而与那90%无关。因此我们从实际表现的各个结果出发,就能避免样本不平衡的问题,这就是为什么用TPR和FPR作为ROC、AUC指标的原因。
(3)怎么解决正负样本不均?
参考文章:
[1] 解决样本类别分布不均衡的问题 : https://www.cnblogs.com/bymo/p/9766358.html
[2] CTR 预估正负样本 不平衡,请问怎么解决 ?
[3] 在分类中如何处理训练集中不平衡问题
[4] 11.3 分类样本不平衡问题