机器学习:类别不平衡问题笔记

类别不平衡问题是 分类任务 中常见的问题,表现为数据集中不同 类别 的样本数量存在 显著差异 (即某些类别的样本数量远远多于其他类别),它常见于真实世界的许多场景,例如:

在金融领域,银行区分欺诈行为(少)和正常交易行为(多);在医疗领域,筛查或诊断疾病时,病人(少)远少于健康人(多);以及在文本分类方面,识别垃圾邮件(少)和正常邮件(多)等。

这种不平衡会导致分类模型在训练阶段,过分关注于 多数类,使其在多数类上表现出较好的分类能力;而对于 少数类,模型往往因忽视它的信息而造成错分。这时候,由于多数类在数据集中占较大的比重,模型的 总体准确率 主要由多数类的准确率所决定,其泛化能力因此受到质疑。

然而,我们往往对这些少数类更感兴趣,这时候就需要解决这种不平衡问题。以下介绍常见的几种方法。


方法导图


一、数据准备阶段

合并类别:

某些类别的数量很少且非常相似,可以考虑将它们合并为一个类别,从而增加该类别的样本数量。

重采样(Resampling):

1. 过采样(Oversampling):增加少数类的样本数量,直至与多数类大致相同。简单的过采样方法是直接复制少数类的样本,但其存在过拟合的风险;而复杂的方法则是合成 新样本,如 SMOTE技术(Synthetic Minority Over-sampling Technique,SMOTE),它通过在全部少数类样本间进行插值生成新的样本;以及 自适应合成技术(Adaptive Synthetic,ADASYN),它在少数类样本中的离群值/异常值周围生成新的样本。Python中分别使用 imblearn库 中的 RandomOverSampler类、 SMOTE类 和 ADASYN类 来实现。

2. 欠采样(Undersampling):减少多数类的样本数量,使其与少数类的样本数量接近。因为选择性地舍弃了部分多数类样本,故可能会丢失重要信息。Python中使用 imblearn库 中的 RandomUnderSampler类 来实现。

二、建模阶段

集成方法:

使用多个模型的预测结果进行集成,如集成学习算法 EasyEnsemble 和 BalanceCascade。以及尝试不同的算法,例如,决策树和随机森林在某些情况下可能比逻辑回归或SVM更适合处理类别不平衡数据。

样本权重调整:

在模型的训练阶段,为少数类样本分配较高的权重,同时为多数类样本分配较低的权重。(通常在模型的参数中进行设置)

阈值调整:

对模型的预测结果的阈值进行调整。例如,在二分类问题中,通常使用0.5作为决策阈值,但由于类别不平衡,可能需要调整该阈值,使模型对少数类的预测更敏感。

三、评价阶段

采用合适的评估指标:

不以总体准确率为准,应分别评估不同类别的准确率。同时,联合精确率(Precision)、召回率(Recall)、F1分数(F1 Score),以及ROC曲线和AUC值 等指标进行判断。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值