常见特征选择算法20160711

合集下载

计算机视觉技术中的特征选择方法

计算机视觉技术中的特征选择方法

计算机视觉技术中的特征选择方法计算机视觉技术是研究如何使计算机理解图像和视频的一门学科。

在计算机视觉任务中,特征选择是一个关键的步骤,它能够从原始数据中选择最相关、最具有区分性的特征,从而提高计算机视觉算法的性能和效果。

在本文中,我将介绍几种常见的特征选择方法,探讨它们的原理和适用场景。

一、过滤式特征选择方法过滤式特征选择方法是在特征选择和分类器训练之间进行两个独立的步骤。

该方法通过计算每个特征与目标变量之间的相关性或信息增益等指标来评估特征的重要性,并根据这些指标对特征进行排序和选择。

常见的过滤式特征选择方法有皮尔逊相关系数、信息增益和卡方检验等。

皮尔逊相关系数是通过计算两个变量之间的线性相关性来衡量特征与目标变量之间的关联程度。

该方法计算特征和目标变量之间的协方差,然后通过除以两个变量的标准差的乘积来得到皮尔逊相关系数。

皮尔逊相关系数的取值范围在-1到1之间,其中1表示完全正相关,-1表示完全负相关,0表示没有线性相关关系。

信息增益是从信息论的角度来评估特征与目标变量之间的相关性。

这种方法通过计算特征的熵和给定目标变量的条件熵之间的差异来度量特征的重要性。

信息增益越大,说明特征与目标变量之间的关联度越高。

卡方检验是一种非参数的统计方法,用于确定两个分类变量之间是否存在关联性。

在特征选择中,利用卡方检验可以评估特征和目标变量之间的独立性。

卡方检验的原理是比较实际观测值和期望观测值之间的差异,然后计算卡方统计量,根据卡方统计量的值来判断特征的重要性。

过滤式特征选择方法的优点是计算简单、效率高,可以在特征选择和分类器训练之间独立地进行。

然而,它们忽视了特征之间的相互依赖关系,可能会选择不相关的特征或遗漏关键特征。

二、包裹式特征选择方法包裹式特征选择方法是在特征选择和分类器训练之间进行一个整体的优化过程。

该方法将特征选择看作是一个子集搜索问题,通过评估不同特征子集的性能来选择最佳的特征。

常见的包裹式特征选择方法有递归特征消除、遗传算法和模拟退火算法等。

特征选择的常用方法

特征选择的常用方法

特征选择的常用方法特征选择是机器学习和数据挖掘领域中的一个重要步骤,其目的是从各种特征中选择出对目标变量有最大预测能力的特征子集。

特征选择的主要作用是降低维度、减少计算复杂度、提高模型的解释性和泛化能力。

本文将介绍一些常用的特征选择方法。

一、过滤式方法过滤式方法是特征选择中最简单和最常用的方法之一。

它独立于任何具体的学习算法,通过计算各个特征与目标变量之间的关联度来选择特征。

常用的过滤式方法包括皮尔逊相关系数、互信息和卡方检验等。

1. 皮尔逊相关系数皮尔逊相关系数是衡量两个变量之间线性相关程度的统计量,取值范围为[-1,1]。

当相关系数接近于1时,表示两个变量呈正相关;当相关系数接近于-1时,表示两个变量呈负相关;当相关系数接近于0时,表示两个变量之间没有线性相关关系。

在特征选择中,可以计算每个特征与目标变量之间的相关系数,选取相关系数较大的特征作为最终的特征子集。

2. 互信息互信息是衡量两个随机变量之间信息传递量的统计量,可以用来度量特征与目标变量之间的相关性。

互信息的取值范围为[0,+∞],互信息越大表示两个变量之间的相关性越强。

在特征选择中,可以计算每个特征与目标变量之间的互信息,选取互信息较大的特征作为最终的特征子集。

3. 卡方检验卡方检验是一种统计方法,可以用来检验两个变量之间是否存在显著的关联性。

在特征选择中,可以将特征和目标变量之间的关系建模成一个列联表,然后计算卡方值。

卡方值越大表示特征和目标变量之间的关联性越强,选取卡方值较大的特征作为最终的特征子集。

二、包裹式方法包裹式方法是一种更加复杂和计算量较大的特征选择方法,它直接使用具体的学习算法来评估特征的贡献。

