分类变量的平均重要性增益

数据挖掘 xgboost 分类数据 预测重要性
2022-02-06 12:20:11

假设我有一组M个分类变量,其中一些具有不同数量的类别(例如,var1有五个类别,var2有三个等)。在对M个分类变量执行 one-hot 编码后,我在数字目标Y
上训练 XGBoost 模型,从而创建一组虚拟输入。

在查看模型结果时,我得到了每个特征类别的重要性增益表,这意味着它们在模型中的重要性。玩具结果如下所示:

feature | category               gain
       var1 | cat3                 25
       var2 | cat1                 20
       var1 | cat5                 12
       var5 | cat6                 11
       var4 | cat1                  8
           ...                    ...

我要问的主要问题如下:

  • 为了了解一个变量的整体重要性,而不仅仅是它的一个类别(例如,有多少var1整体重要,而不仅仅是var1的类别cat3),取所有变量的平均值是否有意义?每个特征的重要性增益作为重要性指标?

由于特征可能具有不同数量的类别,因此这些收益的总和可能不正确,但我想知道这些收益的平均值是否可以作为特定特征整体重要性的指标。

我已经看过一些这样的问题,但对这个主题没有太多了解。

1个回答

我认为您正在寻找信息增益。

您为 1 个变量计算它的方式是:

假设您的标签变量是二进制的。

1)计算每个类别的标签百分比,例如您有三个类别:“US”、“UK”、“Ger”,如果有 5 个标签标记为 1,则与“UK”相关的区域为 3,2与“美国”和 0 与“德国”,您的百分比将是:[3/5, 2/5, 0/5]

2) 对每个标签和聚合执行步骤 1)

3)计算每个百分比的熵

4)信息增益=聚合百分比的熵-加权百分比的总和。权重只是标签/总数中的实例数。例如,如果我们有标签 = [1,1,0,0,1,1,0,0,1],则标签 1 的百分比熵将加权 5/9,而标签 0 百分比的熵将加权 4/9。

然后计算每个变量的 IG,并进行比较!

附带说明一下,如果您正在处理大量分类变量,您可能需要研究 LightGBM 或 CatBoost,这些算法允许您指定分类变量而无需创建一个热编码向量,并且它们为这些变量提供了特征重要性。