龙源期刊网 http://www.qikan.com.cn 分支界定算法及其在特征选择中的应用研究 作者:王思臣 于 潞 刘 水 唐金元 来源:《现代电子技术》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 分支界定算法的基本原理 龙源期刊网 http://www.qikan.com.cn 分支界定算法针对的特征选择问题是这样定义的[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; 龙源期刊网 http://www.qikan.com.cn ⑥结束。 在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)- 其中是一个预先给定的数,用来调整预测的精确程度。只有在确实需要知道节点的真实评价值的时候,才计算其真实值,由于预测比计算真实值快得多,所以节省了时间。
通过上面对局部预测分支界定算法的研究,作者对该算法做的改进为:在最小决策树中,最右一个节点可以直接变为叶子节点,所以可以直接计算这个叶子节点的评价值,这样在每一龙源期刊网 http://www.qikan.com.cn 次展开一个节点的时候就能节省一次可能的评价值运算;在局部预测分支界定算法中,一个节点的子节点是按照预测值进行排序的,在计算了子节点的真实评价后,将子节点按照真实评价值重新排序。
改进之后的算法与改进之前相比的优点为:每展开一个节点,改进后的算法比改进前少了一次评价值的运算。因此节省的次数就是最小决策树的中间节点的个数;在展开一个节点时,改进前是按照预测值对子节点进行排序的,一般来说和真实排序不一致。改进后在计算子节点的真实评价值后,按真实值进行排序,并依次放入最小决策树。这样可以减少评价次数和搜索时间。
改进前后的算法的实现步骤不变,不同的是递归函数ExpandNode(X)的实现,具体实现步骤如下:
(1) 如果是终止节点,转到第(5)步。否则,如果J(X)≥bound,继续执行下面的步骤,如果J(X)
(2) 令n=Num_features(X),在X中依次去掉一个特征,产生子节点,共有n 个,记为X1,X2,…,Xn;
(3) 根据预测公式Jρ(X-{fi})=J(X)-γ•Afi预测这n 个子节点的评价函数值J(X),i=1,2,…,n。将这n个评价值按升序排列:
(4) 令;取上式中的前p 个节点,作为搜索树中X的后继节点。将最右节点直接变成终止节点Xi,然后计算其评价值J(Xi),如果J(Xi)≥bound,令bound=J(Xi),X*=X。计算其余p-1个子节点的真实评价值-1,p-2,…,1),并根据式(1)和式(2)更新特征对评价值的贡献Axi以及Sxi,然后将他们按照升序排序为:-。对于这p-1个节点中的每个节点-l,p-2,…,1),令=p-i+1。依次执行-1,p-执行完p-1个节点的后续展开后,转到(6);
(5) 如果X优于当前最优节点(即J(X)>bound,则令bound=J(X),X*=X; (6) 结束。 4 实验结果及结论 在本实验中,所用的特征集是从某型低分辨雷达获取的实验数据,共提取了27个特征,组成特征集。这里对改进前后消耗的时间(这里消耗的时间是在Core(TM)2,CPU主频1.86 GHz,内存2 GB的电脑上的运行时间)做比较。具体实验情况如下:对1架、2架和4架目