用于决策树的 one-hot 编码后如何解释特征重要性

Posted

技术标签:

【中文标题】用于决策树的 one-hot 编码后如何解释特征重要性【英文标题】:How to explain feature importance after one-hot encode used for decision tree 【发布时间】:2017-02-24 03:10:57 【问题描述】:

我知道决策树有由 Gini 计算的 feature_importance 属性,它可以用来检查哪些特征更重要。

但是,对于 scikit-learn 或 Spark 中的应用程序,它只接受数字属性,因此我必须将字符串属性转换为数字属性,然后对其进行 one-hot 编码器。将特征放入决策树模型时,它是 0-1 编码而不是原始格式,我的问题是,如何解释原始属性的特征重要性?在尝试解释特征重要性时,我应该避免使用 one-hot encoder 吗?

谢谢。

【问题讨论】:

您可以尝试将原始特征的特征重要性估计为 OHE 后相应特征的特征重要性之和。为此,您必须了解 OHE 是由某些特定功能创建的。 @IbraimGaniev 感谢您的帮助:) 但是,对于 OHE,很难知道每个功能中有多少个 0-1 变量...我不确定这是否是标准方法。 . 嗯,OHE 存储了 feature_indices_ 参数,从中你可以知道哪些分类特征被分解为哪些二元特征。 【参考方案1】:

从概念上讲,您可能希望使用符合排列重要性的方法。基本思想是,您获取原始数据集,并一次随机打乱每列 1 的值。然后,您使用模型对扰动数据进行评分,并将性能与原始性能进行比较。如果一次完成 1 列,您可以通过销毁每个变量、将其索引到损失最大的变量(将变为 1 或 100%)来评估您所遭受的性能损失。如果您可以在 1 次热编码之前对原始数据集执行此操作,那么您将获得一个将它们整体组合在一起的重要性度量。

【讨论】:

以上是关于用于决策树的 one-hot 编码后如何解释特征重要性的主要内容,如果未能解决你的问题,请参考以下文章

将字符串表示为决策树中的特征,词汇量为 200(带或不带 one-hot 编码)

一次热编码后决策树中的特征解释

如何解释决策树的图形结果并找到信息最多的特征?

为啥要用one-hot编码

用于返回下一个特征以拆分树的决策树实现

模式识别 - 决策树问题研究