包裹式方法通过搜索特征子集的所有可能组合,并使用具体的学习算法对每个特征子集进行评估和比较。

常用的包裹式方法包括递归特征消除、遗传算法和模拟退火算法等。

1. 递归特征消除递归特征消除是一种基于模型的特征选择方法。

它通过反复训练模型,并在每次训练后消除对模型贡献较小的特征,直到达到指定的特征数目。

特征选择:方差选择法、卡方检验、互信息法、递归特征消除、L1范数、树模型

特征选择:方差选择法、卡方检验、互信息法、递归特征消除、L1范数、树模型

特征选择:⽅差选择法、卡⽅检验、互信息法、递归特征消除、L1范数、树模型转载:特征选择主要从两个⽅⾯⼊⼿:特征是否发散:特征发散说明特征的⽅差⼤,能够根据取值的差异化度量⽬标信息.特征与⽬标相关性:优先选取与⽬标⾼度相关性的.对于特征选择,有时候我们需要考虑分类变量和连续变量的不同.1.过滤法:按照发散性或者相关性对各个特征进⾏评分,设定阈值或者待选择阈值的个数选择特征⽅差选择法:建议作为数值特征的筛选⽅法计算各个特征的⽅差,然后根据阈值,选择⽅差⼤于阈值的特征from sklearn.feature_selection import VarianceThresholdfrom sklearn.datasets import load_irisimport pandas as pdX,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))#建议作为数值特征的筛选⽅法,对于分类特征可以考虑每个类别的占⽐问题ts = 0.5vt = VarianceThreshold(threshold=ts)vt.fit(X_df)#查看各个特征的⽅差dict_variance = {}for i,j in zip(X_df.columns.values,vt.variances_):dict_variance[i] = j#获取保留了的特征的特征名ls = list()for i,j in dict_variance.items():if j >= ts:ls.append(i)X_new = pd.DataFrame(vt.fit_transform(X_df),columns=ls)卡⽅检验:建议作为分类问题的分类变量的筛选⽅法经典的卡⽅检验是检验定性⾃变量对定性因变量的相关性。

假设⾃变量有N种取值,因变量有M种取值,考虑⾃变量等于i且因变量等于j的样本频数的观察值与期望的差距,构建统计量:from sklearn.feature_selection import VarianceThreshold,SelectKBest,chi2from sklearn.datasets import load_irisimport pandas as pdX,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))(chi2,pval) = chi2(X_df,y)dict_feature = {}for i,j in zip(X_df.columns.values,chi2):dict_feature[i]=j#对字典按照values排序ls = sorted(dict_feature.items(),key=lambda item:item[1],reverse=True)#特征选取数量k =2ls_new_feature=[]for i in range(k):ls_new_feature.append(ls[i][0])X_new = X_df[ls_new_feature]互信息法:建议作为分类问题的分类变量的筛选⽅法经典的互信息也是评价定性⾃变量对定性因变量的相关性的,为了处理定量数据,最⼤信息系数法被提出,互信息计算公式如下:from sklearn.feature_selection import VarianceThreshold,SelectKBest,chi2from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.feature_selection import mutual_info_classif#⽤于度量特征和离散⽬标的互信息X,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))feature_cat = ["A","D"]discrete_features = []feature = X_df.columns.values.tolist()for k in feature_cat:if k in feature:discrete_features.append(feature.index(k))mu = mutual_info_classif(X_df,y,discrete_features=discrete_features,n_neighbors=3, copy=True, random_state=None)dict_feature = {}for i,j in zip(X_df.columns.values,mu):dict_feature[i]=j#对字典按照values排序ls = sorted(dict_feature.items(),key=lambda item:item[1],reverse=True)#特征选取数量k =2ls_new_feature=[]for i in range(k):ls_new_feature.append(ls[i][0])X_new = X_df[ls_new_feature]from sklearn.feature_selection import VarianceThreshold,SelectKBest,chi2from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.feature_selection import mutual_info_classif,mutual_info_regression#⽤于度量特征和连续⽬标的互信息X,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))feature_cat = ["A","D"]discrete_features = []feature = X_df.columns.values.tolist()for k in feature_cat:if k in feature:discrete_features.append(feature.index(k))mu = mutual_info_regression(X_df,y,discrete_features=discrete_features,n_neighbors=3, copy=True, random_state=None)dict_feature = {}for i,j in zip(X_df.columns.values,mu):dict_feature[i]=j#对字典按照values排序ls = sorted(dict_feature.items(),key=lambda item:item[1],reverse=True)#特征选取数量k =2ls_new_feature=[]for i in range(k):ls_new_feature.append(ls[i][0])X_new = X_df[ls_new_feature]2.包装法递归特征消除法:⽤⼀个基模型来进⾏多轮训练,每轮训练后,消除若⼲权值系数的特征,再基于新的特征集进⾏下⼀轮训练from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.feature_selection import RFE,RFECVfrom sklearn.ensemble import RandomForestClassifierX,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))refCV = RFECV(estimator=RandomForestClassifier(),step=0.5,cv =5,scoring=None,n_jobs=-1)refCV.fit(X_df,y)#保留特征的数量refCV.n_features_#保留特征的False、True标记refCV.support_feature_new = X_df.columns.values[refCV.support_]#交叉验证分数refCV.grid_scores_3.嵌⼊的⽅法基于L1范数:使⽤带惩罚项的基模型,除了筛选出特征外,同时也进⾏了降维from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.feature_selection import SelectFromModelfrom sklearn.linear_model import LogisticRegressionX,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))sf = SelectFromModel(estimator=LogisticRegression(penalty="l1", C=0.1),threshold=None,prefit=False,norm_order=1)sf.fit(X_df,y)X_new = X_df[X_df.columns.values[sf.get_support()]]基于树模型的特征选择法:树模型中GBDT也可⽤来作为基模型进⾏特征选择,使⽤feature_selection库的SelectFromModel类结合GBDT模型from sklearn.datasets import load_irisimport pandas as pdfrom sklearn.feature_selection import SelectFromModelfrom sklearn.ensemble import GradientBoostingClassifierX,y = load_iris(return_X_y=True)X_df = pd.DataFrame(X,columns=list("ABCD"))sf = SelectFromModel(estimator=GradientBoostingClassifier(),threshold=None,prefit=False,norm_order=1)sf.fit(X_df,y)X_new = X_df[X_df.columns.values[sf.get_support()]]。

