不平衡数据的分类方法与流程

文档序号:15273154发布日期:2018-08-28 22:40阅读:395来源:国知局

本发明具体涉及一种不平衡数据的分类方法。



背景技术:

随着人类互联网技术的不断发展,不平衡数据处理成为了一个极具挑战性的问题。越来越多的噪声数据和复杂的数据发布存在于很多实际应用中。比如医疗诊断,文本分类以及卫星雷达对原油泄漏的检测。在这些应用中,正样本数量远小于负样本,但往往在分类中扮演重要地位。例如,在交通事故数据中,造成事故的男性驾驶员占绝大多数,而女性驾驶员的数量通常要小很多。但在分析交通事故成因时,他们占同样的重要地位。如果不平衡数据集得不到很好的处理,少数类数据很容易被忽略,甚至直接被当做噪声处理掉。

针对不平衡数据分类问题,研究者进行了大量研究,提出了许多解决方案。大致可以分为二种方法。

第一种方法是基于数据层的分类方法。基于数据层的分类方法分为欠采样和smote方法。欠采样方法按照一定的抽样规则和抽样比例抽取多数类样本(负样本),将剩余的多数类样本与少数类样本结合形成新的平衡数据集。smote采用过采样方法,该方法按照一定规则人工合成一定比例的少数类样本,与多数类样本组成平衡数据集。但是欠采样方法在去掉一部分多数类样本的同时会丢失相应的样本信息,同时smote方法人工合成的少数类样本也不能很好的代表其样本特征,并可能会导致过拟合。

第二种方法是代价敏感学习方法。代价敏感学习方法是基于算法层的学习方法。它主要考虑在分类中,当不同的分类错误会导致不同的惩罚力度时如何训练分类器。在不平衡数据集处理中,通过加大分类错误的少数类样本的权重增加力度,减缓分正确的少数类样本的权重减少,来提高错分的少数类样本的被识别率。但是代价敏感学习方法可能会增加一些噪声数据,并在调整样本权重时造成信息丢失。



技术实现要素:

本发明的目的在于提供一种对于不平衡数据能够提高其分类准确率的不平衡数据的分类方法。

本发明提供的这种不平衡数据的分类方法,包括如下步骤:

s1.获取需要分类的不平衡数据集;

s2.对步骤s1获取的不平衡数据集中的数据样本权重进行初始化;

s3.从不平衡数据集的各个子集中抽取若干个样本,和不平衡数据集中的少数类数据样本构成代价敏感度高的样本集合,并设置代价敏感度高的样本集合中每一个样本的代价值;

s4.将没有被抽取的样本集构成代价敏感度低的样本集合,并设置代价敏感度低的样本集合中每一个样本的代价值;

s5.采用事先选定的弱分类算法作为基本分类器,在步骤s3和步骤s4得到的样本上进行训练,从而得到一个弱分类器;

s6.根据步骤s5得到的弱分类器,更新所有样本的权重值;

s7.对不平衡数据集的所有子集进行分裂和权重值的更新;

s8.输出最终的集成分类器,从而完成不平衡数据的分类。

步骤s2所述的对不平衡数据集中的数据样本权重进行初始化,具体为设置簇分裂的步数和簇的最大数量,并将不平衡数据集中的每一个数据样本权重值均设置为1/n,n为不平衡数据集中数据样本的个数。

步骤s3所述的抽取样本构成代价敏感度高的样本集合并设置代价值,具体为采用如下步骤构成集合并设置代价值:

(1)从各个子集中抽取若干个样本,抽取样本的数量采用如下公式计算:

式中sncj为抽取样本的数量,b为采样总数,wk为第j个子集中的样本权重,cj为第j个子集,w为不平衡数据集中的多数类样本集合的权重总和,wi为不平衡数据集中的多数类样本集合的第i个数据样本的权重;

(2)步骤(1)中抽取的样本和不平衡数据集中的少数类数据样本构成代价敏感度高的样本集合,并设置每一个样本的代价值ci;

