数据预处理-非平衡样本的处理方式(SMOTE--待补充)

Posted jing-yan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据预处理-非平衡样本的处理方式(SMOTE--待补充)相关的知识,希望对你有一定的参考价值。

     一.一般经验

     1. 1:20以上是需要做均衡处理的 ,普通数据召回率低的话1:10就可以做均衡处理  

      2. 一般如果不是严重不平衡,或者不平衡既是业务的正常反应,则不需要做处理,非平衡样本的处理方式不是必须的

      3. 多分类样本不均衡,只能过采样处理 (一般实验或比赛数据才会过采样处理, 一般不会过采样处理, 因为会有很多问题.)

    二.处理方法

1. 过采样:增加少数样本的个数,容易过拟合 用原始数据增加样本
2. 欠采样:减少多数样本的个数,容易丢失多数类的重要信息,容易欠拟合
3. SMOTE算法,合并少数类过采样技术 KNN近邻 增加的不是原始样本也不是真实的样本

三.SMOTE-只针对二分类模型

SMOTE算法步骤:
1. 随机找一个少数类的观测点
2. 用KNN计算观测点最近的样本
3. 随机挑选离观测点近邻的其中一个样本
4. 计算两点的差值后进行随机提取。所以这里的随机体现在两个方面,线性体现在求差值的运算上面。

# pip install imblearn

 

# 做平衡处理
from imblearn.over_sampling import SMOTE

# 实例化
over_samples = SMOTE(random_state=1234)

# fit数据结构
over_samples_x,over_samples_y = over_samples.fit_sample(Xtrain,Ytrain)
over_test_x,over_test_y = over_samples.fit_sample(Xtest,Ytest)   

# 重采样之后的比例
print(pd.Series(over_samples_y).value_counts()/len(over_samples_y))

# 重采样之前的比例
print(Ytrain.value_counts()/len(Ytrain))

 

以上是关于数据预处理-非平衡样本的处理方式(SMOTE--待补充)的主要内容,如果未能解决你的问题,请参考以下文章

kaggle 欺诈信用卡预测——不平衡训练样本的处理方法 综合结论就是:随机森林+过采样(直接复制或者smote后,黑白比例1:3)效果比较好!记得在smote前一定要先做标准化!!!

1.7 非平衡数据的处理方法大全

如何解决样本不均衡的问题

python使用imbalanced-learn的SMOTE方法进行上采样处理数据不平衡问题

类不平衡问题与SMOTE过采样算法

在 Spark 中处理不平衡的类