与模型无关的变量重要性度量

数据挖掘 机器学习
2021-10-10 14:47:51

我在 python 的TPOT包中使用遗传/进化算法来找到整体最佳模型(GBM、RF、SVM、弹性网等)及其调整参数。现在我需要一种方法来衡量每个变量对所选模型的预测性能的贡献。我怎样才能以模型竞争的方式做到这一点?

我目前的方法是在保留每个变量后重新训练最佳模型架构。例如,如果我的变量是,[a,b,c]我将重新训练[a,b][a,c][b,c]我将与性能最差的模型相关的已删除变量定义为最重要的变量,并将变量的预测贡献定义为预测性能的下降。我以这种方式测量所有变量的预测性能。这种方法有什么明显的错误吗?有更好的方法吗?我熟悉决策树中的变量重要性和线性模型中的 p 值,但我需要一种与模型无关的方法。

1个回答

你看过eli5包中的排列重要性方法吗?

这个想法是,他们不是在没有特征的情况下重新训练模型,这在计算上是昂贵的,而是在测试集中用随机噪声依次替换每个特征。为了获得与原始特征相同分布的随机噪声,他们只是随机打乱该特征。

请注意,与决策树中的特征重要性一样,此度量偏向于具有低基数的分类变量。