RF、GBDT、XGboost特征选择方法「建议收藏」

 RF、GBDT、XGboost都可以做特征选择,属于特征选择中的嵌入式方法。比如在sklearn中,可以用属性feature_importances_去查看特征的重要度,比如:fromsklearnimportensemble#grd=ensemble.GradientBoostingClassifier(n_estimators=30)grd=ensemble.Rando…

大家好,又见面了,我是你们的朋友全栈君。

  RF、GBDT、XGboost都可以做特征选择,属于特征选择中的嵌入式方法。比如在sklearn中,可以用属性feature_importances_去查看特征的重要度, 比如:

from sklearn import ensemble
#grd = ensemble.GradientBoostingClassifier(n_estimators=30)
grd = ensemble.RandomForestClassifier(n_estimators=30)
grd.fit(X_train,y_train)
grd.feature_importances_

  但是这三个分类器是如何计算出特征的重要度呢?下面来分别的说明一下。

1. 随机森林(Random Forest)

    用袋外数据 (OOB) 做预测。随机森林在每次重抽样建立决策树时,都会有一些样本没有被选中,那么就可以用这些样本去做交叉验证,这也是随机森林的优点之一。它可以不用做交叉验证,直接用oob _score_去对模型性能进行评估。

    具体的方法就是:

        1. 对于每一棵决策树,用OOB 计算袋外数据误差,记为 errOOB1;

        2. 然后随机对OOB所有样本的特征i加入噪声干扰,再次计算袋外数据误差,记为errOOB2;

        3. 假设有N棵树,特征i的重要性为sum(errOOB2-errOOB1)/N;

    如果加入随机噪声后,袋外数据准确率大幅下降,说明这个特征对预测结果有很大的影响,进而说明它的重要程度比较高

2. 梯度提升树(GBDT)

    主要是通过计算特征i在单棵树中重要度的平均值,计算公式如下:

RF、GBDT、XGboost特征选择方法「建议收藏」

其中,M是树的数量。特征i在单棵树的重要度主要是通过计算按这个特征i分裂之后损失的减少值

RF、GBDT、XGboost特征选择方法「建议收藏」

其中,L是叶子节点的数量,L-1就是非叶子结点的数量。

3. XGboost

    XGboost是通过该特征每棵树中分裂次数的和去计算的,比如这个特征在第一棵树分裂1次,第二棵树2次……,那么这个特征的得分就是(1+2+…)。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127541.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux 虚拟网络_macvlan原理

    linux 虚拟网络_macvlan原理      macvlan是Linux操作系统内核提供的网络虚拟化方案之一,更准确的说法是网卡虚拟化方案。它可以为一张物理网卡设置多个mac地址,相当于物理网卡施展了影分身之术,由一个变多个,同时要求物理网卡打开混杂模式。针对每个mac地址,都可以设置IP地址,本来是一块物理网卡连接到交换机,现在是多块虚拟网卡连接到交换机。macvlan应该很简单。1.环境准备         假设有一块物理…

    2022年8月10日
    6
  • Java 性能调优工具

    Java 性能调优工具Java 性能调优工具

    2022年4月23日
    36
  • git查看分支创建时间_git版本分支图怎么看

    git查看分支创建时间_git版本分支图怎么看git查看分支创建时间gitreflogshow–date=iso<branchname>可以查看到指定分支的历次更改记录,最下面一条的时间即是分支创建时间。

    2022年10月1日
    0
  • bass reducer什么意思_map filter foreach区别

    bass reducer什么意思_map filter foreach区别对于一些环境变量的配置文件,如想使更改后立即生效,多用souce+file执行后即可。如/etc/profile里加了配置,source和bash的区别:sourcefilenam

    2022年8月5日
    4
  • VBScript教程-第二章. 运行脚本

    VBScript教程-第二章. 运行脚本因为过年,一直没有更新教程.发现按照这个进度得下个世纪能完成我这宏伟的小计划,所以最近我会加快进度.好多人问我学习方法,其实真的是学习没有捷径.最后说一句,学习脚本最好准备一份帮助文档,vbs就下载script56.chm这个文件就行了.=========================万恶的分割线后开始正题=====================…

    2022年6月17日
    17
  • 关于ADRC的一些粗鄙之语

    关于ADRC的一些粗鄙之语摘自:https://zhuanlan.zhihu.com/p/156228260关于ADRC的一些粗鄙之语隔壁unclewang机械工程Ph.D&控制算法小萌新across等写在之前其实作者本人开始研究adrc也不是特别久,与很多人一样,接触这个算法之后心态也经历过从一开始的“不明觉厉”、中途的“不以为然”到最后的辩证看待的演变过程。经历了一段时间的学习还有群里面大佬的熏陶之后,对于adrc总算是有了一些系统性的想法,这里就简要介绍一下自己的感悟吧。本文.

    2022年5月19日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号