有任何方法可以使Keras具有可变的重要性? 我正在寻找一种适当或最佳的方法,以在使用Keras创建的神经网络中获得可变的重要性。我目前这样做的方式是,我只是将变量的权重(不是偏见)

问题描述 投票:0回答:3
teque5

,即将示例中的变量置于变量或使用

eli5 package
tensorflow deep-learning keras keras-layer keras-2
3个回答
19
投票

from keras.wrappers.scikit_learn import KerasClassifier, KerasRegressor import eli5 from eli5.sklearn import PermutationImportance def base_model(): model = Sequential() ... return model X = ... y = ... my_model = KerasRegressor(build_fn=basemodel, **sk_params) my_model.fit(X,y) perm = PermutationImportance(my_model, random_state=1).fit(X,y) eli5.show_weights(perm, feature_names = X.columns.tolist())

由于一切都会沿网络混合在一起,仅第一层就无法告诉您每个变量的重要性。以下层也可以增加或降低其重要性,甚至使一个变量影响另一个变量的重要性。第一层中的每个神经元本身也都会给出每个变量的重要性,因此并不是那么简单。 i建议您使用包含零阵列的输入,仅使您要研究的变量在输入中为1。 ,您可以单独看到每个变量的结果。即使这仍然不会帮助您解决一个变量增加另一个变量的重要性的情况。

这不是那么简单。例如,在后期阶段可以将变量降低到0。

我会看一下

18
投票
(局部可解释的模型 - 不合骨解释)。基本思想是将一些输入设置为零,将其通过模型,看看结果是否相似。如果是,那么该变量可能并不重要。但是还有更多关于它的信息,如果您想知道它,那么您应该阅读纸张。

在github上看到

marcotcr/lime


这是一个相对较旧的文章,具有相对较旧的答案,因此我想提出另一个建议,以确定对您的Keras模型的特征重要性。

model.predict(inputs)

还允许您使用需要3D输入的图层来处理keras型号,而

8
投票
则不能。

为了避免双重启动,我想在使用

SHAP

.时对stackoverflow上的类似问题提供答案。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.