其他
MLK | 如何解决机器学习树集成模型的解释性问题
MLK,即Machine Learning Knowledge,本专栏在于对机器学习的重点知识做一次梳理,便于日后温习,这篇文章主要是结合前几天看到的一个问题,然后结合自己的理解来写的。
🎥 前情回顾
MLK | 一文理清 深度学习前馈神经网络
MLK | 机器学习常见算法优缺点了解一下
🚙 Index
机器学习模型不可解释的原因
特征重要度方法盘点
SHAP可能是出路,SHAP到底是什么
SHAP的案例展示
01 机器学习模型不可解释的原因
02 特征重要度方法盘点
有2个模型,Model A 和 Model B,其中A和B完全一致,但是我们在计算预测值的时候,强行给 Model B 的 特征 Cough 加上 10分。如下图所示(点击看大图):
03 SHAP可能是出路,SHAP到底是什么
SHAP(Shapley Additive exPlanation)是解释任何机器学习模型输出的统一方法。SHAP将博弈论与局部解释联系起来,根据期望表示唯一可能的一致和局部精确的加性特征归属方法。
Definition 2.1. Additive feature attribution methods have an explanation model g that is a linear function of binary variables
04 SHAP的案例展示
0401 SHAP的安装
or
conda install -c conda-forge shap
0402 对树集成模型进行解释性展示
import shap
# load JS visualization code to notebook
shap.initjs()
"""训练 XGBoost 模型,SHAP里提供了相关数据集"""
X,y = shap.datasets.boston()
model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)
"""
通过SHAP值来解释预测值
(同样的方法也适用于 LightGBM, CatBoost, and scikit-learn models)
"""
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
# 可视化解释性 (use matplotlib=True to avoid Javascript)
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])
output:
# visualize the training set predictions这个数据集有这些特征:'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT'
shap.force_plot(explainer.expected_value, shap_values, X)
output:
shap.dependence_plot("RM", shap_values, X)
output:
shap.summary_plot(shap_values, X)