可解释性指标

Python 可解释性 AI

Fouad Trad

Machine Learning Engineer

一致性

  • 评估在不同子集上训练时解释的稳定性
  • 一致性低 → 解释不稳健

显示数据集被分为两个子集:子集 1 和子集 2 的图示。

Python 可解释性 AI

一致性

  • 评估在不同子集上训练时解释的稳定性
  • 一致性低 → 解释不稳健

在每个子集上训练一个模型。

Python 可解释性 AI

一致性

  • 评估在不同子集上训练时解释的稳定性
  • 一致性低 → 解释不稳健

每次在子集上训练模型后,提取特征重要性,并计算它们的余弦相似度。

Python 可解释性 AI

用余弦相似度衡量一致性

 

 

 

图示一致性关键取值及含义:1 表示解释高度一致。

Python 可解释性 AI

用余弦相似度衡量一致性

 

 

 

图示一致性关键取值及含义:1 表示解释高度一致,0 表示无一致性。

Python 可解释性 AI

用余弦相似度衡量一致性

 

 

 

图示一致性关键取值及含义:1 表示解释高度一致,0 表示无一致性,-1 表示相反的解释。

Python 可解释性 AI

录取数据集

GRE 分数 TOEFL 分数 学校评级 SOP LOR CGPA 录取概率
337 118 4 4.5 4.5 9.65 0.92
324 107 4 4 4.5 8.87 0.76
316 104 3 3 3.5 8 0.72
322 110 3 3.5 2.5 8.67 0.8
314 103 2 2 3 8.21 0.45

 

  • X1, y1:数据集的第一部分
  • X2, y2:数据集的第二部分
  • model1, model2:随机森林回归器
Python 可解释性 AI

计算一致性

from sklearn.metrics.pairwise import cosine_similarity

explainer1 = shap.TreeExplainer(model1) explainer2 = shap.TreeExplainer(model2)
shap_values1 = explainer1.shap_values(X1) shap_values2 = explainer2.shap_values(X2)
feature_importance1 = np.mean(np.abs(shap_values1), axis=0) feature_importance2 = np.mean(np.abs(shap_values2), axis=0)
consistency = cosine_similarity([feature_importance1], [feature_importance2]) print("Consistency between SHAP values:", consistency)
Consistency between SHAP values: [[0.99706516]]
Python 可解释性 AI

忠实性

  • 评估重要特征是否影响模型预测
  • 低忠实性 → 会误导对模型推理的信任
  • 适用于敏感场景

展示模型对某输入样本生成原始预测的图示。

Python 可解释性 AI

忠实性

  • 评估重要特征是否影响模型预测
  • 低忠实性 → 会误导对模型推理的信任
  • 适用于敏感场景

使用 SHAP 或 LIME 对该原始预测做局部解释。

Python 可解释性 AI

忠实性

  • 评估重要特征是否影响模型预测
  • 低忠实性 → 会误导对模型推理的信任
  • 适用于敏感场景

将修改后的样本输入模型以生成新预测。

Python 可解释性 AI

忠实性

  • 评估重要特征是否影响模型预测
  • 低忠实性 → 会误导对模型推理的信任
  • 适用于敏感场景

展示忠实性的计算公式:新预测与原始预测之差的绝对值。

Python 可解释性 AI

计算忠实性

X_instance = X_test.iloc[[0]]

original_prediction = model.predict_proba(X_instance)[0, 1] print(f"Original prediction: {original_prediction}")
Original prediction: 0.43

所选样本的 LIME 特征重要性解释。

Python 可解释性 AI

计算忠实性

X_instance['GRE Score'] = 310  


new_prediction = model.predict_proba(X_instance)[0, 1] print(f"Prediction after perturbing {important_feature}: {new_prediction}")
faithfulness_score = np.abs(original_prediction - new_prediction) print(f"Local Faithfulness Score: {faithfulness_score}")
Prediction after perturbing GRE Score: 0.77

Local Faithfulness Score: 0.34
Python 可解释性 AI

Passons à la pratique !

Python 可解释性 AI

Preparing Video For Download...