当前位置:首页 > 手机资讯 > 正文

样本不平衡解决技巧

样本不平衡解决技巧

我们将尝试使用任何方法来改善由于训练数据不平衡而导致的较差性能,我们的假设是少数类别有更差的训练和测试错误。

从这个基线模型,我们将应用一些技巧来获得更高的测试精度和泛化能力更强的模型。

1. 调整权重

在这里,我们的损失函数是通过给少数类别分配相对较高的权重。我们可以使用scikit-learn库中的重新加权方法来估计不平衡数据集的类权重,以’ balanced '作为参数,类权重将由n_samples / (n_classes * np.bincount(y))给出。

 

正如你所看到的,在某些类中,数据越低,它得到的权重就越大,反之亦然。

2.学习率策略

在任何优化器中,固定的学习率都是默认的学习率计划。为了在训练阶段获得最佳的优化,选择合适的学习率是很困难的。通过在本例中对不同的学习速率进行实验,lr=0.001显示了相对较好的性能。这可以作为我们实验不同学习速率策略的基准。学习率策略是为了在特定阶段的训练阶段使用合适的学习率。学习率策略通过根据损失函数值的变化来决定学习率是否衰减。

 

4.损失函数

解决类不平衡问题的常见损失函数之一是使用Focal loss。Focal Loss不是试图减少离群值或模型的预测与事实相去甚远的预测,而是减少它正确预测的值的权重(或影响)。损失函数是一种数学方法用来表示猜测值与数据点实际值之间的距离。我们也可以做一些研究和实验来使用或创建我们自己的损失函数,这项研究被称为度量学习。

5.标签平滑

深度学习模型可能会变得过于自信,因此,模型不能很好地泛化,特别是在训练阶段使用不平衡的数据集时。标签平滑是一种用于分类问题的正则化技术,以防止模型过于自信地预测标签。这个想法很简单,例如,我们有10个类,其中一个y的one-hot是这样的。

根据上面的标签,我们知道标签是类别9。在我们用一个特定的平滑因子应用标签平滑之后,第9类的标签变成了这样。。

遇到包含大量类(超过100个类)的大规模数据集,通常使用这个技巧来在模型中获得更高的准确性。但是,因为我们的数据集只有10个类,所以没有必要应用这个技巧。

1.训练

 
分析
  • 重新加权(re-weighted):训练效果优于基线模型(没有任何处理),重新加权技术可以稍微减少过拟合问题,但训练阶段并不是真正稳定的。
  • 学习率策略和重新加权(Learning rate scheduler and Re-weighted):从这个实验中,你可以从上图中看到,在训练的稳定阶段,使用学习率策略的训练性能比没有使用学习率策略的训练性能更好。
  • Focal Loss-学习率策略和重新加权(Focal loss- Learning rate scheduler and Re-weighted):focal loss确实克服了过拟合问题,但不幸的是,精度是所有实验中最低的,但幸运的是,另一个实验中,损失也是最低的。从这个实验中,我们可以得出结论,不平衡的数据集处理有一些权衡,如准确性高但容易过拟合或准确性低,损失也低。但我们的目标是需要更高的精度和更低的损失来得到一个泛化很好的模型。
  • 学习率策略,数据增强,随机过采样(Learning rate scheduler, Data augmentation, and Random oversampling):在这个实验中,我们切换回使用常见的交叉熵损失,但加入了一些数据增广和随机过采样与学习率策略。我们删除了重新加权部分,以查看使用这些技术的效果。我们可以看到过拟合问题仍然会发生,但是混淆矩阵的结果和测试结果告诉我们不同的见解(详见测试部分)。
  • 学习率调度,数据增强,随机过采样,重新加权(Learning rate scheduler, Data augmentation, Random oversampling, and Re-weighted):在本实验中,我们在之前的实验中加入了重新加权来训练模型,我们可以看到,上面的结果是我们考虑训练行为(准确性、稳定性和拟合性)和测试结果所能得到的最平衡的结果。虽然模型仍然是过拟合的,但与其他模型相比,该模型是泛化能力最好的模型(详见测试部分)。

2.测试

分析
  • 重新加权(Re-Weighted):测试结果有了一定的提高,这主要表现在第3类和第9类的准确度提高了。
  • 学习率策略和重新加权(Learning rate scheduler and Re-weighted):添加学习率策略后,测试结果略有改善。在小类和极小类数据集中,正确预测数量增加,而在类1和类5上错误预测的数量减少。所以总体精度提高了0.01。
  • Focal Loss-学习率策略和重新加权(Focal loss- Learning rate scheduler and Re-weighted):Focal Loss使模型泛化能力更强但牺牲另一个类的准确性,这是一个权衡,避免不平衡数据集过度拟合,但在我们的例子中,不平衡数据集比较严重(因为某些类只有很少量的数据),所以很难得到精度高而不过度拟合模型。
  • 学习率策略,数据增强,随机过采样,重新加权(Learning rate scheduler, Data augmentation, Random oversampling, and Re-weighted):从以上结果可以看出,如果不重新加权数据集,模型容易出现过拟合。然而,在所有的实验中,总体性能是最高的,但更好的泛化能力并不发生在这个实验中(因为所有类得到一点点更好的结果)。我们仍然不推荐这个模型,因为在这个结果中仍然存在很高的精度差距。

在本文的最后,从实验中,我们可以得出结论,处理不平衡的数据集有一些权衡,比如准确性高但容易过拟合,或者模型没有过拟合但性能较低。然而,我们的目标是,我们需要相当的精度和更低的损失,以得到一个泛化能力较强的模型。训练阶段的一些技巧可能有助于克服这个问题。

有话要说...