不平衡数据处理之SMOTE、Borderline SMOTE和ADASYN详解及Python使用

本文探讨了不平衡数据在金融风控、反欺诈等领域的普遍性及挑战,介绍了欠采样、过采样等处理方法,重点讲解了SMOTE、BorderlineSMOTE和ADASYN三种过采样算法的工作原理和Python实现。

  不平衡数据在金融风控、反欺诈、广告推荐和医疗诊断中普遍存在。通常而言,不平衡数据正负样本的比例差异极大,如在Kaggle竞赛中的桑坦德银行交易预测和IEEE-CIS欺诈检测数据。对模型而言,不均衡数据构建的模型会更愿意偏向于多类别样本的标签,实际应用价值较低,如下图所示,为在不均衡数据下模型预测的概率分布。
不均衡数据下模型预测的概率分布
  不平衡数据的处理方法,常见方法有欠采样(under-sampling)和过采样(over-sampling)、在算法中增加不同类别的误分代价等方法。其中,过采样中的SMTOE、Borderline SMOTE和ADASYN是实现简单且常见的处理方法。

1 SMOTE

  论文地址http://xueshu.baidu.com/usercenter/paper/show?paperid=28300870422e64fd0ac338860cd0010a&site=xueshu_se
  SMOTE(Synthetic Minority Oversampling Technique)合成少数类过采样技术,是在随机采样的基础上改进的一种过采样算法。实现过程如下图所示:
在这里插入图片描述
  首先,从少数类样本中选取一个样本xi。其次,按采样倍率N,从xi的K近邻中随机选择N个样本xzi。最后,依次在xzi和xi之间随机合成新样本,合成公式如下:

x n = x i + β × ( x z i − x i ) x_{n}=x_{i}+\beta\times \left ( x_{zi} -x_{i} \right ) xn=xi+β×(xzixi)

  SMOTE实现简单,但其弊端也很明显,由于SMOTE对所有少数类样本一视同仁,并未考虑近邻样本的类别信息,往往出现样本混叠现象,导致分类效果不佳。

SMOTE Python使用
  Python库中Imblearn是专门用于处理不平衡数据,imblearn库包含了SMOTE、SMOTEENN、ADASYN和KMeansSMOTE等算法。以下是SMOTE在Imblearn中使用的案例。

from collections import Counter
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE
X, y = make_classification(n_classes=2, class_sep=2,
                           weights=[0.1, 0.9
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值