常见的特征选择或特征降维方法

常见的特征选择或特征降维方法

特征选择主要有两个功能:1.减少特征数量、降维,使模型泛化能力更强,减少过拟合2.增强对特征和特征值之间的理解1 去掉取值变化小的特征 Removing features with low variance这应该是最简单的特征选择方法了:假设某种特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。

如果100%都是1,那这个特征就没意义了。

当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用,而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。

可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的特征选择方法中选择合适的进行进一步的特征选择。

2 单变量特征选择 Univariate feature selection单变量特征选择能够对每一个特征进行测试,衡量该特征和响应变量之间的关系,根据得分扔掉不好的特征。

对于回归和分类问题可以采用卡方检验等方式对特征进行测试。

这种方法比较简单,易于运行,易于理解,通常对于理解数据有较好的效果(但对特征优化、提高泛化能力来说不一定有效);这种方法有许多改进的版本、变种。

2.1 Pearson相关系数 Pearson Correlation皮尔森相关系数是一种最简单的,能帮助理解特征和响应变量之间关系的方法,该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关(这个变量下降,那个就会上升),+1表示完全的正相关,0表示没有线性相关。

Pearson Correlation速度快、易于计算,经常在拿到数据(经过清洗和特征提取之后的)之后第一时间就执行。

Pearson相关系数的一个明显缺陷是,作为特征排序机制,他只对线性关系敏感。

如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。

特征选择常用算法综述

特征选择常用算法综述

特征选择常⽤算法综述特征选择的⼀般过程:1.⽣成⼦集:搜索特征⼦集,为评价函数提供特征⼦集2.评价函数:评价特征⼦集的好坏3.停⽌准则:与评价函数相关,⼀般是阈值,评价函数达到⼀定标准后就可停⽌搜索4.验证过程:在验证数据集上验证选出来的特征⼦集的有效性1.⽣成⼦集搜索算法有完全搜索、启发式搜索、随机搜索三⼤类。

