当前位置: 首页 > 科技观察

机器学习中处理不平衡类别的5种策略

时间:2023-03-20 10:53:28 科技观察

类别不平衡:假设你有一个罕见疾病机器学习数据集,即大约8%的阳性。在这种情况下,即使您不训练并且只是说没有生病,这也会提供92%的准确率。因此,在类别不平衡的情况下,准确性是不准确的。在本指南中,我们描述了机器学习中处理不平衡类的5种策略:少数类,以便样本大小与多数类匹配。首先,我们将每个类的观察结果分成单独的DataFrame。接下来,我们将通过替换对少数类进行重新采样,将样本数设置为与多数类的样本数相匹配。***,我们将上采样的少数类DataFrame与原始多数类DataFrame结合起来。创建合成样本(数据增强)创建合成样本是上采样的近亲,有些人可能会将它们组合在一起。例如,SMOTE算法是一种从少数类中重采样的方法,同时稍微调整特征值,从而创建“新”样本。2.对多数类进行下采样:下采样涉及从多数类中随机删除观察值,以防止它们的信号支配学习算法。首先,我们将每个类的观察结果分成单独的DataFrame。接下来,我们将不放回地对多数类进行重新采样,设置样本数以匹配少数类。***,我们将降采样后的多数类DataFrame与原始的少数类DataFrame结合起来。3.改变性能指标:AUROC(ROC曲线下面积)假设我们有一个概率二元分类器,比如逻辑回归。在介绍ROC曲线之前,必须了解混淆矩阵的概念。当我们进行二元预测时,可以有4种类型的结果:我们预测0而真正的类别实际上是0:这称为真负类,即我们正确预测类别为负类(0)。例如,防病毒软件不会将无害文件检测为病毒。我们预测0而真正的类实际上是1:这称为假阴性,即我们错误地预测该类为负(0)。例如,防病毒软件无法检测病毒。我们预测1而真正的类实际上是0:这称为误报,即我们错误地将类预测为正类(1)。例如,防病毒软件将无害文件视为病毒。我们预测1而真正的类实际上是1:这称为真阳性,即我们正确预测该类为阳性(1)。例如,防病毒软件正确检测到病毒。为了获得混淆矩阵,我们回顾了机器学习项目模型所做的所有预测,并计算了这4种结果中每一种结果发生的次数:在这个混淆矩阵示例中,在分类的50个数据点中,有45个是正确分类,5个被错误分类。由于使用单个指标比使用多个指标来比较不同模型通常更方便,因此我们从混淆矩阵中计算出两个指标并将它们合并为一个:真阳性率(TPR),又名灵敏度,***率和召回率,定义为+TPTP+FN。直观地,该度量对应于相对于所有正数据点被正确认为是正的正数据点的比例。换句话说,TPR越高,我们错过的正数据点就越少。假阳性率(FPR),也称为fall-out,定义为+FPFP+TN。直观地,该度量对应于被错误地认为是正的负数据点相对于所有负数据点的比例。换句话说,FPR越高,就会有越多的负数据点被错误分类。为了将FPR和TPR组合成一个指标,我们首先计算逻辑回归中的前两个指标,具有许多不同的阈值(例如0.00、0.01、0.02、...、1.000.00;0.01、0.02、...、1.00),然后将它们绘制在横坐标为FPR值、纵坐标为TPR值的图表上。得到的曲线称为ROC曲线,我们考虑的指标是这条曲线的AUC,我们称为AUROC。下图以图形方式显示了AUROC:在此图中,蓝色区域对应于AUROC曲线下的区域。对角线中的虚线表示随机预测变量的ROC曲线:它的AUROC为0.5。AUROC介于0和1之间,AUROC=1表示预测模型是完美的。事实上,AUROC离0.5越远越好:如果AUROC<0.5,那么你只需要反转模型所做的决定。因此,如果AUROC=0,这是个好消息,因为您只需要反转模型的输出即可获得最佳机器学习模型。4.惩罚算法:下一个策略是使用惩罚学习算法,增加少数类错误分类的成本。这种技术的一种流行算法是Penalized-SVM:支持向量机在训练期间,我们可以使用参数class_weight='balanced'来惩罚少数类的错误,其数量与它们未被充分代表的数量成正比。如果我们要为SVM算法启用概率估计,我们还需要包含参数probability=True。让我们在原始不平衡数据集上使用Penalized-SVM训练模型:5.使用基于树的算法我们将考虑的最佳策略是使用基于树的算法。决策树通常在不平衡数据集上表现良好,因为它们的层次结构允许它们从两个类别中学习信号。在现代应用机器学习中,树的集合(随机森林、梯度提升树等)几乎总是优于单个决策树:97%的准确率和接近100%的AUROC。树集成变得非常流行,因为它们在许多现实世界的问题上表现非常好。然而:虽然这些结果令人鼓舞,但机器学习模型可能会过度拟合,因此在做出最终决定之前,您仍应在测试集上评估机器学习模型。