机器学习,解决数据倾斜问题的实用策略!

数据倾斜问题的背景

        在真实世界的数据集中,不同类别的样本数量往往是不平衡的。

例如:

  • 在欺诈检测中,欺诈行为的发生频率远低于正常交易;
  • 在医学图像诊断中,某种罕见疾病的病例数量远少于常见疾病。

        当使用这些不平衡的数据集训练模型时,模型往往会偏向于数量较多的类别,导致对数量较少的类别的识别能力下降。

解决数据倾斜问题的策略

1.数据重采样🚀.

数据重采样是最直接解决数据倾斜问题的方法之一。它可以通过增加少数类样本(过采样)或减少多数类样本(欠采样)来调整数据集的分布,使不同类别的样本数量趋于平衡。 

  • 过采样:对于数量较少的类别,可以通过复制其样本或生成新的合成样本来增加其数量。但需要注意的是,简单的复制可能导致过拟合问题。因此,可以使用如SMOTE等过采样技术,通过插值方法生成新的样本。
  • 欠采样:对于数量较多的类别,可以通过随机删除部分样本来减少其数量。但同样需要注意,简单地删除样本可能会导致信息丢失。因此,可以使用如Tomek Links、Edited Nearest Neighbours等欠采样技术,选择性地删除那些对模型训练影响较小的样本。
  • SMOTE,全称为Synthetic Minority Over-sampling Technique,即合成少数类过采样技术。这是一种用于解决数据类别不平衡问题的综合采样人工合成数据算法。它的基本思想是对少数类样本进行分析,并根据这些样本人工合成新的样本添加到数据集中。

    具体来说,SMOTE算法会对于少数类中的每一个样本X,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,得到其K近邻。然后,对于每一个随机选出的近邻XN,分别与原样本按照一定的公式构建新的样本。这样,通过增加少数类样本的数量,可以在一定程度上平衡数据集的分布,从而提高分类器的性能。

  • Tomek Links是指邻近的两个相反类的例子,即如果两个不同类别的样本A、B,A的最近邻是B,B的最近邻是A,那么A和B就被称为一个Tomek Link。在解决数据倾斜问题时,可以通过删除Tomek Link中的一个样本(通常是多数类样本)来清理数据集,使得数据定义变得更加清晰,有助于训练出更准确的分类模型。、
  • Edited Nearest Neighbours(ENN)是一种基于K近邻(KNN)的数据清洗和特征选择方法。它的基本思想是,对于数据集中的每一个样本,检查其K近邻的类别标签。如果某个样本的K近邻中大多数与其自身标签不同,则认为该样本是噪声或边界点,可以将其删除。通过反复应用ENN算法,可以从数据集中移除被错误分类的实例,从而提高数据集的质量和模型的性能。

2. 数据增强🚀.

数据增强是一种通过增加样本的多样性来提高模型泛化能力的方法。对于数量较少的类别,可以通过旋转、缩放、翻转、裁剪、颜色变换等数据增强技术来增加其样本的数量和多样性。这有助于模型更好地学习这些类别的特征。

3. 类别权重🚀.

在训练模型时,可以为不同类别的样本设置不同的权重。通常,数量较少的类别会被赋予更高的权重,以使其在训练过程中受到更多的关注。这可以通过修改损失函数来实现,例如使用加权交叉熵损失函数

加权交叉熵损失函数(Weighted Cross-Entropy Loss Function)是在深度学习和机器学习领域,特别是在处理不平衡样本分类问题时,常用的一种损失函数。它是在交叉熵损失函数的基础上,通过为每个类别分配不同的权重,来调整不同类别之间的重要性,从而解决样本不平衡问题。

例子:

        假设我们有一个二分类问题,其中类别0(少数类)的样本数量为100,类别1(多数类)的样本数量为1000。为了解决这个问题,我们可以使用加权交叉熵损失函数。

