欢迎来到天天文库
浏览记录
ID:20900010
大小:68.62 KB
页数:5页
时间:2018-10-17
《特征选择综述》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、特征选择常用算法综述一.什么是特征选择(Featureselection) 特征选择也叫特征子集选择(FSS,FeatureSubsetSelection)。是指从已有的M个特征(Feature)中选择N个特征使得系统的特定指标最优化。 需要区分特征选择与特征提取。特征提取(Featureextraction)是指利用已有的特征计算出一个抽象程度更高的特征集,也指计算得到某个特征的算法。 特征提取与特征选择都能降低特征集的维度。 评价函数(ObjectiveFunction),用于评价一个特征子集的好坏的指标。这里
2、用符号J(Y)来表示评价函数,其中Y是一个特征集,J(Y)越大表示特征集Y越好。 评价函数根据其实现原理又分为2类,所谓的Filter和Wrapper。 Filter(筛选器):通过分析特征子集内部的信息来衡量特征子集的好坏,比如特征间相互依赖的程度等。Filter实质上属于一种无导师学习算法。 Wrapper(封装器):这类评价函数是一个分类器,采用特定特征子集对样本集进行分类,根据分类的结果来衡量该特征子集的好坏。Wrapper实质上是一种有导师学习算法。二.为什么要进行特征选择? 获取某些特征所需的计算量可能很大,
3、因此倾向于选择较小的特征集特征间的相关性,比如特征A完全依赖于特征B,如果我们已经将特征B选入特征集,那么特征A是否还有必要选入特征集?我认为是不必的。特征集越大,分类器就越复杂,其后果就是推广能力(generalizationcapability)下降。选择较小的特征集会降低复杂度,可能会提高系统的推广能力。LessisMore!三.特征选择算法分类 精确的解决特征子集选择问题是一个指数级的问题。常见特征选择算法可以归为下面3类:第一类:指数算法(Exponentialalgorithms) 这类算法对特征空间进行穷举
4、搜索(当然也会采用剪枝等优化),搜索出来的特征集对于样本集是最优的。这类算法的时间复杂度是指数级的。第二类:序列算法(Sequentialalgorithms) 这类算法实际上是一种贪心算法,算法时间复杂度较低,但是可能会陷入局部最优值,不一定能找到全局最优解。第三类:随机算法(Randomizedalgorithms) 随机算法属于一种近似算法,能找出问题的近似最优结。随机算法在近似求解NP完全问题上显示出突出的优势,可尝试用在特征选择上。四.指数算法 1.穷举搜索(ExhaustiveSearch) 算法描述:穷
5、举所有满足条件的特征子集,从中选择最优。若不限定选取特征的个数,则特征子集有2^M个。 算法评价:该算法理论上可以找出最优特征子集,但其复杂度是指数级的,而实际上使用的特征数一般比较多,因而通常是不可取的。 2.分支限界搜索(BranchandBound) 在穷举基础上加上了分支限界,例如可以剪掉不可能搜索出比当前已找到的最优解更优的解的分支。 使用分支限界进行特征选择需要先引入一个单调性假设(monotonicityassumption):J(Y)6、里读者们可能会嚷嚷了:如果这个假设成立,那直接选择全部特征就得了,还分支限界个屁啊。的确,这个假设本身就有问题,特征过多反而会因此所谓“维度灾难”(curseofdimensionality)。 3.定向搜索(BeamSearch) 算法描述:选择N个得分最高的特征作为特征子集,将其加入一个限制最大长度的优先队列,每次从队列中取出得分最高的子集,然后穷举向该子集加入1个特征后产生的所有特征集,将这些特征集加入队列。若不限制队列的长度,这个算法就变成了最佳优先搜索(best-firstsearch)。 五.序列算法 1.朴7、素序列特征选择(Naïvesequentialfeatureselection) 算法描述:将M个特征逐个送入评价函数,选择得分最高的N个特征组成特征子集。算法评价:简单,但没有考虑特征间的相关性,因此通常性能不好。例如,有{1,2,3,4,5}这五类样本,一共有A,B,C三个特征,现要从中选出2个特征来区分这5类。特征A能将其分为1,2,3,{4,5}这4类,特征B能将其分为1,{2,3},{4,5}这3类,特征C只能将其分为{1,2,3,4},{5}这2类。那么显然最优特征是A,然后是B,最后是C,朴素序列特征选择算法8、会选择特征A和B,但是特征A和B并不能区分4和5类。其实最优选择应该是A和C,只有特征A和C能将5类区分开来。 2.序列前向选择(SFS,SequentialForwardSelection) 算法描述:每次选择一个特征x加入特征子集Y,使得特征函数J(Y+x)最大。简单说就是,每次都选择一个使得特征
6、里读者们可能会嚷嚷了:如果这个假设成立,那直接选择全部特征就得了,还分支限界个屁啊。的确,这个假设本身就有问题,特征过多反而会因此所谓“维度灾难”(curseofdimensionality)。 3.定向搜索(BeamSearch) 算法描述:选择N个得分最高的特征作为特征子集,将其加入一个限制最大长度的优先队列,每次从队列中取出得分最高的子集,然后穷举向该子集加入1个特征后产生的所有特征集,将这些特征集加入队列。若不限制队列的长度,这个算法就变成了最佳优先搜索(best-firstsearch)。 五.序列算法 1.朴
7、素序列特征选择(Naïvesequentialfeatureselection) 算法描述:将M个特征逐个送入评价函数,选择得分最高的N个特征组成特征子集。算法评价:简单,但没有考虑特征间的相关性,因此通常性能不好。例如,有{1,2,3,4,5}这五类样本,一共有A,B,C三个特征,现要从中选出2个特征来区分这5类。特征A能将其分为1,2,3,{4,5}这4类,特征B能将其分为1,{2,3},{4,5}这3类,特征C只能将其分为{1,2,3,4},{5}这2类。那么显然最优特征是A,然后是B,最后是C,朴素序列特征选择算法
8、会选择特征A和B,但是特征A和B并不能区分4和5类。其实最优选择应该是A和C,只有特征A和C能将5类区分开来。 2.序列前向选择(SFS,SequentialForwardSelection) 算法描述:每次选择一个特征x加入特征子集Y,使得特征函数J(Y+x)最大。简单说就是,每次都选择一个使得特征
此文档下载收益归作者所有