特征及特征选择

1、特征(Feature)是什么?

        特征是数据集中的一个可量化的属性或变量,用于描述数据点的特性。

        特征可以是连续的数值,如身高、体重等,也可以是离散的类别,如性别、种族等。

        常见的特征有边缘、角、区域等。

特征分类:

        相关特征:对于学习任务(例如分类问题)有帮助,可以提升学习算法的效果;

        无关特征:对于我们的算法没有任何帮助,不会给算法的效果带来任何提升;

        冗余特征:不会对我们的算法带来新的信息,或者这种特征信息可由其他的特征推断出。

2、降维技术主要分为两类:特征选择和特征提取。

降维的原因:

        (1)数据的多重共线性导致解的空间不稳定, 维度灾难,模型复杂,导致模型的泛化能力弱

        (2)高维空间样本具有稀疏性,导致模型比较难找到数据特征

        (3)过多的变量会妨碍模型查找规律;

        (4)有时特征矩阵过大, 导致计算量比较大训练时间长的问题。

降维的优势:

        (1)减少特征属性的个数,剔除不相关或冗余特征,减少特征个数,提高模型精确度,减少运行时间。

        (2)确保特征属性之间是相互独立

3、特征选择根据特征的相关性冗余度从N个特征中选择其中M(M<=N)个子特征,并且在M个子特征中,准则函数可以达到最优解。是从原始特征数据集中选择出子集,是一种包含的关系,没有更改原始的特征空间。为了从大规模的特征空间中提取与所需任务相关特征

        (1)特征选择的目的:①减少特征数量、降维;②降低学习任务的难度;③提升模型的效率使模型泛华能力更强;④减少过拟合增强对特征和特征值之间的理解。

        (2)获取尽可能小的特征子集,不显著降低分类精度、不影响分类分布以及特征子集应具有稳定、适应性强等特点。

        (3)特征子集的产生过程其实是一个搜索寻优的过程,可以分为5个阶段:搜索方向、搜索策略、评价准则、停止条件和验证结果。其中过程从决定搜索起点和方向开始,然后根据不同的搜索策略进行子集搜索。特征子集产生后用评价准则计算特征的重要性,然后进行选择,满足停止准则条件后停止特征选择过程;最后再用错误估计或者一些验证方法来评价特征子集用于分类是否有效。

        (4)搜索策略①完全搜索:根据评价函数做完全搜索,主要有两种:穷举搜索和非穷举搜索;②启发式搜索:根据一些启发式规则在每次迭代时,决定剩下的特征是应该被选择还是被拒绝。这种方法很简单并且速度很快; ③随机搜索: 每次迭代时会设置一些参数(例如最大迭代次数),参数的选择会影响特征选择的效果。

        (5)停止条件用来决定迭代过程什么时候停止,生成过程和评价函数可能会对于怎么选择停止条件产生影响。停止条件有以下四种选择:①达到预定义的最大迭代次数;认同达到预定义的最大特征数;③增加(删除)任何特征不会产生更好的特征子集;④根据评价函数,产生最优特征子集;        

        (6)评价函数主要用来评价选出的特征子集的好坏,一个特征子集是最优的往往指相对于特定的评价函数来说的。评价函数主要用来度量一个特征(或者特征子集)可以区分不同类别的能力。

具体的特征选择方法主要有三类:过滤法(filter)、包裹法(wrapper)、嵌入法(embedding)

4、过滤法(filter):对每一维特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该特征的重要性,然后依据权重排序。先进行特征选择,然后去训练学习器,所以特征选择的过程与学习器无关。相当于先对特征进行过滤操作,然后用特征子集来训练分类器。适用于在需要遍历特征或升维的算法之前,对特征进行过滤。为了在维持算法表现的前提下,帮助算法降低计算成本。

        (1)方差过滤(Variance Threshold)是通过特征本身方差来筛选特征的类。比如一个特征本身的方差很小,就表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值都相同,那这个特征对于样本区分没有什么作用。方差过滤并不是适用于所有的算法,因为过滤之后模型可能变好也可能变性能下降。就需要针对数据集去进行尝试,也就是调参,选出最优的参数,画学习曲线就可以找到比较好的参数点。但是现实中一般不会花费太多时间在方差过滤的调参上,而是使用阈值为 0 或者阈值很小的方差进行过滤,消除一些明显用不到的特征然后选取其他的特征选择方法继续削减特征数量。

        (2)相关性过滤:一般情况下特征如果和标签的相关性比较大的话,这样的特征能够为我们提供大量的信息。如果特征与标签无关,只会白白浪费我们的算力,还可能给模型带来噪声。有三种常用的方法来评判特征和标签之间的相关性:卡方、F检验和互信息。

        ①卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤。卡方检验类feature_selection.chi2计算每个非负特征和标签之间的卡方统计量,并依照卡方统计量由高到低为特征排名。再结合feature_selection.SelectKBest这个可以输入”评分标准“来选出前K个分数最高的特征的类,我们可以借此除去最可能独立于标签,与我们分类目的无关的特征。

        ②F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法。它即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类。其中F检验分类用于标签是离散型变量的数据,而F检验回归用于标签是连续型变量的数据。

        ③互信息法是用来捕捉每个特征与标签之间的任意关系(包括线性非线性关系)的过滤方法。和F检验相似,它既可以做回归也可以做分类,并且包含两个类feature_selection.mutual_info_classif(互信息分类)和feature_selection.mutual_info_regression(互信息回归)。这两个类的用法和参数都和F检验一模一样,不过互信息法比F检验更加强大,F检验只能够找出线性关系,而互信息法可以找出任意关系。

