分支界定算法及其在特征选择中的应用研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分支界定算法及其在特征选择中的应用研究作者:王思臣于潞刘水唐金元
来源:《现代电子技术》2008年第10期
摘要:分支界定算法是目前为止惟一既能保证全局最优,又能避免穷尽搜索的算法。他自上而下进行搜索,同时具有回溯功能,可使所有可能的特征组合都被考虑到。对分支界定算法进行研究,并对其做了一些改进;最后对改进前后的算法在特征选择领域进行比较,选择效率有了明显的提高。
关键词:分支界定算法;特征选择;特征集;最小决策树;局部预测
中图分类号:TP31 文献标识码:A
文章编号:1004-373X(2008)10-142-
(Qingdao Branch,Naval Aeronautical Engineering Institute,Qingdao,
Abstract:Branch&Bound Algorithm is the only method which can ensure best of all the vectors,and it can avoid endless searching.It searches from top to bottom and has the function that from bottom to top,so it can include all of the feature vectors.The Branch&Bound Algorithm is studied in the paper,and it is improved,the two algorithms are compared by the feature seclection,the
Keywords:branch&bound algorithm;feature selection;feature vector;minimum solution
随着科学技术的发展,信息获取技术的不断提高和生存能力的提升,对于目标特征能够获得的数据量越来越大,维数越来越高,一方面可以使信息更充分,但在另一方面数据中的冗余和无关部分也会相应的增多。特征选择[1,2]就是为了筛选出那些对于分类来说最相关的特征,而去掉冗余和无关的特征。
分支界定算法[1,3,4]是一种行之有效的特征选择方法,由于合理地组织搜索过程,使其有可能避免计算某些特征组合,同时又能保证选择的特征子集是全局最优的。但是如果原始特征集的维数与要选择出来的特征子集的维数接近或者高很多,其效率就不够理想。基于此,本文对分支界定算法做了一定的改进,经过实验验证,与改进前相比其效率有明显的提高。
1 分支界定算法的基本原理
分支界定算法针对的特征选择问题是这样定义的[1]:在原来的个特征的集合中选择一个d 个特征的子集,d
其中X代表一个特征子集,是所采取的评价函数。单调性保证了分支界定算法能在保证全局最优的前提下大大减少搜索的复杂度。分支界定算法的搜索空间是一棵树,称为搜索树[2](Search Tree)。他是在算法运行过程中自上而下(top-bottom)按照深度优先(depth-first)的次序动态生成的。以,d=2为例,其中D 为总的特征维数,d 为预期选定的特征子集的维数。搜索树的拓扑结构如图1所示。分支界定算法的搜索树总共有个节点,其中有-个度数为1的节点,有CdD个叶子节点数。
图1 从5维中选择2维的搜索树
该算法中用到的一些符号说明如下:总的特征维数为;预期选定的特征子集Xg的维数为d 。X 为当前要展开以扩展搜索树的节点;Num_features是X 中的特征数目;X→q为节点X 在搜索树中的子节点个数(在动态生成搜索树中很重要);XD为所有特征组成的集合;X*是当前最优节点;bound是当前最优节点X*的评价函数值;为评价函数;该算法的具体步骤如下[3,5]:
(1)令,X→q=d+1,即让X 指向根节点,并设置根节点的子节点数为d+1;bound=0;
(2)展开节点X:即调用函数ExpandNode(X);
(3)输出全局最优节点X*。
其中第(2)步中函数ExpandNode(X)是一个递归过程,他具体的实现步骤如下:
①如果X 是终止节点,转到第⑤步。否则,如果J(X)≥bound,继续执行,如果J(X)
②令n=Num_features(X),在X 中依次去掉一个特征,产生子节点,共n 个,记为
X1,X2,…,Xn;
③计算这n 个子节点的的评价函数值J(Xi),i=1,2,…,n。按升序排列:
;
④令p=X→q;取上式中的前p 个节点,作为搜索树中X 的后继节点。对于这p个节点中的每个节点-1,p-2,…,1),令-i+1。依次执行-1,p-2,…,1)执行完p 个节点的后续展开后,转到第⑥步;
⑤若X优于当前最优节点(即J(X)>bound),令bound=J(X),X*=X;
⑥结束。
在d
2 最小决策树
上面的搜索树中每个节点的最右一个节点后面连接了一长串度数为1的节点。在这一串节点中,其实只有叶子节点的评价值是真正需要计算的。因此,如果将每个节点的最右节点用叶子节点代替,可以简化树的拓扑结构。同时不会破坏搜索全局最优的特性。简化后称为“最小决策树”[2,3](Minimum Solution Tree)。图2所示为最小决策树示意图。
图2 最小决策树
根据上面的算法描述,在展开一个节点时,将评价值小的后继节点放在树的左边,评价值大的后继节点放在树的右边。由于搜索过程是从右边往左边进行的,所以这种排序可以带来2个好处:bound值快速增大,使一个节点处发生剪枝的概率增大(该节点评价值小于bound值的概率增大);剪枝更多地发生在树的左边,因为左边的节点评价值小,发生剪枝的概率大,而树的左边的节点有更多的子节点数,因此可以删除掉更多的节点。最小决策树正是去掉了这些节点,所以在原始的分支界定算法的基础上大大提高了搜索效率。
3 局部预测分支界定算法及其改进
局部预测分支界定算法[3,5,6](Branch&Bound Algorithm with Partial Prediction,BBPP)是用预测节点的评价值来代替真实的评价值。对于每一个特征,保存一个特征对评价值的贡献Axi。Axi在运行过程中不断地更新,用来预测节点的评价值。可以把Axi理解为从子集中去掉所带来的评价值下降的平均值。其计算公式是:
-J(X-{xi})Sxi+1(
其中是一个计数器,记录被更新的次数。局部预测分支界定算法在满足一定条件的情况下预测节点的评价值,预测公式是:
-{xi})=J(X)-
其中是一个预先给定的数,用来调整预测的精确程度。只有在确实需要知道节点的真实评价值的时候,才计算其真实值,由于预测比计算真实值快得多,所以节省了时间。
通过上面对局部预测分支界定算法的研究,作者对该算法做的改进为:在最小决策树中,最右一个节点可以直接变为叶子节点,所以可以直接计算这个叶子节点的评价值,这样在每一