本发明属于非平衡数据转换技术领域,特别涉及一种基于采样与特征简约的非平衡数据集转换方法及系统。
背景技术:
非平衡数据集转换方法是对非平衡数据集进行分类时,从数据层面对数据集进行重构,以降低非平衡度,提高分类准确度的方法。非平衡数据集分类是指各类样本数据不相等的情况下的分类问题。以二分类问题为例,即某一类数据样本所占比例明显超过其他类别的数据样本。其中,比例多的样本组成多数类样本集,比例少的样本组成少数类样本集。非平衡数据在现实生活中应用非常广泛,比如风险入侵检测、罕见病预测、金融诈骗等领域。
数据层面中最常用的方法为对少数类样本集进行过采样处理,通过增加少数类样本使数据集分布相对平衡。
1.现有的对少数类样本集进行过采样的方法对所有的少数类样本集一视同仁,未考虑不同少数类样本集分类器的不同重要度;2.数据集的特征对分类器的性能具有很重要的影响,如果特征中包含较多对分类结果没有作用的字段,会给分类器的训练过程带来较大的复杂度。
技术实现要素:
为了解决现有技术中存在的问题,本发明提供一种基于采样与特征简约的非平衡数据集转换方法。
为达到上述目的,本发明采用如下技术方案:
本发明提供一种基于采样与特征简约的非平衡数据集转换方法,该方法包括:
获取非平衡数据集,所述非平衡数据集包括多数类样本集和少数类样本集;
对非平衡数据集进行采样处理,获得新的非平衡数据集;
对新的非平衡数据集进行降维处理,转换成特征简约的新的非平衡数据集。
优选的技术方案,所述对非平衡数据集进行采样处理包括对少数类样本集进行过采样,包括利用s-nksmote算法对少数类样本集进行过采样,具体为:
获得少数类样本集内样本x的k个近邻样本;
将k个近邻样本中的少数类样本个数与多数类样本个数进行比较,当少数类样本的个数多于多数类样本的个数时,标记x为安全样本,当少数类样本的个数少于多数类样本的个数,且存在少数类样本,标记x为危险样本,当k个近邻样本全是多数类样本,标记x为噪声样本;
当x为噪声样本时,在少数类样本集中随机选择一个样本x’,依照以下方式生成靠近少数类样本的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0.5,1)·(x’-x)
当x不是噪声样本时,从其k个近邻样本中随机选择1个样本x’,如果x’属于多数类样本,则依照以下方式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0,0.5)·(x’-x)
如果x’属于少数类样本,则依照下列公式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集:
xnew=x+rand(0,1)·(x’-x)。
优选的技术方案,所述对新的非平衡数据集进行降维处理的具体方法为:
分析新的非平衡数据集内每一类样本的特征与对应类别标签的相关性,并将特征按照与类别标签的相关性从大到小进行排序;
从特征的最后一维开始按照顺序依次删除一维特征,每删除一维特征将减少一维特征后的新的非平衡数据集输入到随机森林模型中,并计算出每减少一维特征后的新的非平衡数据集对应的acc值;
比较所有acc值,选取最大acc值对应的特征维度,即为特征简约后的特征维度。
优选的技术方案,所述对非平衡数据集进行采样处理还包括对多数类样本集进行欠采样,具体为:
获取多数类样本集和少数类样本集的边界样本集;
获取边界样本集的中心样本;
计算多数类样本集内每一多数类样本距离中心样本的距离,并根据计算的距离对多数类样本集进行欠采样,获得新的多数类样本集,新的多数类样本集和新的少数类样本集合成了新的非平衡数据集。
优选的技术方案,获取多数类样本集和少数类样本集的边界样本集的具体方法为:
分别计算多数类样本集中每一多数类样本与其最近的少数类样本的距离;
分别计算少数类样本集中每一少数类样本与其最近的多数类样本的距离;
挑选出最小距离对应的多数类样本和少数类样本;
获得多数类样本的m个近邻样本和少数类样本的n个近邻样本;
获得边界样本集d,d=m∩n。
优选的技术方案,获取边界样本集的中心样本的具体方法为:
分别求取边界样本集内每一样本距离边界样本集内所有其他样本的距离;
分别计算各样本对应距离的方差sd和距离总和e;
计算分散度b,b=sd*e;
挑选出分散度最小的样本作为中心样本。
优选的技术方案,计算多数类样本集内每一样本距离中心样本的距离,并根据计算的距离对多数类样本集进行欠采样,具体方法为:
计算多数类样本集内每一样本距离中心样本的距离;
按照距离从小到大进行排序,然后形成r×t的矩阵;
计算矩阵内每一行距离的相对标准偏差rsd;
将相对标准偏差rsd与阈值rsd1进行比较,当rsd≤rsd1时,计算该行距离的平均值,并计算出该行内每一个距离与平均值的差值,将差值大于阈值对应的样本删除;当rsd>rsd1时,将该行对应的所有样本删除;
矩阵内每删除一行样本后,将减少一行样本后的多数类样本集输入到随机森林模型中;
计算δgm1,δgm1=gmi-gm,gmi为删除第i行样本后的多数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
将δgm1与阈值δgm进行比较,当δgm1≥δgm时,停止欠采样,此时的样本即为新的多数类样本集。
优选的技术方案,所述对少数类样本集进行过采样为计算少数类样本集内每一少数类样本距离中心样本的距离,并根据计算的距离对少数类样本集进行过采样,获得新的少数类样本集,具体包括:
计算少数类样本集内每一样本距离中心样本的距离;
将距离按从小到大排序,形成r’×t’的矩阵;
从第一行开始,利用s-nksmote算法对每一行对应的样本进行过采样;
矩阵内每一行的样本经过过采样后,将经过过采样后形成的样本集输入到到随机森林模型中;
计算δgm2,δgm2=gmj-gm,gmj为第j行样本经过过采样后形成的少数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
将δgm2与阈值δgm进行比较,当δgm2≥δgm时,停止过采样,此时的样本即为新的少数类样本集。
本发明另一方面提供一种基于采样与特征简约的非平衡数据集转换系统,该转换系统包括:
获取非平衡数据集的数据获取模块;所述非平衡数据集包括多数类样本集和少数类样本集;
对非平衡数据集进行采样处理,获得新的非平衡数据集的采样处理模块;
对新的非平衡数据集进行降维处理,转换成特征简约的新的非平衡数据集的降维处理模块。
本发明再一方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明提供的基于采样与特征简约的非平衡数据集转换方法的步骤。
本发明提供的基于采样与特征简约的非平衡数据集转换方法,首先利用采样方法对非平衡数据集中的样本进行采样,使少数类的样本数目达到与多数类样本数目接近平衡,降低少数类样本的不平衡性。然后利用特征与类别标签之间的相关性对特征进行从大到小的排序;再从特征的最后一维开始按照顺序依次删除一维特征,每删除一维特征就将减少一维特征的样本数据集输入随机森林模型,利用随机森林计算这些样本对应的acc值作为适应度,直到计算到只剩下第一维特征(从最后一维开始删除,每删除特征一次就将数据集输入随机森林计算一次,直到剩下第一维特征)的样本数据集对应的acc值。比较所有acc值,选取最大acc值对应的特征维度作为特征约简的目标特征维度。通过以上转换方法获得的新的非平衡数据输入到多分类svm进行训练,可显著提高分类的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例1提供的基于采样与特征简约的非平衡数据集转换方法的流程示意图;
图2是实施例1步骤s2过采样具体的流程图;
图3是实施例1步骤s3具体的流程图;
图4是实施例2步骤s2具体的流程图;
图5是步骤s210具体的流程图;
图6是步骤s220具体的流程图;
图7是步骤s230具体的流程图;
图8是步骤s240具体的流程图;
图9是实施例3提供的基于采样与特征简约的非平衡数据集转换方法的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1
本发明实施例1提供一种基于采样与特征简约的非平衡数据集转换方法,如图1所示,该方法包括如下步骤:
s1:获取非平衡数据集,所述非平衡数据集包括多数类样本集和少数类样本集;
s2:对非平衡数据集进行采样处理,获得新的非平衡数据集,包括利用s-nksmote算法对少数类样本集进行过采样,参考图2,具体为:
s21获得少数类样本集内样本x的k个近邻样本;
其中,k个近邻样本为在核空间上距离样本x最近的k个样本,k的取值可以进行设定,可以为100、500等;
s22:将k个近邻样本中的少数类样本个数与多数类样本个数进行比较,当少数类样本的个数多于多数类样本的个数时,标记x为安全样本,当少数类样本的个数少于多数类样本的个数,且存在少数类样本,标记x为危险样本,当k个近邻样本全是多数类样本,标记x为噪声样本;
s23:当x为噪声样本时,在少数类样本集中随机选择一个样本x’,依照以下方式生成靠近少数类样本的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0.5,1)·(x’-x)
s24:当x不是噪声样本时,从其k个近邻样本中随机选择1个样本x’,如果x’属于多数类样本,则依照以下方式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0,0.5)·(x’-x)
如果x’属于少数类样本,则依照下列公式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0,1)·(x’-x);
其中,各步骤中的rand(a,b)表示区间(a,b)内的一个随机数,a=0或0.5,b=0.5或1;
s3:对新的非平衡数据集进行降维处理,转换成特征简约的新的非平衡数据集,参考图3,具体包括如下步骤:
s31:分析新的非平衡数据集内每一类样本的特征与对应类别标签的相关性,并将特征按照与类别标签的相关性从大到小进行排序;
相关性分析可以根据现有方法进行分析,例如可以根据信息熵或互信息的方法进行分析;
s32:从特征的最后一维开始按照顺序依次删除一维特征,每删除一维特征将减少一维特征后的新的非平衡数据集输入到随机森林模型中,并计算出每减少一维特征后的新的非平衡数据集对应的acc值;
其中,acc值表示准确性,从最后一维开始删除,每删除特征一次就将新的非平衡数据集输入随机森林计算一次,直到剩下第一维特征;
s33:比较所有acc值,选取最大acc值对应的特征维度,即为特征简约后的特征维度。
例如第v次删除后计算的acc值最大,则保留前y-v维特征,y为原始特征的维度。
本发明实施例提供的基于采样与特征简约的非平衡数据集转换方法,利用s-nksmote算法对少数类样本集进行过采样,提高少数类样本的数量,降低少数类样本的不平衡性;然后利用相关性分析和随机森林相结合,实现对新的非平衡数据集的特征简约处理,转换后的数据集输入到多分类svm进行训练,显著提高了分类的准确性。
实施例2
本发明实施例2提供一种基于采样与特征简约的非平衡数据集转换方法,该方法包括如下步骤:
s1:获取非平衡数据集,所述非平衡数据集包括多数类样本集和少数类样本集;
s2:对非平衡数据集进行采样处理,获得新的非平衡数据集,步骤s2具体方法参考图4,具体包括:
s210:获取多数类样本集和少数类样本集的边界样本集;
参考图5,步骤s210具体为,其中以下所指的距离都是核空间上的距离;
s211:分别计算多数类样本集中每一多数类样本与其最近的少数类样本的距离;
s212:分别计算少数类样本集中每一少数类样本与其最近的多数类样本的距离;
s213:挑选出最小距离对应的多数类样本和少数类样本;
s214:获得多数类样本的m个近邻样本和少数类样本的n个近邻样本;
其中,m和n均为设定的值,均为大于1的正整数,取值可以为50、100等;
s215:获得边界样本集d,d=m∩n。
其中获得的边界样本集为m个近邻样本和n个近邻样本的交集,即是由m个近邻样本和n个近邻样本内相同的样本形成的。
s220:获取边界样本集的中心样本;
参考图6,步骤s220具体为:
s221:分别求取边界样本集内每一样本距离边界样本集内所有其他样本的距离;
求取边界样本集内样本xb距离其他e个样本的距离sbf,边界样本集内总样本数为e+1个;b=1,2...,e,e+1,sbf为样本xb距离样本xf的距离,f=1,2...,e,e+1,f≠b;
s222:分别计算各样本对应距离的方差sd和距离总和e;
计算样本xb的方差
s223:计算分散度b,b=sd*e;
s224:挑选出分散度最小的样本作为中心样本;
s230:计算多数类样本集内每一多数类样本距离中心样本的距离,并根据计算的距离对多数类样本集进行欠采样,获得新的多数类样本集,新的多数类样本集和新的少数类样本集合成了新的非平衡数据集;
参考图7,步骤s230具体为:
s231:计算多数类样本集内每一样本距离中心样本的距离;
s232:按照距离从小到大进行排序,然后形成r×t的矩阵;
r和t都是设定值,可以相同或不同,可以取50、100或200等值;
s233:计算矩阵内每一行距离的相对标准偏差rsd;
其中,
s234:将相对标准偏差rsd与阈值rsd1进行比较,当rsd≤rsd1时,计算该行距离的平均值,并计算出该行内每一个距离与平均值的差值,将差值大于阈值对应的样本删除;当rsd>rsd1时,将该行对应的所有样本删除;其中阈值rsd1为设定值;
s235:矩阵内每删除一行样本后,都将减少一行样本后的多数类样本集输入到随机森林模型中;该随机森林模型为经过训练后的模型;
s236:计算δgm1,δgm1=gmi-gm,gmi为删除第i行样本后的多数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
s237:将δgm1与阈值δgm进行比较,当δgm1≥δgm时,停止欠采样,此时的样本即为新的多数类样本集;
s240:计算少数类样本集内每一少数类样本距离中心样本的距离,并根据计算的距离对少数类样本集进行过采样,获得新的少数类样本集;
参考图8,步骤s240具体为:
s241:计算少数类样本集内每一样本距离中心样本的距离;
s242:将距离按从小到大排序,形成r’×t’的矩阵;
r’和t’都是设定值,可以相同或不同,可以取50、100或200等值
s243:从第一行开始,利用s-nksmote算法对每一行对应的样本进行过采样,参考实施例1和图2的方法进行过采样;
s244:矩阵内每一行的样本经过过采样后,将经过过采样后形成的样本集输入到到随机森林模型中;
s245:计算δgm2,δgm2=gmj-gm,gmj为第j行样本经过过采样后形成的少数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
s246:将δgm2与阈值δgm进行比较,当δgm2≥δgm时,停止过采样,此时的样本即为新的少数类样本集。
s3:对新的非平衡数据集进行降维处理,转换成特征简约的新的非平衡数据集,具体步骤实施例1和图3。
本发明实施例2提供的基于采样与特征简约的非平衡数据集转换方法可以降低现有技术过采样带来的过拟合问题,并且避免了现有技术欠采样时误删重要信息样本的问题,转换形成的数据集输入到多分类svm进行训练,进一步提高了分类的准确性,而且降低了分类的时间。
实施例3
本发明实施例3提供一种基于采样与特征简约的非平衡数据集转换系统,如图9所示,该转换系统包括:
获取非平衡数据集的数据获取模块1,所述非平衡数据集包括多数类样本集和少数类样本集;
对非平衡数据集进行采样处理,获得新的非平衡数据集的采样处理模块2;
对新的非平衡数据集进行降维处理,转换成特征简约的新的非平衡数据集的降维处理模块3。
继续参考图9,采样处理模块2包括:
边界样本获取子模块210:用于获取多数类样本集和少数类样本集的边界样本集;其中,边界样本获取子模块210包括:
第一计算单元211:用于分别计算多数类样本集中每一多数类样本与其最近的少数类样本的距离;
第二计算单元212:用于分别计算少数类样本集中每一少数类样本与其最近的多数类样本的距离;
第一挑选单元213:用于挑选出最小距离对应的多数类样本和少数类样本;
获取单元214:获得多数类样本的m个近邻样本和少数类样本的n个近邻样本,获得边界样本集d,d=m∩n
其中,m和n均为设定的值,均为大于1的正整数,取值可以为50、100等;获得的边界样本集为m个近邻样本和n个近邻样本的交集,即是由m个近邻样本和n个近邻样本内相同的样本形成的。
中心样本获取子模块220:用于获取边界样本集的中心样本,所述中心样本获取子模块包括:
第三计算单元221:用于分别求取边界样本集内每一样本距离边界样本集内所有其他样本的距离;
第四计算单元222:用于分别计算各样本对应距离的方差sd和距离总和e;
第五计算单元223:用于计算分散度b,b=sd*e;
第二挑选单元224:用于挑选出分散度最小的样本作为中心样本;
欠采样处理子模块230:用于计算多数类样本集内每一多数类样本距离中心样本的距离,并根据计算的距离对多数类样本集进行欠采样,获得新的多数类样本集,新的多数类样本集和新的少数类样本集合成了新的非平衡数据集;
所述欠采样处理子模块230包括:
第六计算单元231:用于计算多数类样本集内每一样本距离中心样本的距离;
第一矩阵形成单元232:用于按照距离从小到大进行排序,然后形成r×t的矩阵;
r和t都是设定值,可以相同或不同,可以取50、100或200等值;
第七计算单元233:用于计算矩阵内每一行距离的相对标准偏差rsd;
第一比较单元234:用于将相对标准偏差rsd与阈值rsd1进行比较,当rsd≤rsd1时,计算该行距离的平均值,并计算出该行内每一个距离与平均值的差值,将差值大于阈值对应的样本删除;当rsd>rsd1时,将该行对应的所有样本删除;其中阈值rsd1为设定值;
第一输入单元235:矩阵内每删除一行样本后,用于将减少一行样本后的多数类样本集输入到随机森林模型中;该随机森林模型为经过训练后的模型;
第八计算单元236:用于计算δgm1,δgm1=gmi-gm,gmi为删除第i行样本后的多数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
第二比较单元237:用于将δgm1与阈值δgm进行比较,当δgm1≥δgm时,停止欠采样,此时的样本即为新的多数类样本集;
过采样处理子模块240:用于计算少数类样本集内每一少数类样本距离中心样本的距离,并根据计算的距离对少数类样本集进行过采样,获得新的少数类样本集;
所述过采样处理子模块240包括:
第九计算单元241:用于计算少数类样本集内每一样本距离中心样本的距离;
第二矩阵形成单元242:用于将距离按从小到大排序,形成r×t的矩阵;
过采样单元243:用于从第一行开始,利用s-nksmote算法对每一行对应的样本进行过采样,过采样单元具体包括的子单元如下:
近邻获得子单元:用于获得少数类样本集内样本x的k个近邻样本;
比较判断子单元:用于将k个近邻样本中的少数类样本个数与多数类样本个数进行比较,当少数类样本的个数多于多数类样本的个数时,标记x为安全样本,当少数类样本的个数少于多数类样本的个数,且存在少数类样本,标记x为危险样本,当k个近邻样本全是多数类样本,标记x为噪声样本;
第一样本生成子单元:用于当x为噪声样本时,在少数类样本集中随机选择一个样本x’,依照以下方式生成靠近少数类样本的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0.5,1)·(x’-x)
第一样本生成子单元:用于当x不是噪声样本时,从其k个近邻样本中随机选择1个样本x’,如果x’属于多数类样本,则依照以下方式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0,0.5)·(x’-x)
如果x’属于少数类样本,则依照下列公式生成靠近x的新样本xnew,所有新样本形成了新的少数类样本集;
xnew=x+rand(0,1)·(x’-x);
其中,各步骤中的rand(a,b)表示区间(a,b)内的一个随机数,a=0或0.5,b=0.5或1;
第二输入单元244:矩阵内每一行的样本经过过采样后,用于将经过过采样后形成的样本集输入到到随机森林模型中;
第十计算单元245:用于计算δgm2,δgm2=gmj-gm,gmj为第j行样本经过过采样后形成的少数类样本集输入到随机森林模型中输出的g_mean值,gm为原始的非平衡数据集输入到随机森林模型中输出的g_mean值;
第三比较单元246:用于将δgm2与阈值δgm进行比较,当δgm2≥δgm时,停止过采样,此时的样本即为新的少数类样本集。
所述降维处理模块3包括:
分析排序子模块31,用于分析新的非平衡数据集内每一类样本的特征与对应类别标签的相关性,并将特征按照与类别标签的相关性从大到小进行排序;
计算子模块32:用于从特征的最后一维开始按照顺序依次删除一维特征,每删除一维特征将减少一维特征后的新的非平衡数据集输入到随机森林模型中,并计算出每减少一维特征后的新的非平衡数据集对应的acc值;
比较子模块33:用于比较所有acc值,选取最大acc值对应的特征维度,即为特征简约后的特征维度。
本发明实施例提供的基于采样与特征简约的非平衡数据集转换方法,利用s-nksmote算法和欠采样的混合方法对非平衡数据集进行采样,降低现有技术过采样带来的过拟合问题,避免了现有技术欠采样时误删重要信息样本的问题,转换形成的数据集输入到多分类svm进行训练,进一步提高了分类的准确性,而且降低了分类的时间。
实施例4
本发明实施例4还提供另一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序被一个或者一个以上的处理器用来执行实施例1和实施例2所提供的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。