步骤(1)中所述的所述的抽取若干个样本,具体为在每个子集中采用top-k算法进行样本的抽取,选取top-k个权重最大的样本点。

步骤s5所述的得到一个弱分类器,具体为采用事先选定的弱分类算法作为基本分类器,根据步骤s3得到的代价敏感度高的样本集合s’和步骤s4得到的代价敏感度低的样本集合w’一起作为新的不平衡数据集,训练得到一个弱分类器ht。

步骤s6所述的根据弱分类器更新所有样本的权重值,具体为采用如下步骤更新所有样本的权重值:

1)采用如下公式计算步骤s5得到的弱分类器的分类误差:

式中εt为分类误差,t为迭代次数,ht(xi)为第t次迭代基分类器对于样本xi的分类结果,yi为样本xi的类别,wti为第t次迭代时样本xi的权重;分类误差εt为被分类器错误分类的样本权重之和;i(ht(xi)≠yi)的取值规则为:若ht(xi)≠yi则i(ht(xi)≠yi)的取值为1,否则i(ht(xi)≠yi)取值为0;

2)采用如下公式计算弱分类器的权重:

式中αt为弱分类器的权重;

3)采用如下公式更新所有样本的权重值:

式中dt+1(i)为第i个样本在t+1时刻的权重分布,dt(i)为第i个样本在t时刻的权重分布,αt为弱分类器的权重,yi为xi的类别,ht(xi)为为第t次迭代基分类器对于xi的分类结果,βi为样本xi代价敏感值,zt为归一化因子;其中,当样本被正确分类时βi取值为β+,样本被错误分类时βi取值为β-,正确分类定义为ht(xi)=yi,错误分类定义为ht(xi)≠yi;β+=-0.5ci+0.5,β-=0.5ci+0.5,ci为代价敏感因子,且若样本为代价敏感度高的样本则0<ci<1,若样本为代价敏感度低的样本则-1<ci<0。

步骤s7所述的对不平衡数据集的所有子集进行分裂和权重值的更新,具体为采用如下步骤进行分裂和更新:

a.若当前的迭代步数t对簇分裂步数step取余为0且当前子集数目ns小于所设的子集的最大数量mn时,采用如下公式计算子集的信息熵:

式中hw为子集的信息熵,m为该子集中桶的数量,j为桶的编号且j为1~m之间的的自然数,dj为第j号桶标签且w为样本权重,min()为取最小值函数,max()为取最大值函数,p(dj)为第j号桶样本权重之和占子集所有样本权重之和的比例,且p(dj)=size(dj)/nc,nc为该子集中所有样本的数量,size(a)表示集合a桶中样本的数量;

b.根据步骤a得到的子集的信息熵,采用如下规则对子集进行分割:

采用如下公式计算分割后子集的信息熵大小,并得到可以获得最大信息增益的集合分割点:

max(gainj=(info(s)-infoj))

式中hsw(c1,c2)为集合划分为c1,c2时该集合的信息熵大小,size(a)表示集合a的样本个数,hw(c1)表示子集c1的信息熵大小,hw(c2)表示子集c2的信息熵大小,max()表示取最大值,info(s)表示为划分前集合信息熵大小,infoj表示以第j个桶划分时,集合信息熵hsw(c1,c2)的大小;

c.若步骤b得到的集合分割点所得到的最大增益与集合信息熵的比值大于事先设定的阈值,则将该集合分割点将该子集进行分割;

d.重复步骤s4~s7直至当前的迭代步数t对簇分裂步数step取余为0且当前子集数目ns小于簇的最大数量mn。

步骤s8所述的输出最终的集成分类器并完成不平衡数据的分类,具体为采用如下步骤输出最终的集成分类器并完成分类:

a.重复步骤s5~s7,直至当前的迭代步数t大于或等于事先设定的迭代次数t;

