基于最大信息系数和基尼指标的特征选择方法与流程

文档序号:18450623发布日期:2019-08-17 01:14阅读:694来源:国知局
基于最大信息系数和基尼指标的特征选择方法与流程

本发明公开了一种特征选择方法,涉及了数据处理技术领域。



背景技术:

随着互联网应用和技术的不断进步,数据规模呈现出爆发式增长的状态,这也带来了“维度灾难”等问题,如何有效的降低数据集中的特征维度,成为实际数据挖掘工作需要解决的问题。特征选择方法通过选取优质特征,删除无关和冗余特征,实现降低数据集特征维度,提高分类效率和准确率的功能,且有去噪、防止过拟合的作用。

非平衡数据集在日常生活和产生过程中是很常见的,即多数类和少数类之间的比例严重失衡,如医疗诊断、风险控制、交易欺诈等。支持向量机算法模型(supportvectormachine,svm)在解决非线性、小样本、高维模式分类识别中展现了诸多优势,其在生物医学、模式识别等领域受到广泛关注,为了提高svm的分类精度和泛化能力,相关学者提出通过特征工程来提高该模型分类精度的方法。胡峰等人提出了基于特征聚类的封装式特征选择方法,王凯等人提出了改进特征选择rf算法,吴辰文等人提出了基于rf模型gini指标特征加权的支持向量机方法(rfg-svm)。



技术实现要素:

本发明的目的在于提供一种基于最大信息系数和基尼指标的特征选择方法,能够提高对非平衡数据集分类的精度。

为实现上述目的,本发明提供一种基于最大信息系数和基尼指标的特征选择方法,所述方法包括:

s101:选取uci数据库中冠状动脉疾病数据集数据;

s102:对冠状动脉疾病数据集的数据进行数据预处理,所述预处理包括数据离散化、归一化以及数据平衡化处理;

s103:利用最大信息系数法对处理后的数据进行相关性特征选择,得到筛选后的特征数据集;

s104:通过随机森林模型中的gini指数计算筛选后的每个特征对rf模型的特征重要度并对其进行排序,去除重要度较低的特征,得到最终特征数据集;

s105:将得到的特征数据集输入到svm模型中,得到数据集优化后的svm模型;

s106:利用测试集对新的模型进行测试,使用auc值作为评判模型的标准;

根据所述的方法,其特征在于,所述方法还包括:

s1021:本发明采用rm-smote算法进行数据平衡化。

本发明采用一种球形插值思想(roundmeans,rm)来改进smote算法的插值公式,从而构建一种改进的采样算法为rm-smote算法。该算法是对数据集中的少数类进行聚类操作,形成若干个聚类簇,然后根据欧几里得距离计算少数类样本各聚类簇的聚类中心和聚类簇中其他少数类样本到聚类中心的距离,然后以最远的聚类样本到聚类中心的距离为半径建立球形空间,最后在这个空间内进行插值。具体步骤如下:

将预处理后的少数类样本数据随机选择k个初始聚类中心对少数类样本进行聚类,得到k个聚类簇。

根据欧几里得距离计算各个簇类少数类样本到聚类中心的距离,然后以最远的聚类样本到聚类中心的距离为半径建立球形空间。按照如下公式计算欧几里得距离:

d(xi,xj)=||xi-xj||2

其中,d(xi,xj)表示样本xi与其余样本xj之间的欧氏距离,i=1,2,...,n,j=1,2,...,m,||*||2表示二范数运算。

s1025:在球形空间内进行插值,插值公式如下:

pj=uij+rand(0,1)×(bj-aj),1≤j≤e

其中uij(i=1,2,...,k,j=1,2,...,e)为簇心ui的第j个属性,e为少数类样本集样本的属性个数,pj(j=1,2,...,e)为新合成的“人造”样本p的第j个属性的属性值,rand(0,1)为(0,1)之间的一个随机数,而(bj-aj)满足如下公式的条件。