5、包裹法(wrapper)将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题,这里有很多的优化算法可以解决,尤其是一些启发式的优化算法,如GA,PSO,DE,ABC等。

        特点:①借助学习算法,通过选择出特征评价分类的准确性,来评判特征选择的好坏;②位计算的复杂度高;③一般看成选择最优的特征组合,借助一些常用的优化算法可以解决。

        Wrapper评价特征选择方法需要预先设定分类器学习模型,然后根据后续分类器的准确率对特征子集进行评价.这类方法与所使用的分类器的关系很大,它将子集的选择视为一个搜索寻优问题,不同的分类器会生成不同的子集组合,用分类器评选验证集中的子集,并进行排序组合的比较。

        Wrapper评价特征选择方法最后得到的特征子集的规模比 Filter特征选择结果小,而且准确率高,但它会枚举出所有可能的特征组合,而且每种组合都会被用于训练模型及测试集的验证,因此它的计算速度慢,特别是在数据维度很大时会显著地增加计算的时间,而且泛化能力弱,不适合大数据集。

6、嵌入法(embedding)在模型既定的情况下学习出对提高模型准确性最好的属性。即在确定模型的过程中,挑选出那些对模型的训练有重要意义的属性。嵌入法是一种算法自己决定使用哪些特征的方法,即特征选择和算法训练同时进行。嵌入法的结果会更加精确到模型的效用本身,对于提高模型效力有更好的效果。并且,由于考虑特征对模型的贡献,因此无关的特征(需要相关性过滤的特征)和无区分度的特征(需要方差过滤的特征)都会因为缺乏对模型的贡献而被删除掉,可谓是过滤法的进化版。

        针对不同的算法,模型的权值系数也会不同,所以不同模型的嵌入法使用起来也是不一样的。此外,由于嵌入法选取特征时是根据算法来决定的,也就是说特征选择的过程伴随着算法的训练过程,那么整个过程非常耗时耗力,这也是嵌入法的一个缺陷。

        代表方法:正则化 (L1 norm,L2 norm,L2-P norm),Ridge Regression(岭回归)线性回归,岭回归就是在基本线性回归的过程中加入了正则项。

7、神经网络的特征重要性主要以下几种方法。

        ①基于SHAP的方法,但该方法复杂度非常高,不推荐。SHAP(SHapley Additive exPlanations)一种来自于博弈论的方法,适合黑箱和非黑箱模型计算特征重要性。对于一些非线性的模型来说,特征与特征之间往往会相互作用,所以评价单个特征的重要性时需要要结合其他特征进行判断。

        比如ABCD四个特征,计算A特征的特征重要性时,它会计算AB、AC、AD、ABC、ABD和ABCD等特征组合的预测值(未在特征组合里的特征会被填充均值或进行其他操作);然后再计算不包含A特征的不同组合预测值,即会计算B、C、D、BC、BD和BCD等组合的预测值;最后整合多个边际效应来确定A特征的重要性。但SHAP有个缺点,其计算复杂度极高,其计算复杂度是关于特征数量的指数阶复杂度,即使简化版本的SHAP也有极高的计算复杂度。

        ②基于permutation的方法,该方法相对简单,且效果还不错。(Permutation Feature Importance, PFI)计算特征重要性较为简单,即打乱某一特征后,观察指标的变化情况,指标变化得越大表示该特征越重要。

        ③Boruta算法是一种基于随机森林的特征选择方法,用于在数据集中识别和选择重要的特征。核心思路就是将特征矩阵进行shuffle,接着将shuffle后的特征(shadow features)与原特征(real features)拼接构成新的特征矩阵,然后判断打乱后特征重要性和原特征重要性的差距,如果这个差距越大表示该特征越重要。

        优点是它不受数据类型(数值或类别)的限制,可以处理高维数据,并且不需要假设数据分布。它特别适用于那些难以通过传统统计方法确定特征重要性的情况。

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

90后嫩男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值