ランダムフォレストなどの深層学習以外の方法であれば、どの特徴量が効いているのか数値で出力することが出来ます。
「Permutation Importance」が類似の手法です
参考
AIを脱Black Box! XAI(Explainable Artificial Intelligence)を勉強する〜Permutation Importance〜
Kerasで作ったNNモデルにおける特徴量の重要度を出す(Permutation Importance)
skorch
を使うとpytorchをscikit-learnのように使うことができるので、
Pytorch の軽量ラッパー、skorch で回帰・分類を試してみた
で解説されてる
google colabのコード
を使って、「Permutation Importance」を算出できるか、試してみました
コードの先頭に、下記を追加
python
1import pandas as pd
2from sklearn.inspection import permutation_importance
コードの「分類」と書かれてるところのすぐ上(「回帰」の最後)に、下記を追加
python
1pi_net_regr = permutation_importance(net_regr, X_test, y_test, n_repeats=100, random_state=SEED)
2
3boston_dataset = load_boston()
4pi_net_regr_df = pd.DataFrame({"importances_mean":pi_net_regr["importances_mean"], "importances_std":pi_net_regr["importances_std"]}, index=boston_dataset.feature_names)
5display(pi_net_regr_df)
6
7pi_net_regr_df.sort_values("importances_mean").importances_mean.plot.barh()
8plt.show()
コードの末尾に、下記を追加
python
1pi_net = permutation_importance(net, X_test, y_test, n_repeats=100, random_state=SEED)
2
3iris_dataset = load_iris()
4pi_net_df = pd.DataFrame({"importances_mean":pi_net["importances_mean"], "importances_std":pi_net["importances_std"]}, index=iris_dataset.feature_names)
5display(pi_net_df)
6
7pi_net_df.sort_values("importances_mean").importances_mean.plot.barh()
8plt.show()
上記を全部行った後に、google colabのメニューの「ランタイム」→「すべてのセルを実行」をクリックしたら、「回帰」も「分類」も、それっぽいものが計算されてグラフが表示されました
上記の結果が正しいかどうかは分かりませんので、実際に同様なことをやる時には結果が分かってるデータを使って検証してください