aj=uij-|xmaxj-uij|,bj=uij+|xmaxj-uij|,1≤j≤e

其中|xmaxj-uij|表示取得最大欧式距离的数据xmax与簇心ui两者之间第j个属性的属性差的绝对值。

这样构造产生的人造样本不再是传统的smote算法在少数类样本连线或者延长线之间的插值了,而是在一个设定半径所构成的球形空间内进行插值,这种插值方式控制了插入的范围,对于正负类样本边界模糊的问题具有更好的效果。

根据所述的s103最大信息系数法对处理后的数据进行相关性特征选择,其特征在于,所述方法还包括:

s1031:reshef等提出的最大信息系数理论和求解方法,重点描述了变量间度量关系,通过这种度量关系进一步得到它们间的非函数依赖关系。最大信息系数主要利用互信息和网格划分方法进行计算,互信息是用来衡量变量之间的相关程度,对于给定变量a={ai,i=1,2,...,n}和b={bi,i=1,2,...,n},其中n为样本的数量,则其互信息定义为:

其中p(a,b)是a和b的联合概率密度函数,而p(a)和p(b)分别是a和b的边缘概率密度函数,使用直方图估计对上述的概率密度进行估算。假设d={(ai,bi),i=1,2,...,n}为一个有限的有序对的集合,定义划分g将变量a的值域分成x段,将b的值域分成y段,g即为x×y的网格。在得到的每一种网格划分内部计算互信息mi(a,b)最大值作为划分g的互信息值,定义划分g下d的最大互信息公式为:

mi*(d,x,y)=maxi(d|g)

其中(d|g)表示数据d在使用d进行划分,虽然最大信息系数是利用互信息来表示网格的好坏,但是其并不是简单地估计互信息,而是将不同划分下得到的最大归一化mi值组成特征矩阵,特征矩阵定义为m(d)x,y,计算公式如下所示:

则最大信息系数可以定义为:

mic(d)=maxxy<b(n){m(d)x,y}

其中,b(n)为网格划分x×y的上限值,一般地,b(n)=n0.6时效果最好,因此本发明也采用该值。

本文使用最大信息系数来定义特征与类别、特征与特征间的相关性,给定一个n条样本的特征集f={f1,f2,...,fm,c},其特征数为m,类别为c。

对任意特征fi和类别c间的相关性定义为mic(fi,c),取值范围在[0,1]。mic(fi,c)值越大表明fi和类别c之间的相关性越强,那么fi则被认为是强相关特征,倾向于保留此特征,mic(fi,c)值越小表明fi和类别c之间的相关性越弱,那么fi则被认为是弱相关特征,倾向于删除此特征;如果mic(fi,c)的值为0,说明fi是无关冗余的特征,需要删除。

任意两个特征fi和fj之间的冗余性也是一种相关性,我们定义其为mic(fi,fj),该值越大则表示这两个特征之间的相似度越高,冗余度也就越高。如果该值为0,说明这两个特征相互独立。

根据所述的s104gini指数筛选重要特征,其特征在于,所述方法还包括:

s1041:决策树是数据挖掘领域一种比较典型的单分类器,可以把它看作一个树形结构的模型,通过典型的节点展现树的特征,分别为:根节点、中间节点、叶子节点。决策树从根节点出发,再经过许多个中间节点,最后到达叶子节点,整个过程路径要符合某些规则,且输出单一值,即每棵决策树到达唯一的叶子节点,实现了数据集的分类。为了解决决策树分类规则复杂、易得到局部最优解、过度拟合等问题,集成单个分类器,这就是随机森林的思想。

随机森林在特征随机选取后,需要通过节点分裂算法进行最优属性的选取,且采用程序递归的方式,将根节点分为两颗子树,又从选中的子树继续生成左右子树,如此递归,直到生成最终的叶子节点。节点分裂算法有很多种,包括id3、c4.5、cart等。本文主要使用cart算法,它采用的分裂方式是gini指标最小原则,gini指标是衡量特征属性重要度的方式。

