特征选择

  现有的特征选择算法,从不一样的角度,能够分为不一样的类型。按数据标签的获取状况,能够分为有监督、半监督和无监督特征选择;按是否须要额外的学习算法参与特征选择过程,以及具体的参与方式,能够分为封装型(wrapper)、嵌入式(embedded)和过滤型(filter)。再细致一些,能够分为基于信息论的特征选择、基于统计的特征选择、基于类似性的特征选择、基于稀疏学习的特征选择,等等。这里简单收集并持续更新php

  上述说起的第一种分类方式,是机器学习中最为常见的,对于有监督/半监督方法利用标签的形式,有直接经过回归项引入标签信息,也有间接经过图来引入标签信息(即在构建图的过程当中引入)。第二种分类方式,我的感受在近年来,对某些方法的归属类别,不一样学者开始出现一些分歧,缘由可能跟近年来引发众多研究者关注的正则化技术有关,使得本来的界线划分变得比较模糊,不过也正说明,这种分类方式自己就没有一个很严格的定义,只是概念上的大体区分。最后提到的分类方式,是根据特征选择算法具体用到的准则/技术来划分,因此一种算法同时分属不一样的类别也是可能的,我我的更乐意把这里所谓的类别名,称为某一算法的组成成分。

html

一、Filter方法

  Chi-squared test(卡方检验)算法

  information gain(信息增益)数组

  correlation coefficient scores(相关系数)app

  查看带选择特征与目标值的关联度,能够经过预设指定阈值来筛选特征,变量关联关系能够经过spearman、pearson、kendall等方法,固然在选择具体算法前要分析数据的分布状况以适应个算法的需求机器学习

 

二、Wrapper方法

  其主要思想是:将子集的选择看做是一个搜索寻优问题,生成不一样的组合,对组合进行评价,再与其余的组合进行比较。这样就将子集的选择看做是一个是一个优化问题,这里有不少的优化算法能够解决,尤为是一些启发式的优化算法,如GA,PSO,DE,ABC等,详见“优化算法——人工蜂群算法(ABC)”,“优化算法——粒子群算法(PSO)”。函数

    主要方法有: (递归特征消除算法) 学习

 

三、Embedded方法

  其主要思想是:在模型既定的状况下学习出对提升模型准确性最好的属性。这句话并非很好理解,实际上是讲在肯定模型的过程当中,挑选出那些对模型的训练有重要意义的属性。测试

简单易学的机器学习算法——岭回归(Ridge Regression)”,岭回归就是在基本线性回归的过程当中加入了正则项。优化

 

 

特征选择方法具体分细节总结:

一、去掉取值变化小的特征 Removing features with low variance

  这应该是最简单的特征选择方法了:假设某特征的特征值只有0和1,而且在全部输入样本中,95%的实例的该特征取值都是1,那就能够认为这个特征做用不大。若是100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,若是是连续型变量,就须要将连续变量离散化以后才能用,并且实际当中,通常不太会有95%以上都取某个值的特征存在,因此这种方法虽然简单可是不太好用。能够把它做为特征选择的预处理,先去掉那些取值变化小的特征,而后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。


2 、单变量特征选择 Univariate feature selection

  单变量特征选择可以对每个特征进行测试,衡量该特征和响应变量之间的关系,根据得分扔掉很差的特征。对于回归和分类问题能够采用卡方检验等方式对特征进行测试。

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

2.1 相关系数 spearman、pearson、kendall

  pandas里面有相关实现,这里需注意选用不一样计算相关系数的方式的前提是肯定合适的数据分布

2.2 互信息和最大信息系数 Mutual information and maximal information coefficient (MIC)  

  以上就是经典的互信息公式了。想把互信息直接用于特征选择其实不是太方便:一、它不属于度量方式,也没有办法归一化,在不一样数据及上的结果没法作比较;二、对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),一般变量须要先离散化,而互信息的结果对离散化的方式很敏感。

2.3 距离相关系数 (Distance correlation)
  距离相关系数是为了克服Pearson相关系数的弱点而生的。Pearson相关系数是0,咱们也不能判定这两个变量是独立的(有多是非线性相关);但若是距离相关系数是0,那么咱们就能够说这两个变量是独立的。

2.4 基于学习模型的特征排序 (Model based ranking)
  这种方法的思路是直接使用你要用的机器学习算法,针对每一个单独的特征和响应变量创建预测模型。其实Pearson相关系数等价于线性回归里的标准化回归系数。假如某个特征和响应变量之间的关系是非线性的,能够用基于树的方法(决策树、随机森林)、或者扩展的线性模型等。基于树的方法比较易于使用,由于他们对非线性关系的建模比较好,而且不须要太多的调试。但要注意过拟合问题,所以树的深度最好不要太大,再就是运用交叉验证

 

3 线性模型和正则化 

     单变量特征选择方法独立的衡量每一个特征与响应变量之间的关系,另外一种主流的特征选择方法是基于机器学习模型的方法。有些机器学习方法自己就具备对特征进行打分的机制,或者很容易将其运用到特征选择任务中,例如回归模型,SVM,决策树,随机森林等等。


3.1 正则化模型
  正则化就是把额外的约束或者惩罚项加到已有模型(损失函数)上,以防止过拟合并提升泛化能力。损失函数由原来的E(X,Y)变为E(X,Y)+alpha||w||,w是模型系数组成的向量(有些地方也叫参数parameter,coefficients),||·||通常是L1或者L2范数,alpha是一个可调的参数,控制着正则化的强度。当用在线性模型上时,L1正则化和L2正则化也称为Lasso和Ridge。


