Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >特征重要性语境下的决策树解释

特征重要性语境下的决策树解释
EN

Data Science用户
提问于 2017-02-01 16:29:32
回答 4查看 19K关注 0票数 13

我试图了解如何充分理解决策树分类模型的决策过程。我要看的两个主要方面是树的图形表示和特性重要性列表。我不明白的是特性的重要性是如何在树的上下文中确定的。例如,下面是我的特性重要性列表:

特征排名: 1. FeatureA (0.300237)

  1. FeatureB (0.166800)
  2. FeatureC (0.092472)
  3. FeatureD (0.075009)
  4. FeatureE (0.068310)
  5. FeatureF (0.067118)
  6. FeatureG (0.066510)
  7. FeatureH (0.043502)
  8. FeatureI (0.040281)
  9. FeatureJ (0.039006)
  10. FeatureK (0.032618)
  11. FeatureL (0.008136)
  12. FeatureM (0.000000)

然而,当我看到树的顶端时,它看起来是这样的:

事实上,一些被排列为“最重要”的特性直到树下更深的地方才会出现,而树的顶部是FeatureJ,它是排名最低的特性之一。我天真的假设是,最重要的特征将被排在树顶附近,从而产生最大的影响。如果这是不正确的,那么是什么使一个功能“重要”?

EN

回答 4

Data Science用户

回答已采纳

发布于 2018-08-29 08:14:57

不需要一个特性越重要,它在决策树上的节点就越高。

这仅仅是因为在这两种情况下(分裂与重要性)都可以使用不同的标准(例如基尼杂质、熵-信息增益、MSE等)。

例如,在SkLearn,您可以选择根据熵-信息增益准则(参见criterion & 'entropy' at SkLearn)对决策树上的节点进行拆分,而特征的重要性则由Gini重要性(即给定变量在随机林中的所有树中的Gini杂质的平均减少量)来表示(参见feature_importances_ at SkLearn这里)。

如果我是对的,在SkLearn,即使您选择按照Gini杂质准则对决策树上的节点进行拆分,而特性的重要性是由基尼重要性赋予的,因为基尼杂质和基尼重要性并不相同(参见关于基尼重要性的 )。

票数 5
EN

Data Science用户

发布于 2017-02-02 13:28:47

在科学知识-学习特征的重要性是减少节点杂质。关键是它只在节点级别度量重要性。然后,根据到达该节点的样本数对所有节点进行加权。

因此,如果只有少数样本在第一次分裂后在左节点结束,这可能并不意味着J是最重要的特性,因为左节点上的增益可能只会影响很少的样本。如果您另外打印出每个节点中的样本数,您可能会更好地了解正在发生的事情。

票数 3
EN

Data Science用户

发布于 2017-02-01 18:19:29

仅仅因为节点在树上较低并不一定意味着它就不那么重要了。中的特性重要性是通过一个节点如何将类分离出来(基尼指数)来计算的。你会注意到,即使是在你修剪过的树上,A也比J分裂了三倍,熵分数(与吉尼相似)在A节点上略高于J。

然而,如果您只能选择一个节点,您将选择J,因为这将导致最好的预测。但是,如果您可以选择让多个节点做出几个不同的决定,那么A将是最好的选择。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/16693

