Feature_Selection

目录

第3章 特征选择

3.1 特征选择简介

       数据预处理完成后,接下来需要从给定的特征集合中筛选出对当前学习任务有用的特征,这个过程称为特征选择(feature selection)。
       特征选择的两个标准:

  • 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
  • 特征与目标的相关性:优先选择与目标相关性高的特征。

常见的特征选择方法有三种:过滤法(Filter)、包裹法(Wrapper)、嵌入(Embedding)。

3.2 过滤式(Filter)

       先进行特征选择,再对学习器进行训练,设定阈值或特征个数,对特征进行“过滤”。

3.2.1 方差过滤法

       计算每个特征的方差,然后根据阈值删除取值小于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征的代码如下:

from sklearn.feature_selection import VarianceThreshold

#方差选择法,返回值为特征选择后的数据
#参数threshold为方差的阈值
VarianceThreshold(threshold=3).fit_transform(iris.data)

3.2.2 皮尔森相关系数

       该方法衡量的是变量之间的线性相关性,结果的取值区间为[-1,1],-1表示完全的负相关(这个变量下降,那个就会上升),+1表示完全的正相关,0表示没有线性相关。用feature_selection库的SelectKBest类结合Pearson 相关系数来选择特征的代码如下:

from sklearn.feature_selection import SelectKBest
from scipy.stats import pearsonr

#选择K个最好的特征,返回选择特征后的数据
#第一个参数为计算评估特征是否好的函数,该函数输入特征矩阵和目标向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。在此定义为计算相关系数
#参数k为选择的特征个数
SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

3.2.3 互信息和最大信息系数

       互信息(Mutual information)用于评价离散特征对离散目标变量的相关性,互信息计算公式如下:
I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) . I(X;Y)=\sum_{x \in X}\sum_{y \in Y}p(x,y)\log \frac{p(x,y)}{p(x)p(y)}. I(X;Y)=xXyYp(x,y)logp(x)p(y)p(x,y).
       互信息选择特征有如下缺点:

  • 它不属于度量方式,也没有办法归一化,在不同数据集上的结果无法做比较;
  • 对于连续变量的计算不是很方便(X和Y都是集合,x,y都是离散的取值),通常变量需要先离散化,而互信息的结果对离散化的方式很敏感

       最大信息系数(Maximal Information Coefficient, MIC)解决了这两个问题。minepy提供了MIC功能,代码如下:

from minepy import MINE

m = MINE()
x = np.random.uniform(-1, 1, 10000)
m.compute_score(x, x**2)
printm.mic()

3.2.4 信息增益

       参考决策树算法笔记 DecisionTree

3.3 包裹式(Wrapper)

       针对特定的学习器选择出最有利于其性能的特征。

3.3.1 递归特征消除

       递归训练学习器,每次运行都选出其中最好的特征并应用于下一次训练中。feature_selection库的RFE类来选择特征的代码如下:

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression

#递归特征消除法,返回特征选择后的数据
#参数estimator为基模型
#参数n_features_to_select为选择的特征个数
RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(iris.data, iris.target)

3.3.2 Las Vegas Wrapper

       LVW是典型的包裹式特征选择方法,该算法将最终要使用的学习器的性能作为特征子集的评价标准,然后针对特征空间中的不同子集,计算每个子集的预测效果,效果最好的,即作为最终被挑选出来的特征子集。算法流程如下图所示:

Alt text

3.4 嵌入式(Embedding)

       特征选择过程与学习器的训练过程融为一体。
       嵌入式的方法有L1正则化和随机森林。

3.5 参考

[1] Joe-Han.数据预处理与特征选择
[2] zhiyong_will.机器学习中的特征——特征选择的方法以及注意点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值