Поддерживает ли SHAP в Python модели Keras или TensorFlow при использовании DeepExplainer? - PullRequest
0 голосов
/ 30 апреля 2020

В настоящее время я использую пакет SHAP, чтобы определить вклад функции. Я использовал подход для XGBoost и RandomForest, и он работал очень хорошо. Поскольку данные, над которыми я работаю, являются последовательными данными, я попытался использовать LSTM и CNN для обучения модели, а затем получить значение функции, используя SHAP's DeepExplainer; но это постоянно выкидывает ошибку. Я получаю ошибку:

AssertionError: <class 'keras.callbacks.History'> is not currently a supported model type!.

Я также прилагаю пример кода (LSTM). Было бы полезно, если бы кто-то мог помочь мне с этим.

shap.initjs()
model = Sequential()
model.add(LSTM(n_neurons, input_shape=(X.shape[1],X.shape[2]), return_sequences=True))
model.add(LSTM(n_neurons, return_sequences=False))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
h=model.fit(X, y, epochs=nb_epochs, batch_size=n_batch, verbose=1, shuffle=True)
background = X[np.random.choice(X.shape[0],100, replace=False)]
explainer = shap.DeepExplainer(h,background)

1 Ответ

1 голос
/ 30 апреля 2020

Возвращаемое значение model.fit не является экземпляром модели; скорее это история обучения (то есть статистика, такая как потеря и метри c значения) как экземпляр класса keras.callbacks.History. Вот почему вы получаете указанную ошибку при передаче возвращенного объекта History в shap.DeepExplainer. Вместо этого вы должны передать сам экземпляр модели:

explainer = shap.DeepExplainer(model, background)
...