python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题

Posted Data+Science+Insight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题相关的知识,希望对你有一定的参考价值。

python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题

机器学习中常常会遇到数据的类别不平衡(class imbalance),也叫数据偏斜(class skew)。以常见的二分类问题为例,我们希望预测病人是否得了某种罕见疾病。但在历史数据中,阳性的比例可能很低(如百分之0.1)。在这种情况下,学习出好的分类器是很难的,而且在这种情况下得到结论往往也是很具迷惑性的。

以上面提到的场景来说,如果我们的分类器总是预测一个人未患病,即预测为反例,那么我们依然有高达99.9%的预测准确率。然而这种结果是没有意义的,对于这种情况该如何去评估模型如何去训练模型或者调整数据集?
所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。

为什么类不平衡是不好的

从模型的训练过程来看

从训练模型的角度来说,如果某类的样本数量很少,那么这个类别所提供的“信息”就太少。

使用经验风险(模型在训练集上的平均损失)最小化作为模型的学习准则。设损失函数为0-1 loss(这是一种典型的均等代价的损失函数),那么优

以上是关于python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题的主要内容,如果未能解决你的问题,请参考以下文章

python使用imbalanced-learn的CondensedNearestNeighbour方法进行下采样处理数据不平衡问题

python使用imbalanced-learn的NeighbourhoodCleaningRule方法进行下采样处理数据不平衡问题

python使用imbalanced-learn的EditedNearestNeighbours方法进行下采样处理数据不平衡问题

python使用imbalanced-learn的BorderlineSMOTE方法进行上采样处理数据不平衡问题

python使用imbalanced-learn的RandomUnderSampler方法进行下采样处理数据不平衡问题

python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题