类别不平衡(class-imbalance),又称数据倾斜、数据不平衡,是指分类任务中不同类别的训练样例数量差异较大的情况。
在实际的分类学习任务中,我们经常遇到广告点击率预测、故障分析、异常检测等类别不平衡;或者在通过拆分解决多分类问题时,即使原始问题中不同类别的培训样本数量相同,也在使用OvR(Onevs.Rest)、MvM(Manyvs.Many)战略后产生的二级分类任务仍可能出现类别不平衡。标准机器学习算法通常假设不同类别的样本数量大致相似,因此类别不平衡会大大降低学习算法的效果。因此,有必要了解类别不平衡时的基本处理方法。
每种解决方案都有其适用范围,需要因地制宜。有时候根本不需要特别处理,比如这两种情况(正样本是少数类别):样本轮换的问题和建议
已经给出问题的指标是ROC或者AUC对类别不平衡不敏感的指标,此时不处理和处理的差异不大;正样本和负样本在任务中同样重要,即预测对正样本和负样本同样重要,因此不处理,使正样本被淹没也没有影响。如果我们对召回有特别大的需求,也就是说,我们更关心正样本,那么很难得到我们想要的结果。因此,以下是一些方法
(1)收集数据
针对少量样本数据,可以尽可能去扩大这些少量样本的数据集,或者尽可能去增加他们特有的特征来丰富数据的多样性
(2)将分类任务转换为异常检测
如果少数样本太少,少数样本的结构可能无法很好地表示少数样本的分布,那么平衡数据或调整算法的方法可能并不有效。如果这些少数样本分散在特征空间中,情况就会更糟。此时,最好将其转换为无监督的异常检测算法,而不必考虑将数据转换为平衡问题。聚类/高斯检测。
(3)调整权重
损失函数的权重可以简单地设置,少数类别可以更加关注。python的scikit-learn我们可以用它class_weight设置权重的参数。为了权衡不同类型错误造成的不同损失,错误可以被赋予不平等的代价
例如,在医学诊断中,对健康人的错误诊断可能会给患者带来进一步检查的麻烦,但对健康人的错误诊断可能会失去拯救生命的最佳时机。
(4)阈值调整
直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将原本默认为0.5阈值阈值。(大部分是负样本,所以分类器倾向于给出较低的分数)
重采样是不平衡学习领域应用最广泛的方法,注重修改训练数据集,使标准学习算法能够有效地训练。根据实现方法的不同,可以进一步分为样本轮换问题和建议
样本从大多数类别中删除(例如ENN、Tomeklink、NearMiss、EasyEnsemble等)采样,为少数类别生成新样本(如SMOTE、Borderline-SMOTE、ADASYN等)上述两种方案的结合(如SMOTE ENN等)由于随机抽样可能丢失含有重要信息的样本,随机抽样可能导致严重的过拟合(简单复制少数样本),引入无意义甚至有害的新样本(粗略合成少数样本),因此开发了一系列更先进的方法,试图根据数据分布信息重新抽样,同时保持原始数据结构。
在重采样过程中,应尽可能保持训练样本与测试样本的概率分布一致。如果违反了独立分布的假设,很可能会产生不良影响。
在学习之前,删除大多数类别中的样本,使例子和反例数接近
(1)随机欠采样
顾名思义,从大多数类别中随机选择一些样本组成样本集。然后将新样本集与少数样本集合并。
通过改变大多数可以通过改变大多数样本的比例来修改样本分布,从而使样本分布更加平衡,但也存在一些问题。对于随机欠采样,由于采样的样本集低于原始样本集,因此会导致一些信息缺失,即删除大多数样本可能会导致大多数类的重要信息丢失。
(2)EditedNearestNeighbor(ENN)
如果他的大部分样本遍历大多数样本,k近邻样本与自己的类别不同,我们会删除他;
(3)RepeatedEditedNearestNeighbor(RENN)
重复以上ENN直到没有样本可以删除过程;
(4)TomekLinkRemoval
其思想是,类别之间的边缘可能会增加分类的难度,通过去除边缘中的大多数样本,可以使类别之间margin更大,分类方便。具体方法如下:样本轮换问题及建议
如果有两种不同类型的样本,他们最近的邻居就是对方,也就是说A的最近邻是B,B的最近邻是A,那么A,B就是Tomeklink,我们要做的就是把一切都做好Tomeklink删除一切。然后删除一个。Tomeklink方法是组成Tomeklink如果两个样本中有一个属于大多数样本,请删除大多数样本。这样,我们就可以发现正负样本更加分离。如下图所示。
(1)随机采样
随机采样是少数类型S随机选择一些样本,然后通过复制选定的样本生成样本集E,添加它们S扩大原始数据集,获得新的少数集合S E。
对于随机采样,需要复制少数样本来扩大数据集,导致模型训练的复杂性增加。另一方面,也容易造成模型的过拟合问题,因为随机采样只是复制初始样本,使学习器学习的规则过于具体,不利于学习器的泛化性能,导致过拟合问题。
(2)SMOTE(SyntheticMinorityOversampling,合成少数类过采样)
SMOTE它是一种改进算法,通过插入少数样本来生成更多的少数样本。基本思想是针对每个少数样本,从k在近邻中随机选择一个样本也是少数类中的一个),然后在两者之间的连接中随机选择一个样本作为新合成的少数类。
以下两个缺点:
(3)BorderlineSMOTE
将所有少数样本分为三类:
Noise:所有的k相邻样本属于多数类;Danger:超过一半的k近邻样本属于多数类;Safe:超过一半的k近邻样本属于少数类。如下图所示。Danger类的点在边界处,以种子为出发点,然后使用SMOTE算法生成新样本。如果选择的样本在另一端Noise或Safe集合时,随机插值应靠近种子样本端。
SMOTE TomekLinkRemovalSMOTE ENN...优点:
平衡类别分布,在重采样后的数据集上进行训练,可以提高某些分类器的分类性能。在模型训练过程中,减少数据集规模和计算费用。
基于距离的邻域关系通常用于采样过程计算效率低下(k近邻)来提取数据分布信息,计算开销大。易被噪声影响,最近邻算法容易被噪声干扰,可能无法得到准确的分布信息,从而导致不合理的重采样策略。过采样方法生成过多数据,会进一步增大训练集的样本数量,增大计算开销,并可能导致过拟合。不适用于无法计算距离的复杂数据集,如用户ID。成本敏感学习是调整权重方法的扩展,调整权重方法通常用于第二类,但成本敏感学习进一步扩展这一思想,可以设置成本矩阵进行多分类,也可以使用成本矩阵进行标准算法转换,以适应不平衡数据的学习,如决策树,成本矩阵可以进入决策阈值选择、分裂标准、分支三个方面。
可直接用于多分类问题,不增加训练的复杂性。缺点:
需要领域先验知识:成本矩阵需要由领域专家根据任务先验知识提供,这在许多实际问题中显然是不可用的。因此,在实际应用中,成本矩阵通常直接设置为不同类别的样本数量比,不能保证最佳的分类性能。不适用于某些分类器:批量培训(mini-batchtraining)方法训练模型(如神经网络)只存在于少数批次中,导致梯度下降和更新的非凸优化过程很快落入鞍点,使网络无法有效学习。
为了克服随机采样方法造成的信息缺失,保证算法表现出良好的不平衡数据分类性能,以及以采样方法为代表的算法EasyEnsemble。
1:在数据中,少数标签是P,多数标签的N,为P与N在数量上的比例,T需要收集的subset也可以说是设置的基分类器的数量。训练基分类器i(默认使用AdaBoost,也可以设置为其他,如XGBoost)训练循环次数(iteration)。
2-5:根据少数标签P对于大多数标签量N随机采样,使采样的数量和P数量相同。
6:把和P结合起来,然后给基分类器i学习。这里的公式只是一个基分类器的训练过程。论文中使用的基分类器是AdaBoost,而AdaBoost是由N由弱分类器组成,j就是表示Adaboost基分类器中的第一个j个弱分类器.
7:重复采样,训练T这样的基分类器。
8:对T进行基分类器ensemble。而且这里不直接取T个基分类结果(0,1)投票,而是投票n加上个基分类器的预测概率,最后通过sign决定分类的函数,sgn函数就是sign函数,sgn将结果转化为两类,小于0返回-1,否则返回1。.
第一步是相同的,但没有发布。区别在于第7步和第8步。通过控制分类阈值来控制假正例率(FalsePositiveRate),删除所有判断正确的类别。
毕业证样本网创作《样本轮换问题及建议(样本不平衡及其解决方案)》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/173884.html