当前位置:文档之家› Machine Learning-特征工程之特征选择

Machine Learning-特征工程之特征选择

特征工程之特征选择简介1 Filter(过滤式选择)1.1 移除低方差特征(variance threshold)1.2 信息增益(information gain)1.3 单变量特征选择(Univariate feature selection)1.3.1 卡方检验(chi-square test)1.3.2 Pearson 相关系数(Pearson Correlation)1.3.3 费雪分数(fisher score)1.4 Relief(Relevant Features)2 Wrapper(包裹式选择)2.1 递归特征消除(recursive feature elimination)2.2 遗传算法(genetic algorithms)2.3 拉斯维加斯方法(Las Vegas Wrapper)3 Embedded(嵌入式选择)3.1 L1(LASSO )3.2 决策树、随机森林、极限树简介随着科技的发展,数据量越来越大,在建立模型时,考虑的数据维度越来越广,所以建里模型前的降维越来越重要,降温的方式一般有两种,其一是用原始的维度合成新的重要维度,例如SVD和PCA,其二是在原始的维度中保留重要维度,剔除次要维度。

第一种降维方式的优点是可以简单高效的合成重要维度,缺点是合成的维度失去其现实中的可解释性。

第二种降维方式的优点是保持其原始的可解释性,缺点是计算比第一种相对复杂。

所以在图片识别,声音识别等不需要解释中间变量的模型领域经常采用第一种建模方式,在金融领域往往需要追求变量的可解释性,所以经常采用第二种降维方式。

本文主要采用第二种降维方式,也就是在原有的特征中进行特征选择。

这种降维的方法其关键分为两大步:第一步:如何遍历所有特征。

第二步:如何判断特征的重要性。

如何遍历所有特征。

在第一步中可使用前向搜索,后向搜索和双向搜索方法遍历所有特征,这三种遍历方法全部是贪心算法,最求每一步最优,不是全局最优。

1、前向搜索:首先对单特征进行遍历,找到此次遍历中最重要的特征,然后保留这个特征,遍历这个特征和其他任一特征的组合的主要性,找到第二重要的特征,保留这两个特征,遍历这个两个特征和其他任一特征的组合的重要性,找到第三个特征,保留着三个特征,以次下去,即可对全部特征进行重要性排序。

2、后向搜索:与前向搜索相反,开始在全部特征中遍历剔除一个特征,找到影响重要性最小的特征,将其剔除,然后,在剩下的n-1个特征中遍历剔除一个特征,找到影响重要性最小的特征,以此下去,即可对全部特征进行重要性排序。

3、双向搜索:同时进行向前和向后搜索,但是一定要注意,向后搜索一定不要剔除向前搜索选中的特征。

如何判断特征的重要性。

如何判断特征的重要性,有很多方法,如:信息熵、相关系数、信息价值(Information Value),具体方法下面会具体介绍。

主要方法分类特征筛选降维的方法主要分为三大类:过滤法(Filter)、包裹法(Wrapper)、嵌入法(Embedded)。

这三者的区别和具体算法下面进行具体介绍。

Filter(过滤法)Filter的思想是,特征筛选和模型建立完全隔离开,筛选特征时,不考虑具体什么模型,只看特征对目标变量影响。

这种方法包括:移除低方差特征(variance threshold)、信息增益(information gain)、卡方检验(chi-square test)、Pearson 相关系数(Pearson Correlation)、费雪分数(fisher score)移除低方差特征(variance threshold)其思想是,剔除方差小的特征,方差小的特征其值变化较小,认为区别力度不大,但是该方法只适用于离散型随机变量,若是连续性随机变脸需要进行woe 封箱。

给出如下例子,可以看到第一个维度的取值为(0,0,1,0,0,0)其波动率非常小,所以认为这个特征应该清楚。

信息增益(information gain)这里先给出信息熵的公式如下:其中:D是一个集合,是集合D的信息熵,是集合D中k类的比例。

对于集合D,考虑样本的属性factor1,在属性factor1上,可将集合D划分为),所以,这个属性将集合划分的信息增益为:特征划分带来的信息增益值越大,其这个特征对结果影响越大,所以我们可以通过信息增益来判断特征的重要性,结合上面特征遍历的方法,我们就可以得到筛选特征的方法。

下面给出信息增益结合前向搜索的python例子:上面给出了,前向搜索结合信息增益筛选特征的例子。

在很多情况下为了简化,只进行单变量特征选择。

单变量特征选择(Univariate feature selection)单变量特征选择不进行前向、后向或者双向搜索,只进行单一变量的影响排名。

常用的方法有卡方检验,相关系数和费雪分数。

卡方检验(chi-square test)我们在讲解卡方检验以前,先来推导卡方分布。

卡方分布是独立的服从的随机变量,构造新的统计量:,则的密度函数为:其中:函数。

以上分布被称为卡方分布。

