当常规的算法都山穷水尽之后,你可以试试python中的SMOTE算法

本文介绍了在样本不平衡情况下,如何使用Python实现SMOTE(Synthetic minority over-sampling technique)算法进行过抽样。作者通过实例展示了从数据预处理、计算距离到生成新样本的完整过程,并探讨了SMOTE的改进方法,如结合Tomek link。文章还提供了相关资源链接和深度学习课程推荐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击“阅读原文”直接打开【北京站 | GPU CUDA 进阶课程】报名链接


沙韬伟,苏宁易购高级算法工程师。
曾任职于Hewlett-Packard、滴滴出行。
数据学院特邀讲师。
主要研究方向包括风控、推荐和半监督学习。目前专注于基于深度学习及集成模型下的用户行为模式的识别。


之前一直没有用过python,最近做了一些数量级比较大的项目,觉得有必要熟悉一下python,正好用到了smote,网上也没有搜到,所以就当做一个小练手来做一下。


首先,看下Smote算法之前,我们先看下当正负样本不均衡的时候,我们通常用的方法:


抽样


常规的包含过抽样、欠抽样、组合抽样


过抽样:将样本较少的一类sample补齐。


欠抽样:将样本较多的一类sample压缩。


组合抽样:约定一个量级N,同时进行过抽样和欠抽样,使得正负样本量和等于约定量级N。


这种方法要么丢失数据信息,要么会导致较少样本共线性,存在明显缺陷。


权重调整


常规的包括算法中的weight,weight matrix。


改变入参的权重比,比如boosting中的全量迭代方式、逻辑回归中的前置的权重设置。


这种方式的弊端在于无法控制合适的权重比,需要多次尝试。


核函数修正


通过核函数的改变,来抵消样本不平衡带来的问题。

这种使用场景局限,前置的知识学习代价高,核函数调整代价高,黑盒优化。


模型修正


通过现有的较少的样本类别的数据,用算法去探查数据之间的特征,判读数据是否满足一定的规律。


比如,通过线性拟合,发现少类样本成线性关系,可以新增线性拟合模型下的新点。

实际规律比较难发现,难度较高。


SMOTE(Synthetic minoritye over-sampling technique,SMOTE)是Chawla在2002年提出的过抽样的算法,一定程度上可以避免以上的问题。


下面介绍一下这个算法:


正负样本分布


<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值