XGBoost中特征重要性计算方法对比

XGBoost作为比赛大杀器,内置了几种重要性函数,今天我们就在这篇文章中梳理三种常见的特征重要性计算方法,并思考他们的使用场景。

xgboost.plot_importance(booster, ax=None, height=0.2, xlim=None, ylim=None, 
title='Feature importance', xlabel='F score', ylabel='Features', fmap='', 
importance_type='weight', max_num_features=None, grid=True, 
show_values=True, **kwargs)

在上边函数中,我们可以通过修改importance_type参数改变如何计算特征之间的importance。可选的取值为:“weight”, “gain”, “cover”

weight

”weight” is the number of times a feature appears in a tree

  • 指在子树模型进行分类时,用到的特征次数,根据特征被用到的次数进行排序。
  • 该指标会将数值特征给予更高的权重,因为数值特征往往是连续的,变数也比分类特征多,分裂的空间就越大,所以这个指标会偏向数值特征,忽略分类特征。

gain

”gain” is the average gain of splits which use the feature

  • 这是信息增益的泛化概念。是指在节点分裂是,该特征带来的信息增益。
  • gain用到了熵,他可以方便的找出最直接的特征,即如果某个特征下label比较单一,那么这个特征就会比较重要。

cover

”cover” is the average coverage of splits which use the feature where coverage is defined as the number of samples affected by the split

  • 形象来说,就是树模型在分裂时,特征下的叶子结点涵盖的样本数除以特征用来分裂的次数。分裂越靠近根部,cover 值越大。
  • cover对于分类特征更友好。

总结

如果有下游业务方,更建议用 cover 的特征重要性计算方法。当然,如果是单纯的模型调优,gain 能指出最重要的特征。这些特征,某些场景下还能总结成硬规则。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容