机器学习分类数据不均衡的简单处理

分类数据不均衡的简单处理

下采样

随机选择类别较多的数据与类别较少的数据一致。

# X特征,y类别
X = data.ix[:, data.columns != 'Class']
y = data.ix[:, data.columns == 'Class']

# 小类别数据个数
number_records_fraud = len(data[data.Class == 1])
# 小类别数据索引
fraud_indices = np.array(data[data.Class == 1].index)

# 大类别数据索引
normal_indices = data[data.Class == 0].index

# 从大类别索引中随机选择,个数与小类别数据个数相同
random_normal_indices = np.random.choice(normal_indices, number_records_fraud, replace = False)
random_normal_indices = np.array(random_normal_indices)

# 合并小类别索引与下采样的大类别索引
under_sample_indices = np.concatenate([fraud_indices,random_normal_indices])

# 根据索引取数据
under_sample_data = data.iloc[under_sample_indices,:]
# 取出特征与类别
X_undersample = under_sample_data.ix[:, under_sample_data.columns != 'Class']
y_undersample = under_sample_data.ix[:, under_sample_data.columns == 'Class']

下采样会丢失信息,如何减少信息的损失呢?

  • 第一种方法叫做EasyEnsemble,利用模型融合的方法(Ensemble):多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果。
  • 第二种方法叫做BalanceCascade,利用增量训练的思想(Boosting):先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。
  • 第三种方法是利用KNN试图挑选那些最具代表性的大众样本,叫做NearMiss。

过采样

SMOTE

利用小众样本在特征空间的相似性来生成新样本。对于小众样本xi∈Smin,从它属于小众类的K近邻中随机选取一个样本点xi,生成一个新的小众样本xnew:xnew=xi+(x^−xi)×δ,其中δ∈[0,1]是随机数。

# imbalance-learn
from imblearn.over_sampling import SMOTE

features_train, features_test, labels_train, labels_test = train_test_split(features, 
                                                                            labels, 
                                                                            test_size=0.2, 
                                                                            random_state=0)
oversampler=SMOTE(random_state=0)
os_features,os_labels=oversampler.fit_sample(features_train,labels_train)

SMOTE为每个小众样本合成相同数量的新样本,这带来一些潜在的问题:一方面是增加了类之间重叠的可能性,另一方面是生成一些没有提供有益信息的样本。为了解决这个问题,出现两种方法:Borderline-SMOTE与ADASYN。

评价标准的选择

  • 混淆矩阵:将要预测的数据分到表里来显示正确的预测,并了解其不正确的预测类型。

  • 精度:(准确率/命中率)一种分类准确性的处理法。精度是一个不适用于不平衡的数据集的绩效指标。

  • 召回率:又称“查全率”,一种分类完整性的处理方法。

  • F1分数(F-score):精度和召回率的加权平均。

  • kappa(Cohen’s kappa):根据数据集合中数据的不平衡点来标准化分类精度。

  • ROC曲线:类似于精度和召回率,准确性被分为敏感性和特异性,并且可以基于这些值的平衡阈值来进行选择。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值