(1)完全搜索<1>宽搜(Breadth First Search):时间复杂度⾼,不实⽤<2>分⽀界限搜索(Branch and Bound):其实就是宽搜加上深度的限制<3>定向搜索(Beam Search):其实算是启发式的⼀种,对宽搜加上每次展开结点数的限制以节省时间空间,对于展开那⼏个结点由启发式函数确定<4>最优优先算法(Best First Search):也是有启发式函数,对宽搜取最优结点进⾏展开(2)启发式搜索<1>序列前向选择(SFS , Sequential Forward Selection)特征⼦集X从空集开始,每次选择能使得评价函数J(X)最优的⼀个特征x加⼊,其实就是贪⼼算法,缺点是只加不减<2>序列后向选择(SBS , Sequential Backward Selection)和SFS相反,从特征全集开始,每次选择使评价函数J(X)最优的特征x剔除,也是贪⼼,缺点是只减不增<3>双向搜索(BDS , Bidirectional Search)SFS和SBS同时开始,当两者搜索到同⼀个特征⼦集时停⽌。

<4>增L去R选择算法(LRS , Plus-l Minus-R Selection)形式⼀:从空集开始,每次加L个特征,去除R个特征,使得J最优形式⼆:从全集开始,每次去除R个特征,加⼊L个特征,使J最优。

<5>序列浮动选择(Sequential Floating Selection)该算法由增L去R发展,不同之处在于L和R是会变化的,它结合了序列前后向选择、增L去R的特点并弥补了缺点。

特征选择的常用方法

特征选择的常用方法

特征选择的常用方法特征选择是机器学习和数据挖掘中的一个重要步骤,它的目的是从原始数据中选择出最具有代表性和相关性的特征,以提高模型的性能和效果。

特征选择方法有很多种,本文将介绍其中一些常用的方法。

一、过滤式方法过滤式方法是指在特征选择和模型训练之前就进行特征选择的方法。

它通过计算特征与目标变量之间的相关性或其他统计指标,来评估特征的重要性,并选择出相关性较高的特征。

常用的过滤式方法有相关系数法、卡方检验法、互信息法等。

1. 相关系数法相关系数法是通过计算特征与目标变量之间的相关系数来评估特征的重要性。

相关系数的取值范围在-1到1之间,绝对值越接近1表示相关性越强。

可以根据相关系数的大小来选择相关性较高的特征。

2. 卡方检验法卡方检验法是一种统计方法,用于检验两个变量之间的独立性。

在特征选择中,可以将特征与目标变量之间的独立性作为评估指标,计算卡方值来选择特征。

卡方值越大表示特征与目标变量之间的独立性越低,特征的重要性越高。

3. 互信息法互信息法是一种衡量两个随机变量之间的相关性的方法。

在特征选择中,可以将特征与目标变量之间的互信息作为评估指标,来选择特征。

互信息的取值范围在0到正无穷之间,取值越大表示特征与目标变量之间的相关性越高,特征的重要性越高。

二、包裹式方法包裹式方法是指将特征选择作为一个子问题嵌入到模型训练过程中的方法。

它通过构建不同的特征子集,并评估模型在不同特征子集上的性能,来选择出最佳的特征子集。

常用的包裹式方法有递归特征消除法、遗传算法等。

1. 递归特征消除法递归特征消除法是一种自底向上的特征选择方法。

它通过不断地构建模型并剔除权重较小的特征,来选择出最佳的特征子集。

递归特征消除法可以根据模型的性能评估来选择特征,如准确率、均方误差等。

2. 遗传算法遗传算法是一种模拟自然选择和遗传机制的优化算法。

在特征选择中,可以将特征子集看作个体,通过遗传算法的选择、交叉和变异等操作,来搜索最佳的特征子集。

机器学习技术使用中的特征选择方法

机器学习技术使用中的特征选择方法

机器学习技术使用中的特征选择方法机器学习技术是如何使用特征选择方法来提高模型性能的?在机器学习领域中,特征选择是一个非常重要的任务。

通过选择最相关和最具有代表性的特征,我们可以提高模型的准确性、降低计算成本,并且减少过拟合的发生。

本文将介绍机器学习中常用的特征选择方法,并说明它们的优势和适用场景。

特征选择是从已有的特征集合中选择出一个子集,这个子集包含了对任务和模型最有意义的特征。

特征选择的目标是去除冗余和无关紧要的特征,以保留那些最相关的特征,从而提高模型的性能和泛化能力。

一种常用的特征选择方法是过滤式方法,它通过评估特征与目标变量之间的相关性来选择特征。

常用的过滤式方法包括相关系数、卡方检验、信息增益和互信息等。

