Sklearn.feature_selection

选择合适的特征

  • 预选出特征集:可以询问该领域懂业务的专家,让他们给一些建议。较大影响的和较小影响的特征都选入候选集。

过滤法选择特征

特征集合很大时,在尝试降维之前,有必要用特征工程的方法去选择出较重要的特征结合。

过滤法:

按照特征的发散性或者相关性指标对各个特征进行评分,设定评分阈值或者待选择阈值的个数,选择合适特征。

  • feature_selection.VarianceThreshold([threshold])

    方差筛选。方差越大的特征,那么可以认为它是比较有用的。如果方差较小,比如小于1,那么这个特征可能对算法作用很小。可以指定一个方差的阈值,方差小于这个阈值的特征会被筛掉。

  • feature_selection.SelectKBest([score_func, k]),score_func=scipy.stats.pearsonr
    相关系数。主要用于输出连续值的监督学习算法中。分别计算所有训练集中各个特征与输出值之间的相关系数,设定一个阈值,选择相关系数较大的部分特征。

  • feature_selection.chi2(X, y)
    假设检验如卡方检验。卡方检验可以检验某个特征分布和输出值分布之间的相关性。使用chi2这个类来做卡方检验得到所有特征的卡方值与显著性水平P临界值,可以给定卡方值阈值, 选择卡方值较大的部分特征。

  • feature_selection.f_classif(X, y), feature_selection.f_regression(X, y)
    假设检验除了卡方检验,还可以使用F检验和t检验。F检验的函数f_classif和f_regression,分别在分类和回归特征选择时使用。

  • feature_selection.mutual_info_classif(X, y),feature_selection.mutual_info_regression(X, y)
    互信息,即从信息熵的角度分析各个特征和输出值之间的关系评分。在决策树中出现过互信息(信息增益)。互信息值越大,说明该特征和输出值之间的相关性越大,越需要保留。

(可以优先使用卡方检验和互信息来做特征选择)

包装法

通过选择一个目标函数来一步步的筛选特征。通常是预测效果评分,每次选择部分特征,或者排除部分特征。

  • feature_selection.RFE(estimator)
    递归消除特征法(recursive feature elimination, RFE),使用一个机器学习模型来进行多轮训练,每轮训练后,消除若干权值系数对应的特征,再基于新的特征集进行下一轮训练。
    SVM-RFE算法:每轮使用特征集中特征来训练,得到分类超平面𝑤𝑥+𝑏=0后,选出𝑤中分量的平方值 w i 2 w^2_i wi2最小的那个序号i对应的特征,将其排除。

嵌入法

用机器学习的方法来选择特征,但是它和RFE的区别是它不是通过不停的筛掉特征来进行训练,而是使用的都是特征全集。

  • feature_selection.SelectFromModel(estimator)
    最常用的是使用L1正则化和L2正则化来选择特征。正则化惩罚项越大,那么模型的系数就会越小,当正则化惩罚项大到一定程度时,部分特征系数会更容易先变成0,这部分系数就是可以筛掉的。
    常用逻辑回归作为基学习器。此外也可以使用决策树或GBDT。

寻找高级特征

  • 若干项特征加和: 假设希望根据每日销售额得到一周销售额的特征。可以将最近7天的销售额相加得到。
  • 若干项特征之差: 假设已经拥有每周销售额以及每月销售额两项特征,可以求一周前一月内的销售额。
  • 若干项特征乘积: 假设有商品价格和商品销量的特征,就可以得到销售额的特征。
  • 若干项特征除商: 假设有销售额和购买的商品件数,就可以得到平均每件商品的销售额。

注意:不是随便两两组合就可以形成高级特征,这样容易导致特征爆炸,反而没有办法得到较好的模型。(聚类的时候高级特征尽量少一点,分类回归的时候高级特征适度的多一点)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值