使用遗传交叉算子进行过采样处理数据不平衡(一)

简介: 使用遗传交叉算子进行过采样处理数据不平衡

除了随机过采样,SMOTE及其变体之外,还有许多方法可以对不平衡数据进行过采样。 在使用scikit-learn的make_classification默认设置生成的分类数据集中,使用交叉操作生成的样本在最相关的指标上胜过SMOTE和随机过采样。

本篇文章的目录如下

  • 介绍
  • 数据准备
  • 随机过采样和SMOTE
  • 交叉过采样
  • 绩效指标评估
  • 结论

介绍

我们中的许多人都会遇到处于使用不平衡数据集的预测模型的情况。

最流行的处理失衡的方法包括:

  • 增加未被充分标记的的分类的权重
  • 过采样技术
  • 欠采样技术
  • 过度采样和欠采样的组合
  • 调整成本函数

这篇文章将讨论过采样技术,我们将特别研究依赖于在特征空间内插值的SMOTE变体(borderline SMOTE, ADASYN等)如何生成较少的新合成数据。

过度抽样的方法太多了。我们使用简单的单点、两点和均匀交叉操作对合成数据进行过采样,并将评价结果与随机过采样进行比较。一般情况下,将过采样和欠采样结合使用会更好,但是在本演示中,我们为了说明只使用过采样。

数据集准备

我们使用scikit-learn的make_classification函数来创建一个不平衡的数据集,该数据集包含两个类别中的5000个数据点(二进制分类)。目标为0的机会为95%,目标为1的机会为5%。

fromsklearn.datasetsimportmake_classificationimportseabornassnsX, y=make_classification(
n_samples=5000, n_classes=2,
weights=[0.95, 0.05], flip_y=0)
sns.countplot(y)
plt.show()

640.png

默认情况下,会创建20个特征,下面是X数组中的示例条目。

640.png

make_classification中的其余设置为默认设置,下面我们将数据分为训练和测试数据集。

fromsklearn.model_selectionimporttrain_test_splitX_train, X_test, y_train, y_test=train_test_split(X, y)

随机和SMOTE过采样

现在,让我们准备函数以生成数据集,其中可以使用随机过采样和SMOTE对少数类(目标= 1)进行过采样。

fromimblearn.over_samplingimportSMOTE, RandomOverSamplerdefoversample_random(X, y, rows_1, random_state):
'''Accepts X and y arrays along with the number ofrequired positively labeled samples (rows_1). Returnsrandomly oversampled positively labeled data.'''X_random, y_random=RandomOverSampler(
sampling_strategy={1: rows_1},
random_state=random_state    ).fit_resample(X_train, y_train)
returnX_random, y_randomdefoversample_smote(X, y, rows_1, k_neighbors, random_state):
'''Accepts X and y arrays along with the number ofrequired positively labeled samples (rows_1) and numberof nearest neighbors to consider in the SMOTE algorithm.Returns SMOTE oversampled positively labeled data.'''X_smote, y_smote=SMOTE(
sampling_strategy={1: rows_1},
k_neighbors=k_neighbors,
random_state=random_state    ).fit_resample(X, y)
returnX_smote, y_smote

请注意,为了方便进行比较我们使用普通的SMOTE而不是边界SMOTE,ADASYN,SVM-SMOTE等。在下一部分中使用交叉操作生成样本时,我们不会考虑是在边界附近生成样本还是被认为有噪声等。

如果您不熟悉随机过采样和SMOTE,则在网上有很多资源,但是这里有个简短的回顾:

随机过采样涉及从我们尝试过采样的少数类中随机选择数据点,然后将它们作为重复项再次添加回数据集。

640.gif

随机过采样的插图,较大的气泡代表随机选择用于过采样的数据点,它们在数据集中显示为重复项

SMOTE涉及从少数类中查看样本的最近邻居,并在该样本与从其最近邻居中随机选择的另一个样本之间插入特征值。

640.gif

