本发明涉及机器学习数据平衡问题处理,尤其是一种基于gan-smote合成算法解决数据不平衡问题的方法。
背景技术:
1、随着电脑计算能力的提升,机器学习技术也被广泛运用在各行各业上。但是在许多实际业务(如:车辆采购决策、电话卡欺诈)中会遇上采集的数据不平衡问题,即不同类别的样本量差异非常大,或者少数量类别样本代表了业务的关键数据。在这种情况下如果直接对数据进行分类训练,会因数据分布倾斜导致过拟合情形,从而影响机器学习训练效果。
2、现有的gan算法和smote算法在一定程度上可以解决数据不平衡情形,但仍然存在一些缺陷。gan算法由于输入生成器的随机噪声是采用服从高斯分布的随机数,无法控制大小,容易导致生成器和判别器对抗训练时,模型过于自由不可控,产生崩溃问题。smote算法是在相邻样本进行选择,并在这些相邻样本之间插值,存在一定的盲目性,生成数据不够真实,无法产生多样性的数据。
技术实现思路
1、本发明提出一种基于gan-smote合成算法解决数据不平衡问题的方法,将gan算法和smote算法相结合,使得训练数据各类别样本数量相对平稳,提升了后续机器学习训练效果。
2、本发明采用以下技术方案。
3、一种基于gan-smote合成算法解决数据不平衡问题的方法,用于对机器学习所使用的训练数据集进行处理,包括以下步骤;
4、步骤s1:产生随机噪声:即针对原始训练集数据,使用smote算法合成一些新的少类别样本作为随机噪声;
5、步骤s2:建立生成器,将步骤s1的随机噪声输入生成器,输出得到生成样本;
6、步骤s3:建立判别器,输入真实数据样本和生成样本,判别出上述样本中的真实数据;
7、步骤s4:迭代对抗训练:以生成器和判别器相互迭代对抗训练,以优化生成器,最终使得判别器无法辨别生成器的生成样本是否真实,得到gan-smote合成算法;
8、步骤s5:数据输出:当判别器无法辨别生成器的生成样本是否真实后;以gan-smote合成算法向原始数据集输出新数据,使数据集内的各类别样本数量接近一致。
9、所述gan-smote合成算法采用python语言编写代码形成。
10、所述方法用于解决机器学习算法的前期处理数据不平衡情况,该机器学习分类算法用于解决的实际业务问题包括车辆采购决策、电话卡欺诈判断、手写数字识别业务。
11、步骤s2中,从gan算法的原始公式:
12、
13、与smote算法进行结合,生成如下新的gan-smote合成算法公式:
14、
15、其中,u(d)代表通过smote算法生成的过采样数据,即步骤s2中的生成样本。
16、gan-smote合成算法公式随机噪声z使用smote算法生成的过采样数据,取代了原先随机生成的服从高斯分布的数据。
17、smote算法生成随机噪声的方法为:
18、步骤a1、导入原始训练集数据,对训练集数据进行预处理,预处理包含关键字段缺失数据补0、格式化统一单位操作;
19、步骤a2、在预处理后数据中找出少类别样本中的一个点p1;
20、步骤a3、使用k最近邻域法,设置k=3,找出与p1点最近的p2、p3、p4点;
21、步骤a4、根据公式pn=p1+g(p1-p2),其中g∈(0,1),生成新的点pn1、pn2、pn3;
22、步骤a5、重复执行s2-s5步骤,生成多个少类别样本数据作为随机噪声。
23、所述生成器包含5层全连接层进行维度变换,将噪声向量放大,再进归一化处理,前4层全连接层之间使用激活函数relu(),最后一层再使用激活函数sigmoid()输出数据,输入由上述smote算法生成的数据作为随机噪声,输出生成样本;
24、所述判别器中,包含4层全连接层,每层全连接层之间使用激活函数leakyrelu(),以增强神经网络的非线性特征提取能力,在步骤s3中输入真实数据样本和生成样本,判别出上述样本中的真实数据;
25、将生成器和判别器进行迭代对抗训练时,判别器尽可能最大化log(d(x)),生成器尽可能最小化log(1-d(g(u(d))));生成器和判别器在上述对抗训练中根据损失函数和梯度,不断更新两者的权重参数,最终使得判别器无法辨别生成器的生成样本是否真实,即达到纳什均衡点,从而训练结束。依照上述建立的gan-smote合成算法输出新数据,使机器学习所使用的训练数据集内各类别样本数量接近一致。
26、相较于现有技术,本发明及其优选方案具有以下设计优势和有益效果:
27、(1)本发明将gan和smote算法相结合,使其可以同时适用于小型和大型数据集,有效地避免了gan算法对小型数据集平衡处理效果不好的问题,具有更强的兼容性。同时也弥补了smote算法过度泛化的问题,让生成的数据具有多样性、更逼真;
28、(2)通过本发明进行数据平衡处理后再建模训练,训练过程中有效地避免了过拟合情形,得到的模型从准确率、损失率和f1得分均比现有的数据平衡处理方法有着显著提升;
29、(3)本发明在利用机器学习技术处理实际业务前期数据处理过程中,有效改善了某一类别样本代表了业务的关键数据却在数量不足的问题,提高运用机器学习技术改善相关业务的效率,降低执行该业务的风险。
1.一种基于gan-smote合成算法解决数据不平衡问题的方法,用于对机器学习所使用的训练数据集进行处理,其特征在于:包括以下步骤;
2.根据权利要求1所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:所述gan-smote合成算法采用python语言编写代码形成。
3.根据权利要求1所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:所述方法用于解决机器学习算法的前期处理数据不平衡情况,该机器学习分类算法用于解决的实际业务问题包括车辆采购决策、电话卡欺诈判断、手写数字识别业务。
4.根据权利要求1所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:步骤s2中,从gan算法的原始公式:
5.根据权利要求4所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:gan-smote合成算法公式随机噪声z使用smote算法生成的过采样数据,取代了原先随机生成的服从高斯分布的数据。
6.根据权利要求1所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:smote算法生成随机噪声的方法为:
7.根据权利要求6所述的一种基于gan-smote合成算法解决数据不平衡问题的方法,其特征在于:所述生成器包含5层全连接层进行维度变换,将噪声向量放大,再进归一化处理,前4层全连接层之间使用激活函数relu(),最后一层再使用激活函数sigmoid()输出数据,输入由上述smote算法生成的数据作为随机噪声,输出生成样本;