Ⅰ 特征选择的Filter过滤法
1.1 当数据预处理完成之后,接下来就是特征工程部分,特征工程包括了特征的提取,特征创造,特征选择。
特征提取(feature extraction):从文字、图像、声音等其他非结构化数据只能怪提取新信息作为特征,比如说从淘宝的商品名称中提取产品类别,产品颜色,是否是网上产品等。
特征创造(feature creation):把现有的特征进行组合,或是相互计算得到新的特征。比如说我们有一列特征是速度,一列特征距离,通过两特征相除,创造新特征:通过距离所花的时间。
特征选择(feature selection):从所有的特征中选择出有意义的,对模型有帮助的特征,避免将所有特征都导入模型中去训练。
下面只讲特征选择,特征选择有四种方法:过滤法,嵌入法,包装法,和降维算法。
1.2 Filter过滤法
过滤法通常用作预处理的步骤,特征选择完全独立于任何的机器学习算法,它是根据各种统计检验中的分数以及相关性的各项指标来选择特征的。
1.3 VarianceThreshold
VarianceThreshold是通过特征本身的方差来筛选特征的类。比如一个特征本身的方差很小,就表示样本在这个特征上基本没有差异,可能特征中的大多数值都一样,甚至整个特征的取值都相同,那这个特征对于样本区分没有什么作用,所以 无论接下来的特征工程要做什么,都要优先消除方差为0的特征 。VarianceThreshold重要参数threshold,表示方差的阈值,表示舍弃所有方差小于threshold的特征,不填默认为0,即删除所有记录都相同的特征。
可以看见,已经删除了方差为0的特征,但是依然剩390多个特征,明显还需要进一步的特征选择,如果我们知道我们需要多少个特征,方差也可以帮助我们将特征选择一步到位。比如说,我们希望留下一半的特征,那可以设定一个让特征总数减半的方差阈值,只要找到特征方差的中位数,再将这个中位数作为参数threshold的值输入就好了
使用的方差阈值是特征方差的中位数,因此属于阈值比较大,过滤掉的特征比较多的情况。我们可以观察到,如果在过滤掉一半特征之后,模型的精确度上升了。这说明被我们过滤掉的特征在当前随机模式(random_state = 0)下大部分是噪音。那我们就可以保留这个去掉了一半特征的数据,来为之后的特征选择做准备。当然,如果过滤之后模型的效果反而变差了,我们就可以认为,被我们过滤掉的特征中有很多都有有效特征,那我们就放弃过滤,使用其他手段来进行特征选择。
1.4 方差过滤对模型的影响
最近邻算法KNN,单棵决策树,支持向量机SVM,神经网络,回归算法,都需要遍历特征或升维来进行运算,所以它们本身的运算量就很大,需要的时间就很长,因此方差过滤这样的特征选择对他们来说就尤为重要。但对于不需要遍历特征的算法,比如随机森林,它随机选取特征进行分枝,本身运算就非常快速,因此特征选择对它来说效果平平。这其实很容易理解,无论过滤法如何降低特征的数量,随机森林也只会选取固定数量的特征来建模;而最近邻算法就不同了,特征越少,距离计算的维度就越少,模型明显会随着特征的减少变得轻量。因此,过滤法的主要对象是:需要遍历特征或升维的算法,而过滤法的主要目的是:在维持算法表现的前提下,帮助算法降低计算成本。
1.5 过滤法对随机森林无效,却对树模型有效?
从算法原理上来说,传统决策树需要遍历所有特征,计算不纯度后进行分枝,而随机森林却是随机选择特征进行计算和分枝,因此随机森林的运算更快,过滤法对随机森林无用,对决策树却有用。在sklearn中,决策树和随机森林都是随机选择特征进行分枝,但决策树在建模过程中随机抽取的特征数目却远远超过随机森林当中每棵树随机抽取的特征数目(比如说对于这个400维的数据,随机森林每棵树只会抽取10~20个特征,而决策树可能会抽取100~200个特征),因此,过滤法对随机森林无用,却对决策树有用也因此,在sklearn中,随机森林中的每棵树都比单独的一棵决策树简单得多,高维数据下的随机森林的计算比决策树快很多。
Ⅱ 2019-03-07
特征选择的原因: 1)属性过多易造成维数灾难,仅选择重要特征构建模型则能减轻该问题;2)去除不相关特征能降低学习任务的难度。
冗余特征:所包含的信息能从其他特征中推演出来。eg已知立方体底面长和宽,则底面积是冗余特征,但作为学习任务“中间概念”时能加速运算,例如计算立方体体积,知道底面积能加速运算。
欲从初始特征集合中选取一个包含所有重要信息的特征子集,一般包含两个环节: 子集搜索 与 子集评价 。
1.子集搜索一般分为前向搜索、后向搜索和双向搜索 。
前向搜索 :给定特征集合 ,将每个特征看做一个候选子集,对这d个候选单特征子集进行评价,假定 最优,将 作为第一轮的选定集;然后,在上一轮的选定集中加入一个特征,构成包含两个特征的候选子集,假定在这d-1候选子集中 最优,且优于 ,将 做为本轮的选定集,假定在低k+1轮时,最优的候选(k+1)特征子集不如上一轮的选定集,停止。
后向搜索 :类似前向搜索,但从完整的特征集合开始,每次尝试去掉一个无关特征,逐渐减少特征的过程。
双向搜索 :将前向与后向搜索结合起来,每一轮逐渐增加选定相关特征(这些特征在后续轮中将确定不会被去除)、同时减少无关特征。
显然上述策略都是贪心的,因为仅考虑了使本轮选定集最优。
2.子集评价
特征子集A实际上确定了败旅中对数据集D的一个划分,这个划分与真实划分的差异越小,说明A越好。可通过信息熵判断这个差异。
给定数据集D,假定D中第i类样本所占的比例为 。对于属性子集A,假定根据其取值将D分成了V个子集 ,每个子集的样本在A上取值相同,于是我们可计算属性子集A的信息增益: 信息增益越大,则特征子集包含的有助于分类的信息越多。
过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择与训练学习器过程无关。
Relief是一种著名的过滤察山式特征选择方法,它设计了一个“相关统计量”来度量特征重要性。对每个示例 ,relief先在其同类样本中找最近邻 (猜中近邻),再从其异类样本中找最近邻 (猜错近邻),则相关统计量对应属性j的分量为:
最后对基于不同样本的估计结果进行平均,得到各属性的相关统计量分量,分量值越大,对应属性的分类能力越强。多分类Relief相较二分类有多个猜错近邻,计算公式为:
Relief只需在数据集的采样上而不必在整个数据集上估计相关统计量,是一种高效的过滤式特征选择方法。
包裹式选择的目的是为给定学习器选择最有利于其性能、“量身定做”的特征子集。代表算法LVW是在拉斯维加斯方法框架下使用随机策略进行子集搜索,并以最终分类器的误差为特征子集评价准则。
嵌入式特征选择是将特征选择过程与学习器训练过程融为一体,在学习器训练过程中自动进行特征选择。例如对线性回归模型的优化目标函数添加L1正则项:
LASSO:
L1正则化有助于防止过拟合,常见的L2正则化也可实现这一目的:
岭回归:
L1范数会趋向产生少量的特征(稀疏解),其求得的w会有更少的非零分量;L2会选择更多的特征,这些特征的权值都会接近于0。因此L1范数在特征选择上就十分有用,而L2范数则具备较强的控制过拟合能力。可以从下面两个方面来理解:
(1) 下降速度 :L1范数按照绝对值函数来下降,L2范数按照二次函数来下降。因此在0附近,L1范数的下降速度大于L2范数,故L1范数能很快地下降到0,而L2范数在0附近的下降速度非常慢,因此较大可能收敛在0的附近。
2) 空间限制 :L1范数与L2范数都试图在最小化损失函数的同时,让权值W也尽可能地小。假定x仅有两个属性,于是无论岭回归还是LASSO接触的w都只有两个分量,即w1,w2,我们将其作为两个镇如坐标轴,然后在图中绘制出两个式子的第一项的”等值线”。
将数据集D看成一个矩阵,每行对应于一个样本,每列对应一个特征,考虑特征具有稀疏性,则通过特征选择去除这些列,就得到了一个稀疏矩阵;数据的另一种稀疏性是指D中存在很多0元素,且并不是以整行整列的形式存在。
当样本具有这样的稀疏表达形式时,对学习任务有不少好处,例如使大多数问题线性可分,且不会造成存储上的巨大负担。
字典学习(稀疏编码) :为普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表达形式从而使学习任务得以简化,模型复杂度得以降低。
采用变量交替优化的策略求解上式:1)确定映射字典的词汇量 k,并初始化字典 B,d*k,其中 d 为样本属性数;2)固定住字典 B,求得样本集 X 通过字典映射后的稀疏表示 ;3)固定住 来更新字典 B;4)反复第2)、3)步,最终可得合适的字典 B 和样本 X 的稀疏表示 。
不同于特征选择和稀疏表示,压缩感知关注的是如何利用信号本身所具有的稀疏性,从部分观测样本中恢复原信号。能通过压缩感知技术恢复欠采样信号的前提之一是信号有稀疏表示。压缩感知一般分为“感知测量”和“重构恢复”两个阶段。 感知测量 关注如何对原始信号进行处理以获得稀疏样本表示,eg傅里叶变换、小波变换、字典学习、稀疏编码等; 重构恢复 关注如何基于稀疏性从少量观测中恢复原信号。
https://blog.csdn.net/u011826404/article/details/72860607
Ⅲ 特征选择与特征子集(一)
前言:本系列博客将介绍特征选择一系列相关的内容。
本节我们先简介特征工程中的三个组成部分。
特征工程一般由特征构建,特征提取,特征选择三个部分组成。
特征工程的思维导图如下:
来源
先约定一些符号:
设 是一个含有 个样本 个特征的数据集。
其中 为样本, 为样本 的标签。 是 个特征的集合。
表示第 个样本的第 个特征上的值。
表示集合含有元素的个数,当 为离散特征时, 的取值集合 为 , 为特征 含元素个数。
对于某一个特征 ,肢厅有 。
样本空间构成的矩阵如下:
特征构建是指从原始特征中推断或构建出新的特征。
在我们的原始样本空间中, 有 个特征,通过特征构建,从原始 个特征中推断或者构建出了 个新特征,新的样本空间特征集为 ,有了 个特征了。
我们先看一个简单的例子,就以学生成绩来看吧。
这是一个常见的学生成绩表,有着最基本的信息。但是我们知道,在实际老师发给我们的成绩表里面内,有着各种各样的数据,相信学生时代的大家应该深有体会。
就举些常见的“参数”吧,统计各分数段人数,学生总分排名,单科成绩排名,理综排名,每科进步幅度排名等等。这些参数或者说特征都是在原有表的基础上构建的,有的是一个特征演变来的,有的是由若干个特征构建的。
特征构建的常用方法有属性分割与属性组合。属性分割就是将一个属性分解或者切分,例如学生成绩表中统计各分数段人数。属性组合就是多个属性通过组合构建出新的属性,例如理综成绩排名。
从这里可以看出特征构建是一个升维的过程,即原始样本空间的维度增加了。
和特征构建不同的是,特征提取和特征选择都是数据降维。
数据降维主要考虑数据的相关度和数据的冗余度。
数据的相关度是指数据所包含的信息对判断样本所属类别的贡献度,而数据的冗余度指的是不同维数的数据携带的相似信息。具有高相关度的数据特征一定程度上是冗余的,会造成分类性能的恶化。我们的目标是得到一个具有最大相关性和最小冗余度的数据特征信息的样本。
数据降维都会使原有样本空间由 个特征变为 个特征。
特征提取将原始特征转换为新的具有明显物理意义或者统计意义或核的特征的过程,它把原始空间的样本通过线性或者非线性映射转化得到少量但具有更好表达能力的新特征,从而达到降维的目的。
还是以上面学生成绩为例,如果我们只想使用少量的指标就能知道学生成绩的所有信息,那么我们可以使用学生各科的成绩之和等少数几个指标来代表所有的学生成绩信息。
该过程可以视为特征提取。
特征提取的主要方法有
特征选择是在保持数据原样本的基础上进行约减,即降低特征维数。特征选择就是为了筛选出那些对于分类来说最相关的特征,并且去除那些对于分类冗余的和不相关的特征。其实质是寻求一个原始数据样本空间的最优字空间,其中包含最少的样本特征数目并且能够将原始的样本很好地表达出来,是一个降维的过程。
以西瓜数据集为例
在一系列特征中,我们需要找到那些影响西瓜好坏与否的主要特历悔隐征,而这只有特征选择才可以做到。这里面有很多的方法,之后会说到。
特征选择的流程如下:
1.子集生成:按照一定的搜索策略查找候选特征子集
2.子集评价:构建评价函数评估特征子集的优劣
3.停止准则:设定评估函数的阈值,决定特征选择算法什么时候停止
4.结果验证:在测试集上验证最终所选特征子集的有效性
根据于学习算法的关系,特征选择可划分为三类方式:过滤式(Filter)方式,封装式(Wrapper)方法和嵌入式(Embedded)方法。
本节我们简单介绍了特征工程中的前脊三个部分,特征构建,特征提取,特征选择,之后我们将重点介绍特征选择。
Ⅳ 包裹式特征选择会受冗余影响吗
在机器学习中,特征往往对模型整体表现的影响非常大。而现实问题中,特征数量往往会非常大,而处理庞大的特征往往比较困难,所以就有了各种的降维方法。
降维的方法主要分为特征抽取 (Feature Extraction) 和特征选择 (Feature Selection) 两种。
特征抽取是指在原来特征的基础上,形成新的特征。抽取后的新特征是原来特征的一个映射。经典的特征抽取方法有主成分分析和线性评判分析。但是特征抽取后的新特征的空间结构被改变,因此无法进行后续预测模型的建立。
特征选择是指直接删除不相关且冗余的特征,保留原始数据最有价值的信息,形成一 个最优的特征子集,特征本身并没有被改变。依据特征选择和学习器的不同结合方式,特征选择方法可以分为三类:过滤法,包装法和嵌入法。
这里我们将关注特征选择的方法, 据特征选择和学习器的不同结合方式,特征选择方法可以分为三类:过滤法,包装法,嵌入法。
(1)过滤式(filter)。过滤式特征选择方法可以分为两种:基于特征排序的过滤式特征选择和基于搜索策略的过滤式特征选择。基于特征排序的过滤式特征选择是指使用相关 性指标对各个特征进行评分,选择分数越大的特征越有价值。常用的过滤式特征选择方法 有方差选择法、卡方检验法、皮尔森相关系数法、互信息系数法。基于搜索策略的过滤式 特征选择与前者不同的是会使用启发式搜索策略来对特征子集进行评价,且拥有独特的评 价准则来衡量已选的特征子集。常用方法有基于姿册皮相关性的特征选择方法(CFS)。
如下图为基于特征排序的过滤式特征选择
如下图为基于搜索策略的过滤式特征选择
(2)包裹式(wrapper)。包裹式特征选择从初始特征集合中不断的选择特征子集,训练学习器,然后根据学习器的性能来对子集进行评价,直到选择出最佳的子集。常用的包裹式特征选择方法有递归特征消除。但是包裹式特征选择由于特征子集受特定的学习算法影响比较大,容易出现“过拟合”,并且使用不同的学习算法,得到的特征子集也不同, 所以获得的特征子集的稳定性和适应性较差。
(3)嵌入式(embedding)。在模型既定的情况下学习出对提高模型准确性最好的属
性。嵌入式迹差特征选择算法嵌入在学习算法当中,当算法训练过程结束就可以得到特征子集。 常用的嵌入式特征选择方法有岭回归。
二.基于相关性的特征选择方法CFS
1.CFS特征选择原则
本文在进行特征选择时,主要遵循如下 3 个原则:
(1)发散性。特征自身的取值要有变化。当一个特征的取值波动很小,说明该特征 的取值很稳定,可以近似理解成该特征的每个值都接近,这样的特征对模型是没有任何效果。
(2)相关性。特征与目标之间的相关性越大,特征越能体现、代表目标。
(3)独立性。特征与特征之间相互独立。
2.CFS特征选择原理
基于相关性的特征选择方法(CFS)是基于搜索姿盯策略的过滤式特征选择方法中最经典的方法。该方法的核心是基于相关性的评估函数来评估特征子集的价值。如果特征子集中各个特征和目标之间具有较强的关联性,并且特征彼此之间具有较弱的关联性,那么这 个特征子集在评估函数中的表现就更好,更容易被评估函数选中。
3.CFS特征选择步骤
(1)连续变量离散化
在该方法中,通常假定所有变量是离散变量,然而有时候处理的操作数据是连续变量, 因此我们需要把连续变量离散化。在这里我们采用等宽离散法。等宽法是最简单的无监督离散化方法,指将连续变量的取值空间等分为多个取值区间。即将连续变量的值域{ X m i n , X m a x X_{min},X_{max} Xmin,Xmax}划分为n个区间,使得每个区间的宽度都相等。
区间的宽度为:
d = X m a x − X m i n n d = \frac{X_{max}-X_{min}}{n} d=nXmax−Xmin
变量 x i x_i xi对应的区间为:
m = x i − X m i n d m = \frac{x_i-X_{min}}{d} m=dxi−Xmin
(2) 计算对称不确定性(Symmetric Uncertainty,SU)
S U = 2 ∗ H ( X ) + H ( Y ) − H ( X , Y ) H ( X ) + H ( Y ) SU = 2* \frac{H(X)+H(Y)- H(X,Y)}{H(X)+H(Y)} SU=2∗H(X)+H(Y)H(X)+H(Y)−H(X,Y)
其中, H ( X ) 为 X 的 熵 , H ( X , Y ) 为 X 和 Y 的 联 合 熵 H(X) 为X的熵,H(X,Y)为X和Y的联合熵 H(X)为X的熵,H(X,Y)为X和Y的联合熵。
具体熵和联合熵的含义可以参考https://blog.csdn.net/weixin_44467105/article/details/111059530
(3)计算特征评估指标Merits
通过引入特征估计指标 M e r i t s Merits Merits 来选择和目标相关性更强并且和其他特征相关性更弱的特征作为较好的特征:
M e r i t s = k ∗ r ˉ c f k + k ( k − 1 ) r ˉ f f Merits = \frac{k*\bar{r}_{cf}}{\sqrt{k+k(k-1)\bar{r}_{ff}}} Merits=k+k(k−1)rˉffk∗rˉcf
其中, r ˉ f f \bar{r}_{ff} rˉff是候选特征与其它特征之间的平均相关性(这里是指对称不确定性SU), r ˉ c f \bar{r}_{cf} rˉcf是候选特征与类之间的平均相关性。
CFS 首先从训练集中计算特征目标和特征-特征相关矩阵即SU,然后用最佳优先搜索(best first search)搜索特征子集空间。开始时没有特征选择,并产生了所有可能的单个特征;计算特征的评估值,并选择Merit 值最大的一个特征进入 M,然 后选择第二个拥有最大的Merit 值的特征进入 M,如果这两个特征的Merit 值小于原来的 Merit 值,则去除这个第二个最大的Merit 值的特征,然后在进行下一个,这样依次递进, 直到找出指定个使Merit 最大的特征组合。CFS采用的是一种贪心算法。
机器学习
算法
python
人工智能
数据挖掘
江铃全顺6座
精选推荐
广告
Ⅳ CFS的特征选择算法
基于关联规则的特征选择算法(correlation-based feature selection),是一种经典的过滤器模式的特征选择方法。源自论文“correlation-based feature selection for discrete and numeric class machine learning”,启发地对单一特征 对应于每个分类的作用进行评价,从而得到最终的特征子集。特别地,特征必须是离散的随机变量,如果是数值型变量,需要首先执行指导的离散化方法来进行离散化特征。
Ⅵ 特征工程到底是什么
在嵌入式特征选择中,特征选择算法本身作为组成部分嵌入到学习算法里。最典型的即决策树算法,如ID3、C4.5以及CART算法等,决策树算法在树增长过程的每个递归步都必须选择一个特征,将样本集划分成较小的子集,选择特征的依据通常是划分后子节点的纯度,划分后子节点越纯,则说明划分效果越好,可见决策树生成的过程也就是特征选择的过程。过滤式特征选择的评价标准从数据集本身的内在性质获得,与特定的学习算法无关,因此具有较好的通用性。通常选择和类别相关度大的特征或者特征子集。过滤式特征选择的研究者认为,相关度较大的特征或者特征子集会在分类器上可以获得较高的准确率。过滤式特征选择的评价标准分为四种,即距离度量、信息度量、关联度度量以及一致性度量。
Ⅶ 特征选择的相关性过滤
我们希望选出与标签有关且有意义的特征,因为这样的特征携带更多的信息,如果特征与标签无关,只会浪费计算内存,可能还会给模型带来噪声,在sklearn中有三种常用的方法来评判特征与标签之间的相关性:卡方,F检验,互信息
1.1卡方过滤
卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤,卡方检验类feature_selection.chi2计算每个非负特征与标签之间的卡方统计量,并依照卡方统计量由高到低为特征排名,再结合feature_selection.SelectKBest这个可以输入“评分标准”来选出前K个分数最高的特征的类,我们可以借此除去最可能独立于标签,与我们分类目的无关的特征。
另外,如果卡方检查中检测到某个特征中所有的值都相同,会提示我们先使用方差过滤。
1.2 K参数的选取
实际中的数据量会很大,模型很复杂的时候也许不允许我们先跑一遍模型看看效果,而是希望最开始就能选择一个最优的超参数K,可以使用学习曲线。
通过这条曲线,我们可以观察到,随着K值的不断增加,模型的表现不断上升,这说明,K越大越好,数据中所有的特征都是与标签相关的。但是运行这条曲线的时间同样也是非常地长,接下来说一种更好的选择k的方法:看p值选择k
卡方检验的本质是推测两组数据之间的差异,其检验的原假设是“两组数据是相互独立的”。卡方检验返回卡方值和P值两个统计量,其中卡方值很难界定有效的范围,而p值,我们一般使用0.01或0.05作为显著性水平,即p值判断边界,具体如表格所示
从特征工程的角度,我们希望获取卡方值很大,p值小于0.05的特征,即和标签是相关联的特征,而调用SelectKBest之前,我们可以直接从chi2实例化后的模型中获得各个特征所对应的卡方值和p值。
1.3 F检验
F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法,它即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类,其中F检验分类用于标签是离散型变量的数据,而F检验回归则用于标签是连续性变量的数据。
和卡方检验一样,这两个类都需要和SelectKBest连用,并且我们也可以直接通过输出的统计量来判断我们到底要设置多大的K值。F检验在数据服从正态分布是效果会非常稳定,因此如果使用F检验过滤,我们会先将数据转化成正态分布的方式。
F检验的本质是寻找两组数据之间的线性关系,其原假设是“数据不存在显著的线性关系”,它返回F值和P值两个统计量,和卡方过滤一样,我们希望选取P值小于0.05或是0.01的特征,这些特征与标签是显著线性相关的,而P值大于0.05或是0.01的特征被 我们认为是与标签没有显著线性关系的特征,应该被删除,以F检验的分类为例,在数字数据集上进行特征选择。
k=300,跟原特征数一样,说明没有任何的特征的p值大于0.01,所有的特征都是与标签相关的,因此不需要相关性过滤。
1.4 互信息法
互信息法是用来捕捉每个特征与标签之间的任意关系(线性关系和非线性关系)的过滤方法,跟F检验一样,可以做回归也可以做分类,并且包含两个类feature_selection.mutual_info_classif和feature_selection.mutual_info_regression(互信息回归),这两个类的用法和参数都和F检验一模一样,不过互信息法比F检验更加强大,F检验只能够找出线性关系,而互信息法可以找出任意关系。
1.5 过滤法总结
通常来说,会先使用方差过滤,然后使用互信息法来捕捉相关性,不过了解各种各样的过滤方式也是必要的。所有信息被总结在下表:
Ⅷ 方差对于特征选择上的作用
特征选择的意义
在对数据进行异常值、缺失值、数据转换等处理后,我们需要从当前数据集中选出有意义的特征,然后输入到算法模型中进行训练。
对数据集进行特征选择主要基于以下几方面的考虑:
1.冗余的特征会影响阻碍模型找寻数据潜在的规律,若冗余的特征过多,还会造成维度容灾,占用大量的时间空间,使算法运行效率大打折扣。
2.去除不相关的特征会降低学习任务的难度,保留关键的特征更能直观的看出数据潜在的规律。
那么,该如何进行特征选择呢?通常,要从两方面考虑来选择特征:
1.特征是否具有发散性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
2.特征与目标的相关性:
如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
根据特征选择的标准,又能分为filter、wrapper、embedded三种方法。
Filter方法
过滤法的主要思想是查看特征的发散性和特征与目标的相关性,通过设定阈值的方法,过滤发散性低、相关性不强的特征。
过滤法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,即先选好特征,再用过滤后的特征来训练模型。
具体来说,有:
1.方差法
使用方差法,要先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。若特征的方差小于阈值,则代表该特征的发散性太弱。
2.Pearson系数
Pearson相关系数是用协方差除以两个变量的标准差得到的。皮尔逊系数只能衡量线性相关性,先要计算各个特征对目标值的相关系数以及相关系数的P值,P值区间在[-1,1],p值越大,则与目标值越正/负相关,当p值为0时,则代表与目标值不相关。计算公式如下:
3.卡方检验
卡方检验只能用于二分类,经典的卡方检验是检验定性自变量对定性因变量的相关性。假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距,从而构建统计量。计算公式如下:
由于此篇博文是从整体来谈特征选择,如对卡方检验不甚理解,请参考【笔记】卡方检验概述
4.互信息法
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
互信息系数能够很好地度量各种相关性,互信息法的计算公式如下:
wrapper法
过滤法在选择特征时不考虑特征对学习器的效果,包裹式选择就很灵性了。包裹式通常根据预测效果评分来为学习器“量身定制”特征子集,相较于过滤法,能使学习器的性能更佳,缺点即是计算开销往往也更大。
比如LVW(Las Vegas Wrapper)特征选择方法,其思想是使用随机策略来进行子集搜索,并以最终分类器的误差为特征子集的评价标准,算法描述如下:
通过算法流程图可知,从特征集中随机抽取特征子集,如果在特征子集下分类器的误差降低或误差无变化,则更新特征集为特征子集。
但也可以看出,由于每次循环都要计算分类器误差,计算开销很大,若特征众多,设置的循环次数较大,可能在很长的时间都给不出解。
Embedded法
嵌入式特征选择方法也很灵性…嵌入式的特征选择方法将特征选择和学习器的训练过程融为一体,即学习器自动的进行了特征选择。
比如决策树的信息增益、信息增益比、基尼指数,求解最优解时的L1、L2正则化等思想,都能选取对学习器有价值的特征,过滤价值不大的特征。
参考
《机器学习》 —周志华
jacksu在——–特征选择
Joey-SH ———卡方检验概述