相关系数用于衡量两个变量之间的线性关系,而卡方检验则用于衡量分类变量之间的相关性。

信息增益和互信息则是衡量特征对于目标变量的不确定性的减少程度。

过滤式方法的优点是计算效率高,但它们只考虑了特征与目标变量之间的关系,无法捕捉特征之间的相互作用。

另一种常用的特征选择方法是包裹式方法,它通过训练一个模型来评估特征的重要性。

常用的包裹式方法包括递归特征消除(RFE)和基于遗传算法的特征选择。

递归特征消除是一种迭代算法,它从完整的特征集合开始,每次迭代都去除最不重要的特征,直到达到指定的特征数目。

基于遗传算法的特征选择则是使用遗传算法搜索最优的特征子集。

包裹式方法的优点是可以捕捉特征之间的相互作用,但它们的计算成本较高,因为需要训练多个模型。

还有一种常用的特征选择方法是嵌入式方法,它将特征选择集成进模型训练的过程中。

嵌入式方法通过在损失函数中加入正则化项,来约束特征的权重。

常见的嵌入式方法包括L1正则化和岭回归。

L1正则化可以使得模型的部分特征权重变为0,从而实现特征选择的目的。

岭回归则通过加入一个权重衰减项来限制特征的权重,进而减小过拟合的风险。

嵌入式方法的优点是可以同时进行特征选择和模型训练,但它们的计算成本相对较高。

特征选择方法

特征选择方法

特征选择方法特征选择方法搜索策略一:完全搜索1,BestFirst(最佳优先)最佳优先搜索时宽度优先搜索的扩展,基本思想是将节点表按据目标的距离进行排序,再以节点的估计距离为标准选择待扩展的节点。

算法步骤:1. 用N表示已经排序的初始结点表(从小到大)2. 如果N为空集,则退出并给出失败信号3. n取为N的首结点,并在N中删除结点n,放入已访问结点列表4. 如果n为目标结点,则退出并给出成功信号5. 否则,将n的后继结点加到N中,记为N,对N中的结点按距目标的估计距离排序,并返回2步在搜索的过程中一般会用到评估函数f(n),表示从初始节点S经过n到达目的节点t的最佳路径代价f__(n)的估计:从S到n的最佳代价g__(n)的估计g(n),g(n) g__(n),即局部最小全局最小从n到t 的最佳代价h__(n)的估计h(n),若对所有结点n,都有h(n)h__(n),则算法A一定能找到一条到达目标结点的最佳路径,此时算法A 称为算法A__。

f(n) = g(n) + h(n)作为f__(n) = g__(n) + h__(n)的估计,估计值越小的点希望越高,应该优先扩展。

2,ExhaustiveSearch(穷举搜索);枚举了所有的特征组合,属于穷举搜索,时间复杂度是O(2n),实用性不高。

二,随机搜索方法。

1,RandomSearch(随机搜索):算法描述:随机产生一个特征子集,然后在该子集上执行SFS与SBS算法。

算法评价:可作为SFS与SBS的补充,用于跳出局部最优值。