假设样本集合r中包含j个类别的样本,则其基尼指数为:

其中pj为第j类样本的概率,在一次分割后集合r分成了m个部分{n1,n2,...,nm},则分割的基尼指数ginisplit(t)为:

根据s105所述的方法,其特征在于,所述方法还包括:

s1051:支持向量机是在统计学里的srm(structuralriskminimization,srm)原则和vc(vapnik-chervonenkis,vc)维理论基础上发展来的,其主要思想是将输入向量通过相关核函数映射到高维空间中,并在这个空间中创建一个最优分类超平面。设样本集为{(x1,y1),(x2,y2),...,(xi,yi),...,(xn,yn)},其中n为样本数,xi∈rn表示输入矢量,yi∈{+1,-1},线性判别函数为g(x)=w·x+b,分类超平面为w.x+b=0。通过超平面可以将样本分的两类,且存在一个最优的超平面使得这两类样本中到该平面的最短的点距离之和最大。考虑到数据噪音的存在,加入松弛变量εi(εi≥0,i=1,2,...,n),同时分配一个惩罚系数c。因此,超平面优化问题可转为:

对于非线性划分问题,可通过核函数实现一种非线性映射,将输入变量映射到高维空间中,并在这个高维空间中找到一个最优分类超平面。在引入核函数后,可用lagrange乘子上述求解最优超平面问题转化为其对偶问题:

最终的决策函数为:

其中:sign(*)为符号函数,b*是阀值。

算法详细步骤如下:

步骤1设样本集为s={(x(i),y(i))},i=1,2,...,n,其中x(i)为特征向量,y(i)为类别变量。取样本的70%为训练集strain,30%为测试集stest。对训练集strain执行rm-smote以及离散化和归一化及等数据预处理,再使用bootstrap方法对其重复抽样n次,得到最终的训练集strain。

步骤2设集合f为步骤1得到的特征集,s为空集;计算出每个特征与类变量之间的最大信息系数mic(fi,c),i=1,2,...,m,然后进行mic(fi,c)的排序,mic(fi,c)值大的排在前面,表示强相关特征,根据阈值选取前k个特征得到筛选后的特征子集。

步骤3对步骤2中得到的特征子集训练rf模型,根据gini指数选取重要特征,计算每个特征的gini指数并按照从小到大的方式进行排序并设置相应的阀值,去除指数值明显小于其他特征的特征。

步骤4将新产生的特征子集输入svm模型中,选择径向基函数为核函数,并选择合适的惩罚c,核参数σ生成最终的支持向量机模型。

步骤5利用测试集stest对新的训练模型进行测试,使用auc值作为评判模型的标准。

由上可见,本发明采用以上技术方案与现有技术相比,至少具有以下技术效果:

传统特征选择方法无关和冗余特征较多,本发明利用最大信息系数和基尼指标的特征选择方法进行特征选择,使得无关和冗余特征大大减少,降低了数据维度。

在原本的基础上对冠状动脉疾病数据集进行分析,从中得出数据集的分类精度,再与传统svm分类精度进行对比,使得该方法相比传统svm分类模型精度更高。

本发明在对数据集进行特征选择时,通过最大信息系数法在原始的数据n个特征中找到最相关的k个特征,由于最大信息系数法独特的优势,它可以探索到更多的相关性,而且不仅可以计算线性相关性,也可以计算非线性相关性。

本发明在冠状动脉疾病数据集上利用改进的特征选择算法优化特征数据集,此方法将最大信息系数与随机森林的基尼指标相结合,形成一种新的优化算法,将此算法应用到svm的模型中,相比传统模型预测精度有所提高。

附图说明

图1是本发明总体流程图

图2是用rm-smote算法进行数据平衡化的流程图

图3是用最大信息系数法进行特征选择的流程图

图4是基于改进特征选择算法的svm模型优化流程图