首先,我们为每个类别分配一个权重。在这个例子中,我们可以给类别0(少数类)分配一个较大的权重,比如5(这只是一个示例值,实际权重需要根据具体情况进行调整)。类别1(多数类)的权重则可以是1(或保持默认)。

        现在,假设我们的模型对于一个类别0的样本预测的输出概率为0.3(即模型认为这个样本有30%的概率是类别0),而实际的标签是类别0。对于类别0,加权交叉熵损失的计算方式如下:

损失 = - 权重 * 真实标签 * log(预测概率) = - 5 * 1 * log(0.3) = - 5 * log(0.3)

        同样地,如果我们有一个类别1的样本,模型预测的输出概率为0.7(即模型认为这个样本有70%的概率是类别1),而实际的标签也是类别1,那么对于类别1的加权交叉熵损失为:

损失 = - 权重 * 真实标签 * log(预测概率) = - 1 * 1 * log(0.7) = - log(0.7)

        然后,我们将所有样本的损失进行加权求和,得到最终的加权交叉熵损失。在这个例子中,由于类别0的样本数量远少于类别1,所以类别0的样本损失在总损失中的权重会更大,这有助于模型更加关注少数类的分类。

4. 使用专门的损失函数🚀.

针对数据倾斜问题,有一些专门的损失函数被设计出来。例如,Focal Loss是一种用于处理不平衡数据集的损失函数,它通过在损失函数中引入一个调制因子来降低数量较多类别的权重,从而提高模型对数量较少类别的识别能力。

        Focal Loss是一种特殊的损失函数,主要用于解决目标检测等任务中的类别不平衡问题,特别是在正负样本比例悬殊或难易样本比例不均时,Focal Loss能够显著提高模型的分类性能。

        Focal Loss的原理是通过对交叉熵损失函数进行改进,引入了一个调制因子(Modulating Factor),这个因子可以减少简单样本(即模型已经能够很好分类的样本)的权重,同时增加困难样本(即模型难以正确分类的样本)的权重。这样,模型在训练过程中会更加关注那些难以分类的样本,从而提高整体的分类性能。

        具体来说,Focal Loss的计算公式如下:

        FL(p_t) = -α_t * (1 - p_t)^γ * log(p_t) 

其中:

  • p_t是样本真实类别的预测概率,
  • α_t是类别权重(用于调节正负样本的权重),
  • γ是调制因子(用于调节难易样本的权重)。

        当γ=0时,Focal Loss退化为标准的交叉熵损失函数。当γ增加时,调制因子的作用也会增强,模型会更加关注那些难以分类的样本。

5. 重新设计数据收集策略🚀.

        如果可能的话,重新设计数据收集策略以平衡不同类别的样本数量也是一个有效的方法。虽然这需要更多的时间和资源,但在长期内可能会对模型的性能产生积极影响。例如,在医学图像诊断中,可以通过增加对罕见疾病的筛查力度来收集更多的病例数据

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
众所周知,人工智能是当前最热门的话题之一, 计算机技术与互联网技术的快速发展更是将对人工智能的研究推向一个新的高潮。 人工智能是研究模拟和扩展人类智能的理论与方法及其应用的一门新兴技术科学。 作为人工智能核心研究领域之一的机器学习, 其研究动机是为了使计算机系统具有人的学习能力以实现人工智能。 那么, 什么是机器学习呢? 机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科。 机器学习的用途 机器学习是一种通用的数据处理技术,其包含了大量的学习算法。不同的学习算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已成功地应用于下列领域: 互联网领域----语音识别、搜索引擎、语言翻译、垃圾邮件过滤、自然语言处理等 生物领域----基因序列分析、DNA 序列预测、蛋白质结构预测等 自动化领域----人脸识别、无人驾驶技术、图像处理、信号处理等 金融领域----证券市场分析、信用卡欺诈检测等 医学领域----疾病鉴别/诊断、流行病爆发预测等 刑侦领域----潜在犯罪识别与预测、模拟人工智能侦探等 新闻领域----新闻推荐系统等 游戏领域----游戏战略规划等 从上述所列举的应用可知,机器学习正在成为各行各业都会经常使用到的分析工具,尤其是在各领域数据量爆炸的今天,各行业都希望通过数据处理与分析手段,得到数据中有价值的信息,以便明确客户的需求和指引企业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值