2,ScatterSearchV1(离散搜索):三:序列搜索方法a.单独最优组合:RankSearch(评估器计算属性判据值并排序),Ranker(属性判据值排序);b.向前搜索:LinearForwardSelection(线性向前搜索);算法描述:特征子集X从空集开始,每次选择一个特征x加入特征子集X,使得特征函数J( X)最优。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个阈值,当评价函数值达到这个阈值后就可停止搜索。 D. 子集验证:用来验证最终所选子集的有效性。
评价函数
• 评价函数通常用来评估某个特征或特征子集分类的能力。 • 最优特征子集产生和评价函数是相关的,不同评价函数
可能产生不同的最优特征子集。 • 将评价函数分为两类:filter和wrapper。 • 用符号J ( Y )来表示评价函数,其中Y是一个特征集,J( Y )
分支限界法(B&B)
Xl 表示特征数目为l 的特征集合。 Xs 表示舍弃s 个特征后余下的特征集合。
s 表示第s 级当前节点上用来作为下一级可舍
弃特征的特征集合。
rs 表示集合s中元素的数目。 qs 表示当前节点的子节点数。
分支限界法(B&B)
由于从根节点要经历n-d级才能到达叶节点,s级某 节点后继的每一个子节点分别舍弃s中互不相同的一 个特征,从而考虑在s+1级可以舍弃的特征方案数 (即子节点数)qs时,必须使这一级舍弃了特征后的 Xs+1还剩(n-d)-(s+1)个特征。除了从树的纵向上 每一级舍弃一个特征,实际上从树的横向上,一个分 支也轮换舍弃一个特征。因此后继子节点数
特征选择一般流程
A. 产生过程( Generation Procedure ):按一定的搜索策略产生候选特征
子集。
B. 评价函数( Evaluation Function ) :通过某个评价函数来评估特征子集
的优劣。 C. 停止准则( Stopping Criterion ):停止准则是与评价函数相关的,一般是
• 相关性度量:用来度量特征和类别之间的相关性。 --相关系数
• 信息论度量: --信息增益、最小描述长度、互信息
Filter-距离度量
• 距离度量,是基于这样的假设:好的特征子集应该使得 属于同一类的样本距离尽可能小,属于不同类的样本之 间的距离尽可能远。 常见的有欧氏距离、马氏距离、巴 氏距离等等。
• 序列算法:这类算法实际上是一种贪心算法,算法时间 复杂度较低,但是可能会陷入局部最优值,不一定能找 到全局最优解。
• 随机算法:随机算法属于一种近似算法,能找出问题的 近似最优解。每个随机算法都需要设置一定的参数,这 些参数的选择很重要。
搜索策略
• 穷举算法:穷举搜索 Exhaustive Search (ES) 分支限界法 Branch and Bound (B&B) 集束搜索 Beam Search (BS)
• 通过计算特征的信息增益来对特征进行评价。 • 信息熵:假设存在离散变量Y,Y中可能的取值包括{y1,
y2,....,ym} ,yi出现的概率为Pi。则Y的信息熵定义为:
• 条件信息熵:附加条件X=Xi后,Y的条件信息熵变为: • 信息增益:加入条件X前后的信息熵之差。
Filter-信息增益(2)
比如在识别苹果和橙子的系统中,我们可以抽取的特征很多 (体积、重量、颜色、高度、宽度、最宽处高度),在这些特 征中有用的是(颜色、高度、最宽处高度),其它特征对识别 意义不大,所以去掉。
为什么进行特征选择?
在机器学习的实际应用中,特征数量往往较多,其中可能 存在不相关的特征,特征之间也可能存在相互依赖,容易 导致如下的后果: • 特征个数越多,分析特征、训练模型所需的时间就越长。 • 特征个数越多,容易引起“维度灾难”,模型也会越复
• 序列算法:前向顺序选择 后向顺序选择 增L去R算法 双向搜索算法 序列浮动选择算法
• 随机算法:随机产生序列选择算法 模拟退火算法 遗传算法
穷举搜索(ES)
• 穷举所有满足条件的特征子集,从中选取最优。如果有N
个特征,不限定选取特征的个数,则有 2N 个候选特
征子集。 • 从D个特征中选择d个,可能组合q
1 {x2 , x3, x4 , x5, x6} 1 {x3, x4 , x5, x6} 1 {x4 , x5 , x6}
2 {x4 , x5, x6} 2 {x5, x6}
分支限界法(B&B)
0 {x1, x2 , x3, x4 , x5, x6} r0 6 q0 6 (4 0 1) 3
1 {x2 , x3, x4 , x5, x6}
2 {x3, x4 , x5 , x6} 2 {x4 , x5 , x6} 2 {x5, x6}
分支限界法(B&B)
目标:找出叶节点Lk,使
其对应的d个特征的判据J的
值最大,即:
Cnd
J
(
Lk
)
max[ j 1
J
(
L
j
)]
注意到每个节点(包括非叶 节点)都可以计算相应的J 值。由于判据J值具有单调 性,即:
Filter和Wrapper优缺点
评价准则
优点
filter
快速执行; 易于推广;
wrapper 准确率高;
缺点
准确率方面通常低于 Wrapper方法;
计算代价大; 不易于推广;
搜索策略
• 穷举算法:对特征空间进行穷举搜索(当然也会采用剪 枝等优化),搜索出来的特征集对于样本集是最优的。 这类算法的时间复杂度是指数级的。
• 算法流程:
• 算法评价: 一旦某特征被选入,就不能删除,即使由于后面加入的 特征使它变得多余。
序列前向选择SFS(2)
顺序后向选择SBS
• 和前向算法类似。但初始特征集合是所有特征,每次从 中剔除一个,使保留的特征组的J值最大。
• 算法流程:
• 和顺序前向算法相比,SBS计算是在高维空间进行,所以 计算量比前向大。
增L去R算法
• 增L去R选择算法 ( LRS , Plus-L Minus-RSelection ) • 算法描述:该算法有两种形式。
• 当L>R ,算法从空集开始,每轮先加入L个特征,然 后从中去除R个特征,使得J(Y)最大。
• 当L<R ,算法从全集开始,每轮先去除R个特征,然 后加入L个特征,使得J(Y)最大。
• 计算所有可能的特征组合的J,选择J最大的那组为最优组 合。这种方法计算量大,只适用于特征个数比较少的情况, 运算量随着特征维数的增加呈指数递增,实际应用中经常 碰到几百甚至成千上万个特征,因此穷举法虽然简单却难 以实际应用。
分支限界法(B&B)
• 分支限界法是一种自上而下的搜索算法,采用剪枝策略 优化搜索过程,得到全局最优解。
分支限界法(B&B)
树的每个节点表示一种特征组合, 树的每一级各节点表示从其父节点的特征组合中 去掉一个特征后的特征组合,其标号k表示去掉的 特征是xk 。
由于每一级只舍弃一个特征,因此整个搜索树除 根节点0级外,还需要n-d级,即全树有n-d级。 例如,6个特征中选2个,整个搜索树有4级。 第n-d级是叶节点,共有Cnd个叶节点。
分支限界法(B&B)
如果搜索到叶节点,且 该叶节点代表的特征的 可分性判据J>B,则更 新界值,即B=J;否则 不更新界值。
到达叶节点后,要向上回溯。重复上述过程,直到 JB为止。而对应当前(最大)界值B的叶节点对 应的d个特征组合就是所求的最优的选择。
序列前向选择SFS(1)
• 从空集合开始搜索,不断选择新特征加入已有特征集合 Yk,使得加入新特征x’之后的目标函数 J(Yk x') 最大。
特征提取 ( Feature extraction ) 是指利用已有的特征计算出一个抽 象程度更高的特征集。对已有特征 集合进行映射变换得到。 PCA、LDA
特征选择也叫特征子集选择 ( FSS , Feature Subset Selection ) 或属 性选择( Attribute Selection )。 特征选择实质是从原始数据集中选 取最优子集的过程。
越大表示特征集Y越好
评价准则
Filter : 通 过 分 析 特 征子集内部的信息来 衡量特征子集的好坏。
Wrapper:评价函数是一个分 类器,采用特定特征子集对样 本集进行分类,根据分类的结 果来衡量该特征子集的好坏
评价函数-Filter
• 距离或可分性度量:距离度量有时候也称作类别可分离 判据、离散度准则,在统计模式识别中对类别的可分离性 研究的比较深入。 --欧几里得距离、马氏距离、巴氏距离等
杂,其推广能力会下降。 特征选择能剔除不相关(irrelevant)或亢余(redundant )的特 征,从而达到减少特征个数,提高模型精确度,减少运行 时间的目的。另一方面,选取出真正相关的特征简化了模 型,使研究人员易于理解数据产生的过程。
特征选择和特征抽取区别?
模式识别中特征降维方法有两种:特征抽取和特征选择
分支限界法(B&B)
s=i 00 s=i 11
si=22
X0 0 X n
1
23
2
3 4 A3 4 4
s=3 i 3 3 4 5 4 5 5 4 5 5 5
s=4 i 4 4 5 6 5 6 6 5 6 6 6 5 6 6 6 6
(a)
X0 (b)
6选2的特征选择问题 (a)搜索树 (b)搜索回溯示意图
qs=rs-(n-d-s-1)
分支限界法(B&B)
s
rs
qs
s+1
(n-d)-(s+1) n-d
rs qs (n d ) (s 1) qs rs (n d s 1)r0 n q0 d 1
分支限界法(B&B)
0 {x1, x2 , x3, x4 , x5, x6} r0 6 q0 6 (4 0 1) 3
• 使用分支限界进行特征选择需要先引入一个单调性假设 (monotonicity assumption):J(Y) < J(Y+x),即任何 特征集的都优于其任何的子集。
相关文档
最新文档