具体实施方式

本申请提供一种基于最大信息系数和基尼指标的特征选择方法,所述方法包括:选取uci数据库中冠状动脉疾病数据集数据;对冠状动脉疾病数据集的数据进行数据预处理,所述预处理包括数据离散化、归一化以及数据平衡化处理;利用最大信息系数法对处理后的数据进行相关性特征选择,得到筛选后的特征数据集;通过随机森林(rf)模型中的gini指数计算筛选后的每个特征对rf模型的特征重要度并对其进行排序,去除重要度较低的特征,得到最终特征数据集;将得到的特征数据集输入到svm模型中,得到数据集优化后的svm模型;利用测试集对新的模型进行测试,使用auc值作为评判模型的标准;

在本实施方式中,所述平衡化处理包括:

步骤1:从全部少数类样本数据中随机选择k个初始聚类中心对少数类样本进行聚类,得到k个聚类簇。

步骤2:根据欧几里得距离计算各个簇类少数类样本到聚类中心的距离,然后以最远的聚类样本到聚类中心的距离为半径建立球形空间。按照如下公式计算欧几里得距离:

d(xi,xj)=||xi-xj||2

其中,d(xi,xj)表示样本xi与其余样本xj之间的欧氏距离,i=1,2,...,n,j=1,2,...,m,||*||2表示二范数运算。

步骤3:在球形空间内进行插值,插值公式如下:

pj=uij+rand(0,1)×(bj-aj),1≤j≤e

其中uij(i=1,2,...,k,j=1,2,...,e)为簇心ui的第j个属性,e为少数类样本集样本的属性个数,pj(j=1,2,...,e)为新合成的“人造”样本p的第j个属性的属性值,rand(0,1)为(0,1)之间的一个随机数,而(bj-aj)满足如下公式的条件。

aj=uij-|xmaxj-uij|,bj=uij+|xmaxj-uij|,1≤j≤e

其中|xmaxj-uij|表示取得最大欧式距离的数据xmax与簇心ui两者之间第j个属性的属性差的绝对值。

在本实施方式中,所述的最大信息系数法对处理后的数据进行相关性特征选择包括:

步骤1:初始化一个样本数量为n的特征集f={f1,f2,...,fm,c},其中特征的个数为m,类别为c。

步骤2:计算任意一个特征fi与类别c之间的相关性mic(fi,c)。

步骤3:对特征集f中所有特征按照mic(fi,c)值进行降序排序,越是排在前面的特征表示相关性越强,越需要保留。

步骤4:根据阈值选取前k个特征。

在本实施方式中,所述的gini指数筛选重要特征包括:

步骤1:假设样本集合f中包含c个类别的样本,计算其基尼指数,基尼指数公式如下所示:

其中pi为第j类样本的概率

步骤2:若在一次分割后集合r分成了m个部分{n1,n2,...,nm},则分割的基尼指数ginisplit(t)公式如下所示:

在本实施方式中,所述支持向量机的参数包括c,σ,ε,相应地,所述模型优化单元按照以下步骤进行处理:

步骤1设样本集为s={(x(i),y(i))},i=1,2,...,n,其中x(i)为特征向量,y(i)为类别变量。取样本的70%为训练集strain,30%为测试集stest。对训练集strain执行rm-smote以及离散化和归一化及等数据预处理,再使用bootstrap方法对其重复抽样n次,得到最终的训练集strain。

步骤2设集合f为步骤1得到的特征集,s为空集;计算出每个特征与类变量之间的最大信息系数mic(fi,c),i=1,2,...,m,然后进行mic(fi,c)的排序,mic(fi,c)值大的排在前面,表示强相关特征,根据阈值选取前k个特征得到筛选后的特征子集。

步骤3对步骤2中得到的特征子集训练rf模型,根据gini指数选取重要特征,计算每个特征的gini指数并按照从小到大的方式进行排序并设置相应的阀值,去除指数值明显小于其他特征的特征。

