一、SMOTE原理
通常在处理分类问题中数据不平衡类别。使用SMOTE算法对其中的少数类别进行过采样,以使其与多数类别的样本数量相当或更接近。SMOTE的全称是Synthetic Minority Over-Sampling Technique 即“人工少数类过采样法”,非直接对少数类进行重采样,而是设计算法来人工合成一些新的少数样本。
二、使用
1.安装库
python提供了就是一个处理不均衡数据的imblearn库;其基于机器学习常用sklearn开发而成,使用方法和sklearn库十分相似,上手非常容易。imblearn库对不平衡数据的主要处理方法主要分为如下四种:
- 欠采样
- 过采样
- 联合采样
- 集成采样
包含了各种常用的不平衡数据处理方法,例如:随机过采样,SMOTE及其变形方法,tom-links欠采样,编辑最近邻欠采样方法等等。
pip3 install imbalanced-learn
2. 使用
安装完之后就可以从imblearn 导出SMOTE算法了:
from imblearn.over_sampling import SMOTE
sm = SMOTE(
sampling_strategy = ‘auto’,
random_state = None, ## 随机器设定
k_neighbors = 5, ## 用相近的 5 个样本(中的一个)生成正样本
m_neighbors = 10, ## 当使用 kind={'borderline1', 'borderline2', 'svm'}
out_step = ‘0.5’, ## 当使用 kind = 'svm'
kind = 'regular', ## 随机选取少数类的样本
– borderline1: 最近邻中的随机样本b与该少数类样本a来自于不同的类
– borderline2: 随机样本b可以是属于任何一个类的样本;
– svm:使用支持向量机分类器产生支持向量然后再生成新的少数类样本
svm_estimator = SVC(), ## svm 分类器的选取
n_jobs = 1