b.采用如下公式输出最终的集成分类器:

式中h(x)为最终的集成分类器,argmax(f(x))是求取f(x)的最大值函数,ht(x,y)为各个弱分类器,εt为弱分类器的分类误差;

c.采用步骤b得到的集成分类器对不平衡数据集进行分类。

本发明提供的这种不平衡数据的分类方法,提出一种基于信息熵的子集分割方式来将多数类样本进行聚类,并通过欠采样方法抽取一部分多数类样本点与少数类样本组成代价敏感度高的训练样本,采用欠采样的原因在于抽取的这一部分更能代表整体的多数类样本;在adacost算法训练迭代过程中,考虑代价敏感不同对错误分类的样本权重进行更新,此方法的不同点在于adacost算法中的训练数据为整体的不平衡数据集;实验结果证明,本发明方法相对于现有方法,具有更高的分类精确度。

附图说明

图1为本发明方法的方法流程图。

图2为本发明方法在22个不平衡数据集下和其他算法的auc指标比较示意图。

具体实施方式

如图1所示为本发明方法的方法流程图:本发明提供的这种不平衡数据的分类方法,包括如下步骤:

s1.获取需要分类的不平衡数据集;

s2.对步骤s1获取的不平衡数据集中的数据样本权重进行初始化,具体为设置簇分裂的步数和簇的最大数量,并将不平衡数据集中的每一个数据样本权重值均设置为1/n,n为不平衡数据集中数据样本的个数;

s3.从不平衡数据集的各个子集中抽取若干个样本,和不平衡数据集中的少数类数据样本构成代价敏感度高的样本集合,并设置代价敏感度高的样本集合中每一个样本的代价值,具体为采用如下步骤构成集合并设置代价值:

(1)从各个子集中抽取若干个样本,即在每个子集中采用top-k算法抽取k个权重最大样本,采用如下公式进行计算:

式中sncj为抽取样本的数量,b为采样总数,wk为第j个子集中的样本权重,cj为第j个子集,w为不平衡数据集中的多数类样本集合的权重总和,wi为不平衡数据集中的多数类样本集合的第i个数据样本的权重;

(2)步骤(1)中抽取的样本和不平衡数据集中的少数类数据样本构成代价敏感度高的样本集合,并设置每一个样本的代价值ci;

s4.将没有被抽取的样本集构成代价敏感度低的样本集合,并设置代价敏感度低的样本集合中每一个样本的代价值;

s5.采用事先选定的弱分类算法作为基本分类器,在步骤s3和步骤s4得到的样本上进行训练,从而得到一个弱分类器,具体为采用事先选定的弱分类算法作为基本分类器,根据步骤s3得到的代价敏感度高的样本集合s’和步骤s4得到的代价敏感度低的样本集合w’一起作为新的不平衡数据集,训练得到一个弱分类器ht;

s6.根据步骤s5得到的弱分类器,更新所有样本的权重值,具体为采用如下步骤更新所有样本的权重值:

1)采用如下公式计算步骤s5得到的弱分类器的分类误差:

式中εt为分类误差,t为迭代次数,ht(xi)为第t次迭代基分类器对于样本xi的分类结果,yi为样本xi的类别,wti为第t次迭代时样本xi的权重;所以分类误差εt为被分类器错误分类的样本权重之和;i(ht(xi)≠yi)的取值规则为:若ht(xi)≠yi则i(ht(xi)≠yi)的取值为1,否则i(ht(xi)≠yi)取值为0,即若ht(xi)为第t次迭代基分类器对于样本xi的分类结果与样本xi的类别yi相同,则视为分类正确,此时i(ht(xi)≠yi)取值为0,若ht(xi)为第t次迭代基分类器对于样本xi的分类结果与样本xi的类别yi不相同,则认定此时分类错误,则其相应的样本权重计入分类误差εt;

2)采用如下公式计算弱分类器的权重:

式中αt为弱分类器的权重;