步骤4将新产生的特征子集输入svm模型中,选择径向基函数为核函数,并选择合适的惩罚c,核参数σ生成最终的支持向量机模型。

步骤5利用测试集stest对新的训练模型进行测试,使用auc值作为评判模型的标准。

结合图1,本发明基于最大信息系数和基尼指标的特征选择,包括以下几个部分:

数据处理部分:在获得数据后需要对数据进行处理,包括缺失值处理、数据离散化、归一化以及数据平衡化处理以及利用rm-smote算法,对数据进行平衡化处理。此块最突出的为数据的非平衡化处理,如图2显示,在此将方法具体说明。

步骤1:从全部少数类样本数据中随机选择k个初始聚类中心对少数类样本进行聚类,得到k个聚类簇。

步骤2:根据欧几里得距离计算各个簇类少数类样本到聚类中心的距离,然后以最远的聚类样本到聚类中心的距离为半径建立球形空间。按照如下公式计算欧几里得距离:

d(xi,xj)=||xi-xj||2

其中,d(xi,xj)表示样本xi与其余样本xj之间的欧氏距离,i=1,2,...,n,j=1,2,...,m,||*||2表示二范数运算。

步骤3:在球形空间内进行插值,插值公式如下:

pj=uij+rand(0,1)×(bj-aj),1≤j≤e

其中uij(i=1,2,...,k,j=1,2,...,e)为簇心ui的第j个属性,e为少数类样本集样本的属性个数,pj(j=1,2,...,e)为新合成的“人造”样本p的第j个属性的属性值,rand(0,1)为(0,1)之间的一个随机数,而(bj-aj)满足如下公式的条件。

aj=uij-|xmaxj-uij|,bj=uij+|xmaxj-uij|,1≤j≤e

其中|xmaxj-uij|表示取得最大欧式距离的数据xmax与簇心ui两者之间第j个属性的属性差的绝对值。

特征筛选部分:将处理好的数据进行特征筛选,本发明在特征筛选阶段先是利用最大信息系数法对处理后的数据进行相关性特征选择,得到筛选后的特征数据集;再通过随机森林模型中的gini指数计算筛选后的每个特征对rf模型的特征重要度并对其进行排序,去除重要度较低的特征,得到最终特征数据集;

请参阅图3,需具体说明的是利用最大信息系数法进行相关性特征选择具体实现过程:

步骤1:初始化一个样本数量为n的特征集f={f1,f2,...,fm,c},其中特征的个数为m,类别为c。

步骤2:计算任意一个特征fi与类别c之间的相关性mic(fi,c)。

步骤3:对特征集f中所有特征按照mic(fi,c)值进行降序排序,越是排在前面的特征表示相关性越强,越需要保留。

步骤4:根据阈值选取前k个特征。

通过随机森林模型中的gini指数筛选重要特征的具体实现过程如下:

步骤1首先计算各特征的基尼指数,选择最优特征以及其最优切分点。则其基尼指数可通过如下公式求得:

其中pj为第j类样本的概率,n为类变量的个数,若一次分割后集合r分成了m个部分{n1,n2,...,nm},则分割的基尼指数ginisplit(t)可通过如下公式求得:

步骤2找到基尼指数最小的那个特征,以此为最优特征和最优切分点。

步骤3于是根节点生成两个子节点,其中一个为叶结点,对另一个结点继续以上步骤,最终所得结点都是叶结点。由此得到筛选后的最终特征数据集。

模型优化部分:本发明从基分类器的特征重要度和相关性两个方面考虑,权衡增加强度和减少相关度两个方面,保证新模型的预测效果。如图4所示,具体实施过程如下所示:

步骤1将新产生的特征子集输入到svm模型中,选择径向基函数为核函数,并选择合适的惩罚c,核参数σ生成最终的支持向量机模型。

步骤2利用测试集stest对新的训练模型进行测试,使用auc值作为评判模型的标准。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

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