经过训练的GradientBoostedClassifier赋予任何功能零重要性

时间:2018-10-20 11:15:21

标签: python machine-learning scikit-learn feature-selection ensemble-learning

首先,有关该场景的一些事实: 我尝试在scikit-learn中使用28个功能(已完成功能工程)来预测一些课程。我有一个庞大的数据集,我必须根据一个对模型决策过程产生重大影响的特定功能,将其分成7个数据集。

最后,我有X个数据集,并为每个数据集使用GridSearch来查找最佳/良好的超参数集。为此,我使用了4个模型(决策树桩作为基准,决策树,RandomForest,GradientBoostedTrees)。之后,我想分析最佳估计器以提取特征重要性,并针对每个数据集独立进行进一步的特定特征工程。

对我来说,前4个数据集功能的重要性似乎还不错。但是,从第5个数据集开始,训练有素的GBDT对所有要素都赋予零要素重要性。其他分类器的行为符合预期。

对于某些情况,这是一个具体示例:

一个数据集的特征重要性:

feature importance of one dataset

模型精度:

Model accuracy

我在互联网上搜索了这个问题,发现答案只有一个相关的线索,那就是除了“请给我更多的上下文信息”和“也许有一些错误?”之外,这是一个训练有素的分类器可以学到些微不足道的事实。但是,我分析了GBDT的所有树,实际上,似乎没有使用任何功能,每棵树都有一层,看起来像这样

digraph Tree {
node [shape=box];
0 [label = friedman_mse = 0.135
   samples = 106
   values = 0.054
];
}

有人对此有解释吗?非常感谢:)

0 个答案:

没有答案