Machine Learning-特征工程之特征选择
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特征工程之特征选择
简介
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 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