置換重要度

Python 的 Explainable AI

Fouad Trad

Machine Learning Engineer

洗牌音符來判斷樂器的重要性

一張樂團演奏不同樂器的圖片。

Python 的 Explainable AI

置換重要度

  • 與模型無關的方法
  • 評估特徵重要度
    • 衡量特徵洗牌對效能的影響
  • 高度通用

神經網路結構示意圖:多層隱藏層,每層含多個神經元。

Python 的 Explainable AI

置換重要度實作

含 5 個特徵與已訓練 ML 模型的資料集示意圖。

Python 的 Explainable AI

置換重要度實作

將資料集送入 ML 模型以取得基準效能的示意圖。

Python 的 Explainable AI

置換重要度實作

將其中一個特徵洗牌:原值為 [1, 2, 3, 4],洗牌後為 [4, 2, 1, 3]。將洗牌後的資料集送入 ML 模型以取得洗牌效能。

Python 的 Explainable AI

置換重要度實作

被洗牌特徵的重要度與效能下降幅度成正比的示意圖。

Python 的 Explainable AI

置換重要度實作

效能大幅下降表示該特徵很重要;小幅下降則表示重要度較低。

Python 的 Explainable AI

Admissions 資料集

GRE 分數 TOEFL 分數 大學評等 SOP LOR CGPA 錄取機率 錄取
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

資料位於: X_trainy_train

Python 的 Explainable AI

MLPClassifier

from sklearn.neural_network import MLPClassifier
model = MLPClassifier(hidden_layer_sizes=(10,10))

model.fit(X_train, y_train)
Python 的 Explainable AI

置換重要度

from sklearn.inspection import permutation_importance

result = permutation_importance(model,
X_train, y_train,
n_repeats=10,
random_state=42,
scoring='accuracy')
print(result.importances_mean)
[0.16213568 0.13831658 0.10575377 0.10522613 0.11741206 0.20072864]
Python 的 Explainable AI

視覺化重要度

import matplotlib.pyplot as plt
plt.bar(X_train.columns,
        result.importances_mean)

置換重要度長條圖,顯示 CGPA 最高。

Python 的 Explainable AI

與模型特定方法的比較

import matplotlib.pyplot as plt
plt.bar(X_train.columns, 
        result.importances_mean)

置換重要度長條圖,顯示 CGPA 最高。

邏輯斯迴歸
plt.bar(X_train.columns, np.abs(log_reg.coef_[0]))

邏輯斯迴歸係數長條圖,顯示 CGPA 最高。

Python 的 Explainable AI

一起來練習吧!

Python 的 Explainable AI

Preparing Video For Download...