3.2 L1正则化/Lasso
  L1正则化将系数w的l1范数做为惩罚项加到损失函数上,因为正则项非零,这就迫使那些弱的特征所对应的系数变成0。所以L1正则化每每会使学到的模型很稀疏(系数w常常为0),这个特性使得L1正则化成为一种很好的特征选择方法。


3.3 L2正则化/Ridge regression
  L2正则化将系数向量的L2范数添加到了损失函数中。因为L2惩罚项中系数是二次方的,这使得L2和L1有着诸多差别,最明显的一点就是,L2正则化会让系数的取值变得平均。对于关联特征,这意味着他们可以得到更相近的对应系数。仍是以Y=X1+X2为例,假设X1和X2具备很强的关联,若是用L1正则化,不论学到的模型是Y=X1+X2仍是Y=2X1,惩罚都是同样的,都是2alpha。可是对于L2来讲,第一个模型的惩罚项是2alpha,但第二个模型的是4*alpha。能够看出,系数之和为常数时,各系数相等时惩罚是最小的,因此才有了L2会让各个系数趋于相同的特色。
  能够看出,L2正则化对于特征选择来讲一种稳定的模型,不像L1正则化那样,系数会由于细微的数据变化而波动。因此L2正则化和L1正则化提供的价值是不一样的,L2正则化对于特征理解来讲更加有用:表示能力强的特征对应的系数是非零

4 随机森林

  随机森林具备准确率高、鲁棒性好、易于使用等优势,这使得它成为了目前最流行的机器学习算法之一。随机森林提供了两种特征选择的方法:mean decrease impurity和mean decrease accuracy。
4.1 平均不纯度减小 mean decrease impurity
  随机森林由多个决策树构成。决策树中的每个节点都是关于某个特征的条件,为的是将数据集按照不一样的响应变量一分为二。利用不纯度能够肯定节点(最优条件),对于分类问题,一般采用基尼不纯度或者信息增益,对于回归问题,一般采用的是方差或者最小二乘拟合。当训练决策树的时候,能够计算出每一个特征减小了多少树的不纯度。对于一个决策树森林来讲,能够算出每一个特征平均减小了多少不纯度,并把它平均减小的不纯度做为特征选择的值。
4.2 平均精确率减小 Mean decrease accuracy
  另外一种经常使用的特征选择方法就是直接度量每一个特征对模型精确率的影响。主要思路是打乱每一个特征的特征值顺序,而且度量顺序变更对模型的精确率的影响。很明显,对于不重要的变量来讲,打乱顺序对模型的精确率影响不会太大,可是对于重要的变量来讲,打乱顺序就会下降模型的精确率。
5 两种顶层特征选择算法
  之因此叫作顶层,是由于他们都是创建在基于模型的特征选择方法基础之上的,例如回归和SVM,在不一样的子集上创建模型,而后汇总最终肯定特征得分。
5.1 稳定性选择 Stability selection
  稳定性选择是一种基于二次抽样和选择算法相结合较新的方法,选择算法能够是回归、SVM或其余相似的方法。它的主要思想是在不一样的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,好比能够统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想状况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。
5.2 递归特征消除 Recursive feature elimination (RFE)
  递归特征消除的主要思想是反复的构建模型(如SVM或者回归模型)而后选出最好的(或者最差的)的特征(能够根据系数来选),把选出来的特征放到一遍,而后在剩余的特征上重复这个过程,直到全部特征都遍历了。这个过程当中特征被消除的次序就是特征的排序。所以,这是一种寻找最优特征子集的贪心算法。
RFE的稳定性很大程度上取决于在迭代的时候底层用哪一种模型。例如,假如RFE采用的普通的回归,没有通过正则化的回归是不稳定的,那么RFE就是不稳定的;假如采用的是Ridge,而用Ridge正则化的回归是稳定的,那么RFE就是稳定的。
七、特征获取方法的选取原则
a、处理的数据类型
b、处理的问题规模
c、问题须要分类的数量
d、对噪声的容忍能力
e、无噪声环境下,产生稳定性好、最优特征子集的能力。

互信息Mutual Informantion

   yj对xi的互信息定义为后验几率与先验几率比值的对数。

互信息越大,代表yj对于肯定xi的取值的贡献度越大。

实际上,互信息衡量的是xi与y的独立性,若是他俩独立,则互信息发值为零,则xi与y不相关,则能够剔除xi,反之,若是互信息发值越大则他们的相关性越大

基于指望交叉熵的特征项选择

p(ci|w)表示在出现词条w时文档属于类别ci的几率。

交叉熵反应了文本类别的几率分布与在出现了某个词条的状况下文本类别的几率分布之间的距离。词条的交叉熵越大,对文本类别分布影响也就越大。

若是使用具备对称性的交叉熵,那公式就变成了

 

特征选择->前向搜索,后向搜索

 

  

 

 

 参考:

https://www.tuicool.com/articles/ieUvaq

特征选择相关资源:

scikit-feature feature selection repository

http://www.escience.cn/people/fpnie/index.html

https://blog.csdn.net/fighting_one_piece/article/details/38441865

https://blog.csdn.net/fighting_one_piece/article/details/37912051

相关文章
相关标签/搜索