类间样本数量不平衡对分类模型性能的影响问题

时间:2022-12-07 15:18:14

这篇博文是作者的一个实验笔记,研究一个”飞机-背景“二分类器在不同样本比例下精度,召回率的规律。

1. 问题描述

  固定正样本(飞机)2000个,改变负样本(背景)的训练数据量
1 : 0.5 、 1 : 1 、 1 : 2 、 1 : 5 、 1 : 10 、 1: 30.
随着负样本数量的增多,类间数据量不均衡的情况更为显著。
  测试时,分别随机选取4096张飞机、背景样本(不出现在训练集),对在每一种数据比例上训练的模型进行测试。

飞机分类的精度提升,召回率降低;
背景分类的精度降低,召回率升高。

  将这个问题归结为“类间样本数量不平衡对分类结果的影响”问题。
  类间样本数量不平衡对分类模型性能的影响问题

  类间样本数量不平衡对分类模型性能的影响问题

2. 思考

1.问题抽象

  将探讨问题归结为”类间数据量(比例)不平衡对分类结果的影响”问题。
2.思考点:

2.1谁是引起这一变化的主因?

  对于飞机分类,随着负样本增多,精度上升,召回率下降;
  对于背景分类,精度下降,召回率上升。
谁是主因?谁是从因?
  在这个实验中,飞机样本数据不变,是控制变量。负样本(背景)数据量逐渐增加,首先应该分析由于负样本增加而造成的精度、召回率变化;其次,要分析精度上升和召回率下降,哪一个变化是直接由负样本数据量最大引起的。

3.假设

3.1从模型训练的动力角度解释

  当类间数据量相差较大时,模型倾向于将样本判别为数据量大的样本,即可获得较低的损失,没有动力继续优化参数。
  极端的例子:训练样本中A类1个样本,B类100个样本,那么模型将样本判别为B类即可获得很低的损失值,从而失去继续训练优化的动力,网络性能弱。
分析实验结果的混淆矩阵:

airplane background
4088 8
72 4024

airplane background
4085 11
45 4051

airplane background
4084 12
18 4078

airplane background
4073 23
4 4092

airplane background
4067 29
2 4094

airplane background
4061 35
0 4096

  从混淆矩阵来看:
 

随着负样本(背景)占比越来越大,模型将更多原属于飞机类的样本判别为背景【观察第一行】。
而越来越少的背景样本被划分到飞机类别。从而背景分类的召回率增高,精度下降。

3.2 数据量大的类别拟合的更好

  一个直观的假设是:在类间数据量不平衡的训练过程中,模型对数据量多的类别的分布拟合的更好,导致对该类的分类性能更好。
  这个假设基于:某类型数据量越多,对模型的参数修改的越多,模型越能刻画一类型的分布,从而更好分类。
  这一假设有一些没有问题没有解释:

当背景样本数据量变大时,为什么是召回率上升?为什么只有召回率上升?

4 .一些启发

  训练样本类间数据量的不平衡会引起分类性能的改变。具体到这一实验:数据量越大的类别,其召回率会更高,相应地会损失一些精度。

5. TODO LIST

5.1 自动平衡样本,观察是否改善分类性能

  拷贝数据量少的类别的样本,使得两类的样本数目一致。观察自动平衡数据对分类结果是否有改进。

5.2 阅读“类间数据不平衡”相关文献

【深度学习结构化/非均衡数据集处理】《Practicing Guide on handling Structured & Imbalanced Datasets with Deep Learning》
https://www.analyticsvidhya.com/blog/2016/10/investigation-on-handling-structured-imbalanced-datasets-with-deep-learning/

Investigation on handling Structured & Imbalanced Datasets with Deep Learning
After extensive investigations, it does seem that Deep Learning has the potential to do well in the area of structured data. We investigate class imbalance as it is a challenging problem for anomaly detection. In this report, Deep Multilayer Perceptron (MLP) was implemented using Theano in Python and experiments were conducted to explore the effectiveness of hyper-parameters.