置换重要性

Python 可解释性 AI

Fouad Trad

Machine Learning Engineer

打乱音符来评估乐器的重要性

图片:一支乐队演奏不同乐器。

Python 可解释性 AI

置换重要性

  • 与模型无关的方法
  • 评估特征重要性
    • 衡量打乱特征对性能的影响
  • 高度通用

图示:神经网络结构——多层隐藏层,每层含多个神经元。

Python 可解释性 AI

置换重要性实操

图示:包含 5 个特征的数据集和一个已训练的模型。

Python 可解释性 AI

置换重要性实操

图示:将数据集输入模型以获取基线性能。

Python 可解释性 AI

置换重要性实操

图示:将某个特征打乱。原值为 [1, 2, 3, 4],打乱后为 [4, 2, 1, 3]。将打乱的数据集输入模型得到打乱后的性能。

Python 可解释性 AI

置换重要性实操

图示:被打乱特征的重要性与性能下降幅度成正比。

Python 可解释性 AI

置换重要性实操

图示:显著下降表示该特征重要性高;小幅下降表示重要性低。

Python 可解释性 AI

招生数据集

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_train, y_train

Python 可解释性 AI

MLPClassifier

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

model.fit(X_train, y_train)
Python 可解释性 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 可解释性 AI

可视化重要性

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

置换重要性柱状图,显示 CGPA 重要性最高。

Python 可解释性 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 可解释性 AI

¡Vamos a practicar!

Python 可解释性 AI

Preparing Video For Download...