基于条件互信息的动态特征选择方法
技术领域
本发明属于数据挖掘方法技术领域,涉及基于条件互信息的动态特征选择方法。
背景技术
随着信息科学和计算机技术的飞速发展,特别是多传感器的应用,能够获取的信息数据量越来越大,特征维数也越来越高。数据容量的增多为数据挖掘提供了条件,但同时数据维数的增高会延长模型的建立时间,降低模型的预测能力,因此海量的数据对分类器的设计也提出了更高的要求。这些数据的特征集中,含有大量冗余特征和噪声,因此,能有效地去除不相关特征,精简数据,同时清除数据中的复杂噪声,对提高学习算法的能力并进行有效的数据挖掘十分重要。特征选择就是解决这个问题的关键技术,特征选择指的是从原始特征集合中选择使某种评估标准最优的特征子集,其目的是根据某种特征选择算法挑选出最少的特征子集,使得分类任务达到和特征选择前近似甚至更好的结果,从而促进后续其它目标任务的学习。特征选择算法分为三类,包括嵌入式特征选择算法、包装式特征选择算法和过滤式特征选择算法。嵌入式特征选择算法,其特征选择的过程与分类的过程关系密切,需要在特征选择的过程中完成分类;包装式特征选择算法,通过调用分类器根据分类结果对特征进行评价;而过滤式特征选择算法,其特征选择的过程与分类器完全独立;因此过滤式特征选择在计算上是高效的。
常见的特征选择方法度量方法有很多,例如基于距离,基于卡方检验等。互信息与这些度量方法不同,它从信息学的角度将特征与特征之间的关系以及特征与类之间的关系解释为信息量,在传统的基于互信息的特征选择算法中均使用互信息描述特征之间的关系,而条件互信息比互信息所表示的信息量更精确,同时很多传统的特征选择方法只能静态的衡量特征与类之间的互信息,即当很多候选特征提供的新信息量相同时,模型不知道该选择哪一个而消耗时间,而动态的特征选择算法可以动态衡量在已选特征的条件下,候选特征与类之间的互信息,从而缩减模型训练时间,因此本申请提出了基于条件互信息的动态特征选择方法。
发明内容
本发明的目的是提供一种基于条件互信息的动态特征选择方法,解决现有技术中存在的特征选择方法分类准确率低、效率低的问题。
本发明所采用的技术方案是,基于条件互信息的动态特征选择方法,具体操作步骤如下:
步骤1.对数据集进行预处理,得到预处理数据集;
步骤2.对步骤1得到的预处理数据集进行离散化处理,将预处理数据集中的所有特征划分到不同的特征等级中;
步骤3.计算经步骤2离散化处理后的数据集中所有特征X与类变量Y之间的重要程度;
步骤4.根据步骤3计算出的特征与类之间的重要程度I(X;Y)后,选择重要程度最大的特征作为重要特征,将重要特征从原特征集合中删除,添加到候选特征集合中,作为第一个被选入候选特征集的候选特征,再计算其余候选特征。
本发明的特点还在于:
步骤1具体为:
数据集中的每一列为一个特征,每个特征有n行,将每个特征的取值范围压缩到0和1之间,得到预处理后的特征X。
步骤2具体按照以下步骤实施:
步骤2.1,对特征X中的所有元素进行升序排序得到X’;
步骤2.2,分别取X’中第n/5,第2*n/5,第3*n/5,第4*n/5,第5*n/5位置的元素;
步骤2.3,设y为特征等级,若0<=X[i]<X’[n/5],则y=0;若 X’[n/5]<=X[i]<X’[2*n/5],则y=1;若X’[2*n/5]<=X[i]<X’[3*n/5],则y=2;若 X’[3*n/5]<=X[i]<X’[4*n/5],则y=3;若X’[4*n/5]<=X[i]<=X’[5*n/5],则y=4;按照此规律将特征X中所有元素都划分为在不同的特征等级中;
其中,y∈{0,1,2,3,4},i代表特征X的第i个元素,X[i]表示特征X的第i 个特征值。
步骤3具体按照以下步骤实施:
计算每个特征X与类变量Y之间的重要程度,计算公式如下:
其中,类指的是数据集中的标签列,X表示特征,x是X可能的取值,Y表示类变量,y是Y可能的取值,公式中p(y)是y的概率分布,p(x)是x概率分布, p(x,y)表示x和y同时发生时候的概率分布;
且p(x)和p(y)的计算如下:
其中,N(X=x)表示X取值为x的个数,N(X≠x)表示不包含X取值为x的个数,N(Y=y)表示Y取值为y的个数,N(Y≠y)表示不包含Y取值为y的个数。
步骤4计算其余候选特征的具体步骤如下;
当候选特征集合中的特征个数大于1的时候,使用前向迭代算法选择i-1 个重要特征,计算候选特征在特征集合中的重要程度,每一次迭代,选择当前阶段最重要的特征,然后把这个重要的特征从原特征集中删除,放入候选特征集S中,经过i-1次迭代,最终得到大小为i的特征子集。
计算特征重要程度的评价标准MRIDFS为:
其中,Xi为目标特征,Xj为候选特征集S中的某个已选特征,类Y指的是数据集中标签列。
本发明的有益效果为:
1.在分类准确率上,相比于传统的CIFE算法、JMI算法、CMIM算法和 Relaxmrmr算法,本发明在UCI数据集Lungcancer、Movementlias、Musk、Yeast 、Lung、Lymphoma、Madelon和TOX-171上具有明显的优势结果,原因为本发明提出了特征相关冗余相对比的概念,特征相关冗余相对比指的是单位相关信息量下所附带的冗余量,使剔除的冗余部分更加精确,从而提高分类准确率;
2.在与不同的分类器配合上,将本发明和其他七种算法选择的特征子集分别在支持向量机(SVM)、朴素贝叶斯(NB)、K-近邻(KNN)这三种著名的分类器上运行,最终结果表明本发明结果具有稳定性,无论使用哪种分类器都可以获得好的分类准确率。
附图说明
图1是本发明基于条件互信息的动态特征选择方法的流程图;
图2-3是本发明基于条件互信息的动态特征选择方法与分别在低维数据集Lungcancer、Movementlias上的分类准确率对比图;
图4-9是本发明基于条件互信息的特征选择与评价方法与分别在高维数据集Musk、Yeast、Lung、Lymphoma、Madelon和TOX-171上的分类准确率对比图;
图10-12是本发明基于条件互信息的特征选择与评价方法与现有技术在不同数据集上,分别使用支持向量机分类器、朴素贝叶斯分类器、K近邻分类器时的盒须图。
图13是本发明基于条件互信息的动态特征选择方法的特征与类标签之间的关系实例图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明中的相关定义如下:
定义1(熵)熵是对随机变量的不确定性的一种度量,这种不确定性也可以称为随机变量的混乱程度,定义如下:
其中,X表示随机变量,x是X可能的取值,p(x)表示x的概率分布;H(X) 表示随机变量X的混乱程度,一个事件的概率越大,或者说分布越不均匀,则熵越小,信息量越小。
定义2(条件熵)条件熵是对给定一个变量的条件下,另一个变量的不确定性的度量,条件熵的定义如下:
其中,p(y|x)表示在给定x条件下y的概率分布,p(x,y)表示x和y的联合概率分布,H(Y|X)的值越小,意味着X可以提供更多的信息使得Y变得稳定。
定义3(互信息)互信息用来度量两个变量之间的独立程度,互信息与熵和条件熵的关系如下:
如果X和Y的互信息值为0,则表示X和Y是相互独立的,如果X和Y的互信息值大于0,且值越大,两个变量的相关性越大。
定义4(条件互信息)条件互信息用来度量在给定一个变量的条件下另外两个变量之间的独立程度,条件互信息的定义如下:
定义5(独立分类信息)假设特征Xi和Xj可以识别类Y,则Xi和Xj提供的独立分类信息使用下式表示。
I(Y;Xi|Xj)+I(Y;Xj|Xi) (9)
本发明基于以下原理:使用前向迭代算法选择i个特征,在每次迭代阶段,选择当前阶段最好的特征,经过i次迭代得到大小为i的特征子集。在特征评价的时候,使用条件相关和条件冗余分别描述特征与特征之间的关系以及特征与类之间的关系。如果一个特征与类是高度相关,与已选特征集中的特征是低度冗余,那么这个特征就会被选入到特征子集中。
本发明主要提出了一种新的特征评价计算标准。
本发明基于条件互信息的动态特征选择方法,如图1所示,具体按照以下步骤实施:
步骤1.对数据集进行预处理,由于在不同的数据集中,特征具有不同的含义,每个特征的值具有不同的取值范围,所以为了消除量纲对特征评价值的计算的影响,需要对数据进行规范化处理。将特征的取值范围压缩到0和1之间;
预处理步骤为:数据集中的每一列为一个特征,每个特征有n行,将每个特征的取值范围压缩到0和1之间,得到预处理后的特征X,若干列特征X组成;
步骤2.对数据集进行离散化处理,将预处理数据集中的所有特征划分到不同的特征等级中,数据集离散化处理的目的是便于使用公式(3)计算互信息值,离散化过程如下:
步骤2.1.对特征X中的所有元素进行升序排序得到X’;
步骤2.2.分别取X’中第n/5,第2*n/5,第3*n/5,第4*n/5,第5*n/5位置的元素;
步骤2.3.我们假设y为特征等级,如果0<=X[i]<X’[n/5],那么y=0;如果 X’[n/5]<=X[i]<X’[2*n/5],那么y=1;如果X’[2*n/5]<=X[i]<X’[3*n/5],那么y=2;如果X’[3*n/5]<=X[i]<X’[4*n/5],那么y=3;如果X’[4*n/5]<=X[i]<=X’[5*n/5],那么y=4;按照此规律将特征X中所有元素都划分为在不同的特征等级中。其中,y∈{0,1,2,3,4},i代表特征X的第i个元素,X[i]表示特征X的第i个特征值;
步骤3.计算每个特征X与类变量Y之间的重要程度,计算公式如下:
其中,类指的是数据集中的标签列,X表示特征,x是X可能的取值,Y表示类变量,y是Y可能的取值。公式中p(y)是y的概率分布,p(x)是x概率分布,p(x,y)表示x和y同时发生时候的概率分布;
且p(x)和p(y)的计算如下:
其中N(X=x)表示X取值为x的个数,N(X≠x)表示不包含X取值为x的个数;其中N(Y=y)表示Y取值为y的个数,N(Y≠y)表示不包含Y取值为y的个数。
步骤4.根据步骤3计算出的特征与类之间的重要程度I(X;Y)后,选择重要程度最大的特征作为重要特征,将这个重要特征从原特征集合中删除,添加到候选特征集合中,作为第一个被选入候选特征集的候选特征;
当候选特征集合中的特征个数大于1的时候,使用前向迭代算法选择i-1 个重要特征,计算候选特征在特征集合中的重要程度,每一次迭代,选择当前阶段最重要的特征,然后把这个重要的特征从原特征集中删除,放入候选特征集S中,经过i-1次迭代,最终得到大小为i的特征子集,而计算特征重要程度的评价标准MRIDFS为:
其中,Xi为目标特征,Xj为候选特征集S中的某个已选特征,类Y指的是数据集中标签列。
Xi可以提供的信息量可以分为两种,一种是特征Xi本身可以提供地信息量使用公式表示就是I(Xi;Y),表示为图13中的第一部分和第二部分;另一种是在已选特征Xj参与下Xi可以提供地额外信息量,以及Xi的出现可以使得Xj提供额外地信息量。使用公式表示为I(Xi;Y|Xj)+I(Xj;Y|Xi)。表示为图13中的第一和第三部分。所以从信息量角度,特征Xi可以提供地与Y相关地信息量为 I(Xi;Y)+I(Xi;Y|Xj)+I(Xj;Y|Xi),表示为图13中的第一、第二和第三部分。但是Xi不仅提供了与类Y的信息量,也提供了Xi和Xj的冗余信息。传统对于冗余信息量的表示也是使用公式I(Xi;Xj)表示,但是这种表示是比较粗糙的。由图13可以看出,冗余信息量分为两部分一部分是与类无关的使用公式 I(Xi;Y|Xj)表示,表示为图13中的第四部分;另一部分与类相关表示为图13 中的第二部分,由于I(Xi;Y|Xj)可以化解为:
I(Xi;Y|Xj)=I(Xi;Y)-{I(Xi;Y)-I(Xi;Y|Xj)}
=I(Xi;Y)-{I(Xi;Xj)-I(Xi;Xj|Y)}
I(X
i;X
j)-I(X
i;X
j|Y)表示与类相关的冗余,I(X
i;Y)+I(X
i;Y|X
j)+I(X
j;Y|X
i) 它本身包含与类相关的冗余的剔除。因此,本发明将重点放在与类无关的冗余上。我们提出了特征相关冗余度的概念,在公式(4)中,
为特征相关冗余度,它表示单位相关信息量下所附带的冗余量,能更精确的表示冗余部分从而提高分类准确率。
在模式分类过程中,从原特征集中选择出具有类别区分能力的特征,构成新的子集,然后应用到分类器中,在新的特征子集中,这些特征可以帮助分类器进行分类,且由于特征数量变少,在使用距离度量两个样本之间相似性的算法中,可以减少模型的训练时间。
本发明的性能评测如下:
为了验证本发明的有效性,我们从UCI数据集库中选择16个具有不同样本量、不同维数和不同类数的数据集,如表1所示。调用支持向量机分类算法、 KNN分类算法和朴素贝叶斯分类算法进行十折交叉验证,取十次分类准确率的平均值,作为最终评价指标。为了提高分类的速度,对KNN算法设置近邻参数k=3,这里的k在KNN算法中的含义就是距离某个点距离最近的k个点。
支持向量机使用线性核,实验中,本发明和七种算法进行对比,这七种算法分别是基于相关和类内冗余的CIFE算法、条件互信息最大化的CMIM算法、基于联合互信息的特征选择算法JMI,以及最新的Relaxmrmr、CFR、MCRMICR 和DCSF算法。
表1.数据集属性
实验结果对比:
图2-3显示的本发明和其他七种算法在低维数据集上的结果,可以看出在低维数据集上特征选择过程的后期,本发明具有很好的分类效果,但是优越性不明显,因为低维数据集特征之间的关系比较简单。
图4-9显示的是本发明和其他对比算法在高维数据集上的结果,可以发现在Musk、Yeast、COIL20、Lymphoma、Madelon和TOX-171数据集上具有很好的效果,这是因为本发明使用了特征相关冗余相对比,相比于其他算法冗余信息刻画得更具体。
本发明和不同的算法在支持向量机SVM,邻近算法KNN和朴素贝叶斯算法NB三种分类器上的分类结果如表2,表3和表4所示,从三个表的标签列,可以发现,本发明中的特征评价准则具有很好的效果。
表2.本发明和其他经典算法使用不同的数据集在SVM分类器上的实验结果
注:符号(+),(-)和(=)表示MRIDFS执行“优于”,“劣于”和“等于”相对应方法。
表3.本发明和其他经典算法使用不同的数据集在NB分类器上的实验结果
表4.本发明和其他经典算法使用不同的数据集在KNN分类器上的实验结果