证明:对于统计量有:使用极坐标变换:\begin{cases} x_1=rcos\theta_1\ x_2=rcos\theta_2sin\theta_1\ ...\ x_{n-1}=rcos\theta_{n-1}sin\theta_{n-2}...sin\theta_1\ x_n=rsin\theta_{n-1}sin\theta_{n-2}...sin\theta_1\ \end{cases}\begin{cases} x_1=rcos\theta_1\ x_2=rcos\theta_2sin\theta_1\ ...\ x_{n-1}=rcos\theta_{n-1}sin\theta_{n-2}...sin\theta_1\ x_n=rsin\theta_{n-1}sin\theta_{n-2}...sin\theta_1\ \end{cases}所以:所以:P(\chi^2<x)=\int\int...\int_B \Pi_i^N \frac{1}{\sqrt{2\pi}} e{-\frac{x_i2}{2}}dx_1dx_2...dx_n\ =(\frac{1}{\sqrt{2\pi}})^N\int\int...\int_B e{-\sum_i N\frac{x_i^2}{2}} dx_1dx_2...dx_n\ =c_n\int_{r=0}^\infty e{-\frac{r2}{2}} r^{n-1} drP(\chi^2<x)=\int\int...\int_B \Pi_i^N \frac{1}{\sqrt{2\pi}} e{-\frac{x_i2}{2}}dx_1dx_2...dx_n\ =(\frac{1}{\sqrt{2\pi}})^N\int\int...\int_B e{-\sum_i N\frac{x_i^2}{2}} dx_1dx_2...dx_n\ =c_n\int_{r=0}^\infty e{-\frac{r2}{2}} r^{n-1} dr因为得到所以:P(\chi2<x)=c_n\int_{r=0}\infty e{-\frac{r2}{2}} r^{n-1} dr\ =c_n\int_{r=0}^\infty e^{-\frac{x}{2}} x^{\frac{n-1}{2}} \frac{1}{2}\sqrt{x} dx\ =\frac{1}{2}c_n\int_{r=0}^\infty e^{-\frac{x}{2}} x^{\frac{n}{2}-1} dxP(\chi2<x)=c_n\int_{r=0}\infty e{-\frac{r2}{2}} r^{n-1} dr\ =c_n\int_{r=0}^\infty e^{-\frac{x}{2}} x^{\frac{n-1}{2}} \frac{1}{2}\sqrt{x} dx\ =\frac{1}{2}c_n\int_{r=0}^\infty e^{-\frac{x}{2}} x^{\frac{n}{2}-1} dx当x趋于正无穷大时,有:解得:所以得到:上面我们推导出来卡方分布,在推导的过程中,我们看到n个服从相同独立的正太分布随机变量的平方和服从卡方分布。

所以当我们构造的检验的统计量的表达形式是n个服从相同独立的正太分布随机变量的平方和时,这种检验方式称为卡方检验。

卡方统计量卡方统计量的由来:皮尔逊在衡量数据的分布与所选择的预期或假设分布之间的差异是,需要构造一个统计量,对这个统计量进行假设检验,皮尔逊首先考虑所有数据分布的频数和对饮的假设分布的频率的差的和:但是他发现不同数据的频数可能大于假设的分布的频率,也可能小于假设的分布的频率。

所以不同数据的频率差之间会相互抵消。

从而失去本来想衡量数据分布和假设分布差异的意义。

针对这一问题,皮尔逊引入了平方的概念,即把上面的和变成了:.虽然解决了上面的问题,但是还有一个问题,就是数量级的问题,即之间都是相差10,但是明显后面一种比前面一种更准确。

所以,皮尔逊在这个公式上又做了改变为:所以上面的统计量就是最终的卡方统计量。

但是值得注意的是,这个统计量并不严格服从卡方分布。

理论次数越大,该分布与卡方分布越接近,当理论次数时,与卡方分布符合较好。

当超过20%的理论次数小于5,或至少有一个理论次数小于1时,公式右边的表达式与卡方分布偏离较大。

因此,其应用条件为至少有80%的理论次数不小于5,并且每个理论次数都不小于1。

上面的条件也就是进行卡方检验的条件。

当不符合上面的条件时,我们可以进行适当的处理,来使用卡方检验,这的处理方式不是本文重点,不展开讲述。

卡方检验上面构造出了卡方统计量,对这个统计量进行检验的话,就是卡方检验,卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。

注意:卡方检验针对分类变量,没如果是连续变量,则要分组离散化。

卡方检验的原假设一般是数据的分布符合某一预期的分布。

备择假设一般为预期分布不符合某一预期分布。

卡方检验的用处主要有以下几种:1、检验某个连续变量的分布是否与某种理论分布相一致。

如是否符合正态分布、是否服从均匀分布、是否服从Poisson分布等。

2、检验某个分类变量各类的出现概率是否等于指定概率。

如在36选7的彩票抽奖中,每个数字出现的概率是否各为1/36;掷硬币时,正反两面出现的概率是否均为0.5。

相关主题