本发明属于数据挖掘领域,特别涉及一种基于二叉树结构的不平衡数据处理方法。
背景技术
在数据挖掘领域中,大量的场景中会出现数据集不平衡的问题,如搜索引擎的点击预测(点击的网页往往占据很小的比例)、电子商务领域的商品推荐(推荐的商品被购买的比例很低)、信用卡欺诈检测、网络攻击识别等等。在二分类问题中具体表现为正样本数量相对负样本数量要少很多。即正样本少,负样本多。这样在分类问题上往往会导致分类结果偏向于负样本。现有的数据集不平衡处理方法主要有:收集更多的正样本数据、欠采样过采样、样本权重赋值。收集更多的正样本数据可以很好地解决数据不平衡问题,但是往往很多数据的获得都是非常困难的,单纯依靠增加数据量来解决不平衡数据集的方法是不现实的。在欠采样中,通过随机抽取部分负样本,从而减少负样本的数量,使得正负样本比得到改善。但是欠采样会导致部分重要的负样本的信息丢失,使得数据不能得到充分的使用。在过采样中,例如著名的smote算法,就是通过人为的按照某种准则添加正样本数量,但如果对正样本拟合得不好,这个过程实际上是人为引入噪声。在样本权重赋值中,需要人为设定每个正、负样本的权重,由于实际中,很难衡量某个正、负样本的质量。因此若赋予的权重不适合,同样也会加大数据集的噪声。
技术实现要素:
本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于二叉树结构的不平衡数据处理方法。本发明一方面能够利用多次聚类算法来分裂出同类数据,使得相近的数据无需多次学习,仅学习一定量具有代表性的数据,从而减少负样本数量,实现数据的充分利用。另一方面,本发明通过调整树的深度以及叶子节点最少样本数量来调整平衡样本集合的质量,提高学习器的泛化能力。利用特征差异程度方差、特征极差程度两个指标来准确、客观地挑选出合适的样本平衡比、树的深度以及叶子节点最少样本数量,大大提高训练样本的质量,从而提高不平衡数据处理方法的有效性。
本发明的目的能够通过以下技术方案实现:
一种基于二叉树结构的不平衡数据处理方法,具体包括以下步骤:
(1)将原始数据集ω按标签划分为正样本空间集合ωp和负样本空间集合ωn,同时创建负样本空间集合的副本cn;
(2)选择每个平衡样本集合的样本平衡比r、选择树的深度d、叶子节点的最少样本数量leafmin以及基于原型聚类的基聚类算法γ;
(3)采用步骤(2)中所选择的基聚类算法γ将负样本集合cn划分为2个不相交的簇ci,i=1,2;
(4)根据分裂准则,判断步骤(3)中所划分的簇,即cn←ci,i=1,2是否满足分裂准则;若满足分裂准则,则对负样本集合cn重复步骤(3)和步骤(4)直至当前负样本集合cn不再满足分裂准则;递归完毕后,形成二叉树τ;
(5)对步骤(4)得到的二叉树的叶子节点上的每个负样本集合θj进行所有特征xnm(j)的归一化处理,归一化后求解特征差异度方差featurevar(k)和特征极差程度featurerange(k)两个参数;重复步骤(5)多次,根据特征差异度方差featurevar(k)和特征极差程度featurerange(k),挑选出最佳的负样本集合
(6)对步骤(5)得到的最佳负样本集合
(7)将原始空间中的正样本集合ωp与步骤(6)得到的平衡负样本集合ψ构成一个平衡样本集合ωbalance。
具体地,在步骤(1)中,划分后的正样本空间集合大小为|ωp|,负样本空间集合大小为|ωn|,且正、负样本空间集合有如下关系:
具体地,所述步骤(1)中所创建的负样本空间集合的副本cn为一个变量,用于表示处于当前树节点的负样本集合,其数量随着二叉树中节点数量的变化而变化。
具体地,步骤(2)中的样本平衡比r的范围为0<r<1;通过修改样本平衡比,能够改变每个平衡样本集合的大小。不同样本平衡比值对模型的泛化能力有巨大的影响。针对不同的应用场景,一般通过多次实验得到最佳的样本平衡比值。
具体地,在步骤(2)的选择过程中,树的深度d与叶子节点的最少样本数量leafmin需同时满足d>0,leafmin≥2。通过树的深度d与叶子节点的最少样本数量leafmin来确定分裂准则:当当前树的深度以及叶子节点最少样本数量满足分裂准则d'<d,|cn|>=leafmin时,继续对节点进行分裂;其中,d’表示当前树的深度,d表示设定的树的目标深度。
更进一步地,树的深度d一般依据样本数量来确定,样本数量越多,树的深度应该越深,这样才能够让样本空间得到充分的划分。叶子节点的最少样本个数leafmin划分得越少,树的复杂度就越高,最终得到的平衡集合的质量就越高。
具体地,基聚类算法用于对二叉树节点的分裂。不同的基聚类算法因数据集的分布产生不同的分裂效果,同时对整个分裂过程的所需要时间产生很大的影响。
具体地,步骤(3)得到的2个不相交的簇,表示为:{cl|l=1,2};两者满足如下关系:
其中,c1、c2是对当前节点处的负样本集合cn的二簇聚类结果。
具体地,所述步骤(4)的具体过程为:
将步骤(3)得到的2个不相交的簇ci,i=1,2先后记为cn,即cn←ci,i=1,2;上述2个不相交的簇根据分裂准则判断是否继续分裂:若满足分裂准则,则对负样本集合cn重复步骤(3)和(4),直至当前负样本集合cn不再满足分裂准则。
更进一步地,当前负样本集合cn根据分裂准则结束递归后,形成二叉树τ;
其中,θj,j=1,2,.....s表示为二叉树τ上的叶子节点上的负样本集合,m表示叶子节点个数,且m满足:0<m≤2d。
具体地,在所述步骤(5)中,由于每一次实验得到的s个负样本集合θj的质量都不一样,因此,需要通过一些指标来筛选出最佳负样本集合
其中,
更进一步地,通过求取特征差异度方差featurevar和特征极差程度
(k)
featurerange(k),能够计算集合的质量,具体计算公式为:
其中,
其中,k表示第k次实验。
更进一步地,式中的都是已经经过归一化处理后的新数值,特征差异度方差反映的是负样本集合每一维度特征的离散程度,该指标越小表示集合内的某一维度上的特征越相似。特征极差程度是反映某一维度上特征的两极情况,如果两极相差较大,表明该集合中存在一些簇外的样本,此时应当将树的深度提高以便更好地区分不同类别的样本。
更进一步地,重复步骤(5)多次,挑选出
具体地,步骤(6)中对得到的最佳负样本集合
根据步骤(2)中设定的样本平衡比r,则一个平衡样本集合ωbalance需要的负样本个数为
具体地,原始空间中的正样本集合ωp与步骤(7)得到的平衡负样本集合ψ构成一个平衡样本集合ωbalance。此时平衡样本集合ωbalance的正负比转化为r,最终得到的平衡样本集合ωbalance中包含原始负样本空间集合ωn的大部分信息,即ωn与ωbalance的分布相似。
本发明与现有技术相比,具有如下优点和有益效果:
1、在改善正负样本比例的通式,不是随机抽取原始样本空间中的样本,而是先利用二叉树的结构进行多次二簇聚类。在重复次实验后得到k棵二叉树。对每一棵树的叶子节点利用特征差异度方差和特征极差程度进行评价每个叶子节点的质量,从而挑选出k棵树中最佳一棵树,把这棵树的叶子节点上的负样本集合作为最佳的负样本集合
2、利用本发明生成的平衡样本集合非常有利于后续的集成学习,把每一个平衡样本集合作为一个训练集,训练多个弱分类器,一方面由于每个训练集的规模远远小于原始样本空间的规模,因此训练的速度非常快,易于集成;另一方面由于平衡样本集合与原始样本空间分布相似,同时不同的平衡样本集合都具有差异性,可以看作是在原始样本空间上进行样本扰动,能够提高训练器的泛化性能。
附图说明
图1为本发明的基本流程图;
图2为本实施例中对k组若干负样本集合中通过两个重要指标选出最佳负样本集合
图3为本实施例中对平衡样本集合ωbalance的构成过程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例
如图1所述为本发明的基本流程图。在本实施例中,一种基于二叉树结构的不平衡数据处理方法,具体包括以下步骤:
(1)将原始数据集ω按标签划分为正样本空间集合ωp和负样本空间集合ωn,同时创建负样本空间集合的副本cn。
具体地,划分后的正样本空间集合大小为|ωp|,负样本空间集合大小为|ωn|,且正、负样本空间集合有如下关系:
(2)选择每个平衡样本集合的样本平衡比r、选择树的深度d、叶子节点的最少样本数量leafmin以及基于原型聚类的基聚类算法γ。具体地,步骤(2)中的样本平衡比r的范围为0<r<1;通过修改样本平衡比,能够改变每个平衡样本集合的大小。不同样本平衡比值对模型的泛化能力有巨大的影响。针对不同的应用场景,通过多次实验得到最佳的样本平衡比值。
具体地,步骤(2)中的树的深度d与叶子节点的最少样本数量leafmin需同时满足d>0,leafmin≥2。通过树的深度d与叶子节点的最少样本数量leafmin来确定分裂准则:当当前树的深度和叶子节点的最少样本数量满足d'<d,|cn|>=leafmin时,继续对节点进行分裂;其中,d'表示当前树的深度,d表示设定的树的目标深度。
在本实施例中,r=0.25。在步骤(2)中选择整个树节点分裂的时候所使用的基聚类算法为k-means算法,所述聚类算法中k取2。
(3)采用步骤(2)中所选择的基聚类算法γ将负样本集合cn划分为2个不相交的簇ci,i=1,2;
具体地,步骤(3)得到的2个不相交的簇,表示为:{cl|l=1,2};两者满足如下关系:
c1、c2是对当前节点处的负样本集合cn的二簇聚类结果。
(4)根据分裂准则,判断步骤(3)中所划分的簇,即cn←ci,i=1,2是否满足分裂准则;若满足分裂准则,则对负样本集合cn重复步骤(3)和步骤(4)直至当前负样本集合cn不再满足分裂准则;递归完毕后,形成二叉树τ;
具体地,所述步骤(4)的具体过程为:
将步骤(3)得到的2个不相交的簇ci,i=1,2先后记为cn,即cn←ci,i=1,2;上述2个不相交的簇根据分裂准则判断是否继续分裂:若满足分裂准则,则对负样本集合cn重复步骤(3)和(4),直至当前负样本集合cn不再满足分裂准则。
更进一步地,当前负样本集合根据分裂准则结束递归后,形成二叉树τ;其中,θj,j=1,2,.....s表示为二叉树τ上的叶子节点上的负样本集合,m表示叶子节点个数,且m满足:0<m≤2d。
在本实施例中,上述步骤(3)和(4)是通过判断是否满足分裂准则来对当前所在叶子节点的负样本集合cn进行二簇聚类。在步骤(3)和(4)中,需要计算当前叶子节点负样本集合cn的大小。若不满足分裂准则,则停止分裂,此时的cn为其中一个θj。此时树的节点变为叶子节点,保存处于当前叶子节点的负样本集合cn。若满足分裂准则,则继续对处于叶子节点的负样本集合cn进行聚类,再次产生左、右叶子节点。重复上述步骤,直至所有节点处均不满足分裂准则。
(5)对步骤(4)得到的二叉树叶子节点上的每个负样本集合θj进行所有特征xnm(j)的归一化处理,归一化后求解特征差异度方差featurevar(k)和特征极差程度featurerange(k)两个参数;重复步骤(5)多次,根据特征差异度方差featurevar(k)和特征极差程度featurerange(k),挑选出最佳的负样本集合
具体地,在所述步骤(5)中,对步骤(4)得到的每个负样本集合θj进行所有特征xnm(j)的归一化处理,具体方法为:
其中,
更进一步地,通过求取特征差异度方差featurevar(k)和特征极差程度featurerange(k),能够计算集合的质量,具体计算公式为:
其中,
其中,k表示第k次实验。
更进一步地,式中的都是已经经过归一化处理后的新数值,特征差异度方差反映的是负样本集合每一维度特征的离散程度,该指标越小表示集合内的某一维度上的特征越相似。特征极差程度是反映某一维度上特征的两极情况,如果两极相差较大,表明该集合中存在一些簇外的样本,此时应当将树的深度提高以便更好地区分不同类别的样本。
更进一步地,重复步骤(5)多次,挑选出
所述重复多次在一般程序中默认为5次,但在大多数情况下需要根据实验结果以及应用场景来确定。
具体地,由于每一次实验得到的s个负样本集合θj的质量都不一样,因此,需要通过一些指标来筛选出最佳负样本集合。在进行计算指标之前,由于各特征的量纲不一致,因此直接计算指标可能会带来一些由于量纲所带来的误差。由于只产生一组的负样本集合一般不是最优的分裂方式,因此,需要重复多次,得到k组实验结果进行比较,比较时每个特征的量纲不一致,因此需要对数据进行归一化处理。归一化处理后计算特征差异程度方差、特征极差的程度。通过比较每一组的这两个指标,取这两个指标同时取得的最小的k值作为最佳的分裂。当两个指标取得最小值时k值不一致,则利用i值来判断。
(6)对步骤(5)得到的最佳负样本集合
具体地,在步骤(6)中对得到的最佳负样本集合
根据步骤(2)中设定的样本平衡比r,则一个平衡样本集合ωbalance需要的负样本个数为
(7)将原始空间中的正样本集合ωp与步骤(6)得到的平衡负样本集合ψ构成一个平衡样本集合ωbalance。
具体地,原始空间中的正样本集合ωp与步骤(7)得到的平衡负样本集合ψ构成一个平衡样本集合ωbalance。此时平衡样本集合ωbalance的正负比转化为r,最终得到的平衡样本集合ωbalance中包含原始负样本空间集合ωn的大部分信息,即ωn与ωbalance的分布相似。
在本发明的实施例中,基于二叉树结构的不平衡数据集的处理方法,一方面能够利用多次聚类算法来分裂同类数据,使得相近的数据无需多次学习,仅学习一定量具有代表性的数据,从而减少负样本数量,能够充分地利用数据。另一方面通过调整树的深度以及叶子节点最少样本数量来调节平衡样本集合的质量,提高学习器的泛化能力。利用特征差异程度方差、特征极差程度两个指标,能够准确、客观地挑选出合适的平衡比、树的深度以及叶子节点最少样本数量,大大提高训练样本的质量,从而提高不平衡数据处理方法的有效性。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。