模型预测笔记(二):结合SMOTE来进行数据不均衡处理实操

简介: 这篇文章介绍了SMOTE算法,这是一种通过合成新样本来处理数据不均衡问题的技术,旨在提高模型对少数类别的识别能力。

数据不均衡危害

在模型预测中,数据不均衡是指不同类别的样本数量差异很大。这种情况可能会对模型的性能和结果产生一些危害:

  • 偏斜的预测结果:由于某些类别的样本数量较少,模型可能会倾向于预测数量更多的类别,而忽略数量较少的类别。这会导致模型在预测时出现偏斜,对少数类别的预测效果较差。
  • 误导性的评估指标:在数据不均衡的情况下,使用传统的评估指标(如准确率)可能会产生误导。因为模型可以简单地将所有样本预测为数量更多的类别,从而获得较高的准确率,而忽略了对少数类别的预测能力。
  • 不稳定的模型训练:当数据不均衡时,模型可能会过度拟合数量较多的类别,而忽略数量较少的类别。这可能导致模型在实际应用中的泛化能力较差,对新样本的预测表现不佳。
  • 不准确的特征重要性:在数据不均衡的情况下,模型可能会错误地认为与数量更多的类别相关的特征更重要,而忽略了与数量较少的类别相关的特征。这可能导致模型对于不同类别的预测能力的偏差。

如何解决

为了解决数据不均衡的问题,可以采取以下一些方法:

  • 重采样技术:通过欠采样(随机删除数量较多的样本)或过采样(复制数量较少的样本)来平衡数据集中的类别数量。
  • 类别权重调整:通过为数量较少的类别赋予更高的权重,来平衡不同类别的重要性。
  • 引入合成样本:通过生成合成样本来增加数量较少的类别的样本数量,例如使用SMOTE(Synthetic Minority Over-sampling Technique)算法。
  • 使用集成方法:使用集成学习方法,如随机森林或梯度提升树,可以通过组合多个模型的预测结果来改善对少数类别的预测能力。

综上所述,数据不均衡可能会对模型预测的准确性和稳定性产生负面影响。通过合适的数据处理和模型调整方法,可以改善模型在不均衡数据集上的表现。

SMOTE

原理

SMOTE(Synthetic Minority Over-sampling Technique)是一种用于解决类别不平衡问题的数据增强算法。其原理如下:

  • 首先,对于数据集中的每一个少数类样本,计算其与其K个最近邻样本的差值:diff = neighbor - sample,其中neighbor是样本的一个最近邻样本,sample是当前样本。
  • 然后,对于每一个少数类样本,随机选择其中一个最近邻样本,并根据公式生成一个新的样本:new_sample = sample + random * diff,其中random是一个[0, 1]之间的随机数。
  • 最后,将生成的新样本添加到原始数据集中,使得少数类样本的数量增加,从而达到平衡数据集的目的。

SMOTE的关键思想是通过合成新的少数类样本来增加数据集中少数类样本的数量,从而达到平衡数据集的目的。通过引入合成样本,SMOTE可以更好地捕捉到少数类样本之间的特征分布,从而提高分类器的性能。也就是SMOTE 通过线性插值的方法在两个少数类样本间合成新的样本,从而有效缓解了由随机过采样引起的过拟合问题。

代码

# 遇到样本不均衡的问题,通过SMOTE来建立训练数据集和测试数据集
from sklearn.model_selection import train_test_split
sos = SMOTE(n_jobs=-1)
X_sos, y_sos = sos.fit_resample(X, y)
print('SMOTE过采样后,训练集 y_sos 中的分类情况:{}'.format(Counter(y_sos)))

X_train, X_test, y_train, y_test = train_test_split(X_sos,y_sos,test_size = 0.3, random_state = 0)
print("原始训练集包含样本数量: ", len(X_train))
print("原始测试集包含样本数量:  ", len(X_test))
print("原始样本总数: ", len(X_train)+len(X_test))

效果

初始:
在这里插入图片描述
处理后:

在这里插入图片描述

目录
相关文章
|
机器学习/深度学习 算法 测试技术
处理不平衡数据的过采样技术对比总结
在不平衡数据上训练的分类算法往往导致预测质量差。模型严重偏向多数类,忽略了对许多用例至关重要的少数例子。这使得模型对于涉及罕见但高优先级事件的现实问题来说不切实际。
517 0
|
3月前
|
人工智能 监控 搜索推荐
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
本文将通过构建AI研究助手的完整案例,展示如何使用LangGraph框架实现这种架构转变,从理论基础到具体实现,帮助你掌握下一代AI系统的构建方法。
820 0
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
|
机器学习/深度学习 大数据 关系型数据库
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
1558 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
5月前
|
并行计算 PyTorch 开发工具
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
OpenFold是一种基于深度学习的蛋白质结构预测模型,广泛应用于蛋白质从头预测、功能位点解析、突变效应模拟等领域。该模型的核心目标是通过大规模预训练和多阶段优化,从氨基酸序列中高效、准确地推断蛋白质的三维结构。
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
1339 1
|
数据可视化 数据挖掘 数据处理
模型预测笔记(四):pandas_profiling生成数据报告
本文介绍了pandas_profiling库,它是一个Python工具,用于自动生成包含多种统计指标和可视化的详细HTML数据报告,支持大型数据集并允许自定义配置。安装命令为`pip install pandas_profiling`,使用示例代码`pfr = pandas_profiling.ProfileReport(data_train); pfr.to_file("./example.html")`。
310 1
|
11月前
|
机器学习/深度学习 存储 人工智能
【AI系统】卷积操作原理
本文详细介绍了卷积的数学原理及其在卷积神经网络(CNN)中的应用。卷积作为一种特殊的线性运算,是CNN处理图像任务的核心。文章从卷积的数学定义出发,通过信号处理的例子解释了卷积的过程,随后介绍了CNN中卷积计算的细节,包括卷积核、步长、填充等概念。文中还探讨了卷积的物理意义、性质及优化手段,如张量运算和内存布局优化。最后,提供了基于PyTorch的卷积实现示例,帮助读者理解和实现卷积计算。
849 31
【AI系统】卷积操作原理
|
9月前
|
人工智能 自然语言处理 数据挖掘
CAMEL AI,通义千问新朋友+1
CAMEL AI,通义千问新朋友+1
|
机器学习/深度学习 算法 Python
Python 使用SMOTE解决数据不平衡问题(最新推荐)
SMOTE是一种强大的过采样技术,可以有效地处理不平衡数据集,提升分类器的性能。通过imbalanced-learn库中的SMOTE实现,我们可以轻松地对少数类样本进行过采样,平衡数据集。在实际应用中,我们可以根据具体数据集的特点和需求,选择合适的过采样方法。