原生xgboost中如何输出feature_importance

更新时间:2023-07-31 20:27:40 阅读: 评论:0

原⽣xgboost中如何输出feature_importance
⽹上教程基本都是清⼀⾊的使⽤sklearn版本,此时的XGBClassifier有⾃带属性feature_importances_,⽽特征名称可以通过model._Booster.feature_names获取,但是对应原⽣版本,也就是通过DMatrix构造,通过ain训练的模型,如何获取feature_importance?⽽且,⼆者获取的feature_importance⼜有何不同?
1.通过阅读官⽅⽂档adthedocs.io/en/latest/python/python_api.html,发现sklearn版本初始化时会指定⼀个默认参数
人物名片
显⽽易见,最后获取的feature_importances_就是gain得到的
幸福的方法读后感2.⽽原⽣版本初始化时没有importance_type参数,真正获取feature_importance时通过_score(importance_type="gain")获取,(另外⼀个⽅法get_fscore()就是怎么赞美别人
怎么清洗螃蟹
get_score(importance_type="weight"),⼆者实现⼀样。)
注意这⾥默认参数是"weight",就是指每个特征被⽤于分割的使⽤次数。如果对标skelearn版本需要指定“gain”,这⾥gain是指平均增益,另外,skelearn版本返回的importance 是0-1形式,⽽原⽣版本返回的是很⼤的⼩数形式,对标的话可以通过除以总和得到,结果如图春问
3.⾄于什么时候⽤weight,什么时候⽤gain,其实各有说法。实际上,判断特征重要性共有三个维度,⽽在实际中,三个选项中的每个选项的功能重要性排序都⾮常不同
旧字开头的成语
1. 权重。在所有树中⼀个特征被⽤来分裂数据的次数。
2. 覆盖。在所有树中⼀个特征被⽤来分裂数据的次数,并且有多少数据点通过这个分裂点。
椰青怎么打开3. 增益。使⽤特征分裂时平均训练损失的减少量
是什么使得衡量特征重要性的度量好或者坏?
如何⽐较⼀种特征归因⽅法与另⼀种特征归因⽅法并不容易。我们可以度量每种⽅法的最终⽤户性能,例如数据清理、偏差检测等。但这些只是对特征归因⽅法好坏的间接测量。在这⾥,我们将定义两个属性,我们认为任何好的特征归因⽅法应该遵循:
假如我是爸爸1. ⼀致性。每当我们更改模型以使其更依赖于某个特征时,该特征的归因重要性不应该降低。
2. 准确性。所有特征重要性的总和应该等于模型的总重要性。(例如,如果重要性由R²值测量,那么每个特征的属性应该与完整模型的R²相等)
如果⼀致性不成⽴,那么我们不能⽐较任意两个模型之间的归因重要性,因为具有较⾼分配归因特征,并不意味着模型实际上更多地依赖于该特征。
如果精度未能保持,那么我们不知道每个特征的属性如何组合以表⽰整个模型的输出。我们不能在⽅法完成后对归因进⾏规范化,因为这可能会破坏⽅法的⼀致性
这⾥推荐使⽤shap,可以全⾯的判断特征重要性,⽽且对xgboost和lightgbm都有集成,可视化也相当不错。详细可看
附:lightgbm和xgboost类似,

本文发布于:2023-07-31 20:27:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1125064.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   重要性   归因   模型   应该   版本
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图