复制
相关文章
【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )
1. 获取订阅者类 : 通过反射获取该订阅者类中的所有订阅方法 , 凡是订阅方法 , 都带有 @MySubscribe 注解 ;
韩曙亮
2023/03/29
3.4K0
Python 中的布尔值
这是因为在输出的时候,判断 a or 'world' ,当 a 为 True 的时候,会输出 a ,同样的道理,当 b = '' 的时候,也就是 b 为 False, 这个时候会输出后面为真的内容。也就是 'world' 。
zucchiniy
2019/10/30
1.7K0
在Java中为什么不同的返回类型不算方法重载?
方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。 比如以下 4 个 method 方法就可以称之为方法重载,如下代码所示:
磊哥
2022/01/20
3.5K0
在Java中为什么不同的返回类型不算方法重载?
RabbitMQ在php中的使用----发布与订阅
安装教程 rabbitmq和php的amqp扩展教程网上有很多,大家可以自行查询,例如:Linux系统安装RabbitMQ及PHP安装amqp拓展库详细教程
美团骑手
2021/01/18
2K0
【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )
EventBus 中调用 EventBus.getDefault().register(this) 注册订阅者 ; 该方法中主要进行了如下
韩曙亮
2023/03/29
2.3K0
ios中iframe的scroll滚动事件替代方法
在公众号的开发中,遇到ios中iframe的scroll滚动事件失效,在此做下记录。 因为接口获取的数据必须放在iframe中展示,滚动到底部按钮变亮,如图: 代码如下: <!DOCTYPE html
deepcc
2018/07/05
2K0
ios中iframe的scroll滚动事件替代方法
在公众号的开发中,遇到ios中iframe的scroll滚动事件失效,在此做下记录。 因为接口获取的数据必须放在iframe中展示,滚动到底部按钮变亮,如图: 代码如下: <!DOCTYPE html
deepcc
2018/05/16
2.8K0
Java 中如何限制方法的返回时间
可以使用 JDK 中的 ExecutorService 方法来对调用的方法进行处理。
HoneyMoose
2023/02/10
3.1K0
Java 中如何限制方法的返回时间
Excel公式技巧32: 处理公式中的布尔值
在我们编写公式时,特别是编写数组公式时,往往会生成由TRUE/FALSE值组成的中间数组。有些Excel函数可以忽略这些布尔值,例如SUM函数,但是很多函数不能处理这些布尔值,如果将它们传递给这些函数,就会导致错误。因此,在将这些布尔值传递给函数继续处理时,需要将它们转换成数字。
fanjy
2020/05/14
2.8K0
在日历中订阅腾讯待办,了解一下?
在我们的待办清单里,可能会记录着这样的日程: 对于这些有deadline的待办事项,如果想要更加直观和清晰地在日历应用上查看和管理,应该如何实现? 这时,你只需要一个URL,就可以在其他日历应用中轻松订阅腾讯待办。即便是脱离了待办小程序,也能在日历中看到设置了日期的未完成待办事项。 哪些日历可以订阅腾讯待办? 支持ics格式的URL订阅的日历:比如Outlook日历、macOS、iOS、部分安卓机型以及其他第三方日历等。 其他更多机型,如果有数据同步需求,可以到官方社区留言。 官方社区:https:
腾讯云DNSPod团队
2021/09/18
1.3K0
java中的onresume_java – 直接onResume()调用的替代方法
我的应用程序目前在onResume()内部完成大部分工作,然后发布显示,这是onResume()的结束.
全栈程序员站长
2022/09/05
9370
在vue中如何监听移动端的返回键
环境:vue.js+vant 问题:首页列表和分类页的列表用的同一个页面,页面区分用的是本地缓存,希望在分类页点击返回的时候,执行清除缓存,刷新页面 解决原理:利用history和浏览器刷新popstate状态去实现 每一次返回都会去历史记录回退 -1 所以就在进入页面之前 往历史记录里面多记录一次当前页面的链接。然后再回退的时候监听刷新,去做一些事情。 具体执行: 1、挂载完成后,判断浏览器是否支持popstate
IT工作者
2022/03/14
3.6K0
在日历中订阅腾讯待办,了解一下?
对于这些有deadline的待办事项,如果想要更加直观和清晰地在日历应用上查看和管理,应该如何实现?
腾讯待办
2021/09/29
9590
在日历中订阅腾讯待办,了解一下?
在 React 16 中从 setState 返回 null 的妙用[每日前端夜话0x7D]
在 React 16 中为了防止不必要的 DOM 更新,允许你决定是否让 .setState 更来新状态。在调用 .setState 时返回 null 将不再触发更新。
疯狂的技术宅
2019/06/11
14.7K0
【说站】splitlines在python中返回列表
2、返回一个是否包含换行符的列表,如果参数keepends为False,则不包含换行符。
很酷的站长
2022/11/23
2.5K0
Python中的布尔类型以及布尔值介绍
布尔类型是一种逻辑类型,它只有两个取值:True(真)和False(假)。在Python中,True和False是内置的布尔类型常量,用于表示真和假的状态。
小博测试成长之路
2023/09/01
9800
Python中的布尔类型以及布尔值介绍
IE中 时间对象方法getTime返回NaN
在IE中使用Date对象的getTime方法解析以下格式的日期时(2020-12-14 16:00:00)会返回NaN,原因是在IE中使用该方法时参数的格式必须为YYYY/MM//DD
peng_tianyu
2022/12/15
1.2K0
点击加载更多

相似问题

Sitecore Web Item API 404

21

Sitecore Item Web API -嵌套JSON结构?

20

Sitecore Item Web API未返回任何字段

13

Sitecore Item Web API -找不到模板项目错误

11

如何使用item web api在sitecore 6.5中创建媒体项目

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文