3)采用如下公式更新所有样本的权重值:

式中dt+1(i)为第i个样本在t+1时刻的权重分布,dt(i)为第i个样本在t时刻的权重分布,αt为弱分类器的权重,yi为xi的类别,ht(xi)为为第t次迭代基分类器对于xi的分类结果,βi为样本xi代价敏感值,zt为归一化因子;其中,当样本被正确分类时βi取值为β+,样本被错误分类时βi取值为β-,正确分类定义为ht(xi)=yi,错误分类定义为ht(xi)≠yi;β+=-0.5ci+0.5,β-=0.5ci+0.5,ci为代价敏感因子,且若样本为代价敏感度高的样本则0<ci<1,若样本为代价敏感度低的样本则-1<ci<0。

s7.对不平衡数据集的所有子集进行分裂和权重值的更新,具体为采用如下步骤进行分裂和更新:

a.若当前的迭代次数t对簇分裂步数step取余为0且ns(子集数目)小于子集的最大数量mn时,采用如下公式计算子集的信息熵:

式中hw为子集的信息熵,m为子集中桶的数目,j为桶的编号且j为1~m之间的的自然数,dj为第j号桶标签且w为样本权重,min()为取最小值函数,max()为取最大值函数,p(dj)为第j号桶样本权重之和占子集所有样本权重之和的比例,所以p(dj)=size(dj)/nc,p(dj)=size(dj)/nc,nc为所有样本的数量,size(a)表示集合a中样本的数量;

b.根据步骤a得到的子集的信息熵,采用如下规则对子集进行分割:

采用如下公式计算分割后子集的信息熵大小,并得到可以获得最大信息增益的集合分割点:

max(gainj=(info(s)-infoj))

式中hsw(c1,c2)为集合划分为c1,c2时,该集合的信息熵大小,size(a)表示集合a的样本个数,hw(c1)表示子集c1的信息熵大小,hw(c2)表示子集c2的信息熵大小,max()表示取最大值,info(s)表示为划分前集合信息熵大小,infoj表示以第j个桶划分时,集合信息熵hsw(c1,c2)的大小;

c.若步骤b得到的集合分割点所得到的最大增益与集合信息熵的比值大于事先设定的阈值,则将该集合分割点将该子集进行分割;

d.重复步骤s4~s7直至当前的迭代次数t对簇分裂步数step取余不为0或ns(子集数目)小于簇的最大数量mn;

s8.输出最终的集成分类器,从而完成不平衡数据的分类,具体为采用如下步骤输出最终的集成分类器并完成分类:

a.重复步骤s5~s7,直至当前的迭代次数t大于或等于事先设定的迭代次数t;

b.采用如下公式输出最终的集成分类器:

式中h(x)为最终的集成分类器,argmax(f(x))是使得f(x)取最大值,ht(x,y)为各个弱分类器,εt为弱分类器的分类误差;

c.采用步骤b得到的集成分类器对不平衡数据集进行分类。

如图2所示为本发明方法在22个不平衡数据集下和其他算法的auc指标比较示意图:在该实施例中,选择22组具有不同实际应用背景的keel数据作为实验测试数据。所选取的数据集中,最小的多数类和少数类数量比为9.09,最大的为128。对于含有多个类别的数据,合并某些类别或只取两个类别。为了使结果更加可靠,实验对每个数据集的每次验证进行5次实验并取auc结果的平均值。图2显示了各个对比算法和本文提出算法在22个不平衡数据集上的实验结果,其中,第一竖行是keel里开源的不平衡数据集名称,ir是不平衡度,ceu是基于k-means聚类和adaboost集成算法的不平衡数据分类方法,ehcu是基于层次聚类聚类和adaboost集成算法的不平衡数据分类方法,ecus-adacost为本发明的方法。

结果显示,本发明提出的算法在较多数据集上比其他算法有更好的表现,且综合平均auc值最大。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1