SMOTE,红色数据点是插值后综合生成的数据

交叉算子

交叉运算在遗传算法中被广泛使用,它是由有性生殖中发生的遗传物质的交叉驱动的。

该操作相对简单,其中“染色体”中的信息由两个“父母”贡献以生成“孩子”。在我们的用例中,染色体中的信息仅是特征值。

640.png

通常以位阵列表示信息以获得更好的性能。

例如:在我们的数据集中,我们有20个特征和5000个样本。在单点交叉操作中,我们可以选择两个“父级”,例如样本#20和样本#1500,并选择一个随机的交叉点,例如第十特征。然后,我们生成一个新的“子级”,即新数据点,该新数据点的第一个父级(样本#20)具有特征1–9,第二个父级(样本#1500)具有特征10–20。

640.gif

我们将考虑3种交叉操作:

  • single-point 单点
  • two-point 两点
  • uniform 均匀

单点交叉操作是上面所示的示例,其中交叉点之前的要素由一个父级提供,而交叉点之后的要素由另一父级提供。

在两点交叉操作中,父级1贡献第一个交叉点之前的子数据点的特征值,然后父级2贡献其特征值直到第二个交叉点,然后贡献在第二个交叉点之后返回父级1。

640.png

通过均匀交叉操作,两个父级中的任何一个都可以为20个要素中的任何一个对子数据点的要素值做出贡献。

640.png

下面是我们用来生成交叉样本的函数。还有一个附加参数knn,它过滤掉所有生成的样本,这些样本的最近邻居的目标是0而不是1。默认情况下,此选项设置为False。

目录
相关文章
|
18天前
|
机器学习/深度学习 算法 测试技术
处理不平衡数据的过采样技术对比总结
在不平衡数据上训练的分类算法往往导致预测质量差。模型严重偏向多数类,忽略了对许多用例至关重要的少数例子。这使得模型对于涉及罕见但高优先级事件的现实问题来说不切实际。
174 0
|
18天前
|
存储 数据采集 数据可视化
R语言拟合线性混合效应模型、固定效应随机效应参数估计可视化生物生长、发育、繁殖影响因素
R语言拟合线性混合效应模型、固定效应随机效应参数估计可视化生物生长、发育、繁殖影响因素
|
18天前
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列
极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列
|
10月前
基于贝叶斯推理估计稳态 (ST) 和非稳态 (NS) LPIII 模型分布拟合到峰值放电(Matlab代码实现)
基于贝叶斯推理估计稳态 (ST) 和非稳态 (NS) LPIII 模型分布拟合到峰值放电(Matlab代码实现)
|
10月前
|
机器学习/深度学习 传感器 算法
融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) - 附matlab代码
融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) - 附matlab代码
|
10月前
【时频分析,非线性中频】非线性STFT在瞬时频率估计中的应用(Matlab代码实现)
【时频分析,非线性中频】非线性STFT在瞬时频率估计中的应用(Matlab代码实现)
|
10月前
|
机器学习/深度学习 传感器 算法
融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) 附matlab代码
融合自适应惯性权重和柯西变异的秃鹰搜索算法(CBES) 附matlab代码
|
11月前
|
算法
基于适应度距离平衡的全局优化问题导向机制的改进粘液-霉菌算法(Matlab代码实现)
基于适应度距离平衡的全局优化问题导向机制的改进粘液-霉菌算法(Matlab代码实现)
|
11月前
|
算法
基于自适应适应度-距离平衡的随机分形搜索算法(Matlab代码实现)
基于自适应适应度-距离平衡的随机分形搜索算法(Matlab代码实现)
|
11月前
|
算法 Serverless
基本粒子群算法及惯性权重分析
粒子群算法(particle swarm optimization,PSO)是计算智能领域,除了蚁群算法、鱼群算法之外的一种群体智能的优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有效的策略就是搜寻当前距离食物最近的鸟的周围区域。PSO算法是从这种生物种群行为特征中得到启发并用于求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。

热门文章

最新文章