数据预处理-非平衡样本的处理方式(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前一定要先做标准化!!!