模型预测笔记(二):结合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))

效果

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

在这里插入图片描述

目录
相关文章
|
机器学习/深度学习 数据采集 人工智能
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
|
8月前
|
机器学习/深度学习 传感器 算法
Python | Stacking回归和SHAP可解释性分析回归预测及可视化算法
本教程基于Python实现Stacking回归与SHAP可解释性分析,涵盖地球科学、医学、工程等多领域回归预测应用。结合CatBoost、LightGBM、XGBoost等模型,采用贝叶斯、随机与网格搜索优化参数,并通过SHAP值可视化特征贡献,提升模型性能与可解释性,适用于科研与实际项目。
1007 2
|
6月前
|
机器学习/深度学习 存储 物联网
拒绝黑盒飞行:40个核心术语拆解LLM从算力层到Agent层的工程架构
本文是一份大模型全链路硬核字典,用通俗语言拆解40个核心术语,覆盖物理层(Token、Transformer、VRAM等)、训练层(Pre-training、RLHF、LoRA等)、部署层(vLLM、量化、并行技术)及应用层(RAG、Agent、CoT等),助开发者轻松翻越“名词高墙”。
1061 5
|
算法 Python
SMOTE
【6月更文挑战第26天】
2004 1
|
API vr&ar 索引
1张照片 2秒钟 一键变身3D数字人
LHM是一种基于单视角图像的端到端Transformer模型,结合SMPL-X人体模型与高斯渲染技术,可从一张照片生成可驱动的3D数字人。它采用Vision Transformer和Mae模型提取特征,并通过Body-Head Transformer融合2D与3D信息,输出具有动作能力的高精度3D人体模型。应用于动作重现、游戏角色生成及虚拟现实等领域,代码已开源并提供在线体验入口。
1923 1
|
机器学习/深度学习 算法 Python
Python 使用SMOTE解决数据不平衡问题(最新推荐)
SMOTE是一种强大的过采样技术,可以有效地处理不平衡数据集,提升分类器的性能。通过imbalanced-learn库中的SMOTE实现,我们可以轻松地对少数类样本进行过采样,平衡数据集。在实际应用中,我们可以根据具体数据集的特点和需求,选择合适的过采样方法。
|
存储 数据可视化 数据管理
在ArcGIS Pro中使用栅格函数
在ArcGIS Pro中使用栅格函数
934 1
|
机器学习/深度学习 PyTorch 算法框架/工具
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
【10月更文挑战第1天】深度学习中,模型微调虽能提升性能,但常导致“灾难性遗忘”,即模型在新任务上训练后遗忘旧知识。本文介绍弹性权重巩固(EWC)方法,通过在损失函数中加入正则项来惩罚对重要参数的更改,从而缓解此问题。提供了一个基于PyTorch的实现示例,展示如何在训练过程中引入EWC损失,适用于终身学习和在线学习等场景。
1647 4
揭秘深度学习中的微调难题:如何运用弹性权重巩固(EWC)策略巧妙应对灾难性遗忘,附带实战代码详解助你轻松掌握技巧
|
JSON 测试技术 API
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
这篇文章详细介绍了HTTPRunner 2.x的高级使用技巧,包括工具的设计思想、核心功能、分层测试思想,以及如何搭建开发环境、理解基础概念、掌握关键知识点和进行框架扩展使用。
575 2
连测试大拿都不敢说熟练掌握的HTTPRUNNER2.x使用技巧
|
机器学习/深度学习 算法 机器人
【博士每天一篇文献-算法】改进的PNN架构Lifelong learning with dynamically expandable networks
本文介绍了一种名为Dynamically Expandable Network(DEN)的深度神经网络架构,它能够在学习新任务的同时保持对旧任务的记忆,并通过动态扩展网络容量和选择性重训练机制,有效防止语义漂移,实现终身学习。
658 9

热门文章

最新文章