大家好,我是木木。今天给大家分享一个超酷的 Python 库,Shap。
这是一个高度模块化的Python库,主要用于解释机器学习模型的输出。Shap 利用博弈论的Shapley值来解释各个特征对模型预测结果的贡献度。

核心特点
-
模型透明 -
Shap 使得机器学习模型的决策过程变得透明,帮助开发者理解模型如何做出预测。 -
特征重要性 -
它提供了一个量化模型特征重要性的方式,明确哪些特征对预测结果影响最大。 -
跨框架兼容 -
Shap 支持多种机器学习框架,包括 XGBoost、Sklearn、Keras 等。
安装方法
要安装 Shap,您可以使用 pip:
pip install shap
项目地址:https://github.com/shap/shap
❗以下所有代码均在jupyter完成
基本使用
-
树集成示例 使用 Shap 库来解释单个预测模型的输出,可以更好地理解模型如何工作。
import xgboost
import shap
# 训练一个XGBoost模型
X, y = shap.datasets.california()
model = xgboost.XGBRegressor().fit(X, y)
# 解释模型
explainer = shap.Explainer(model)
shap_values = explainer(X)
# 可视化展示
shap.plots.waterfall(shap_values[0])

-
可视化特征影响 针对单个样本预测的解释。
# 针对单个样本预测的解释
shap.initjs()
shap.plots.force(shap_values[0])

-
对整个数据集进行预测解释
shap.initjs()
shap.plots.force(shap_values[:500])

-
根据shap值对特征排序,显示每个特征对模型影响的分布。红色的为正贡献,蓝色为负贡献
# 针对单个样本预测的解释
shap.initjs()
shap.plots.beeswarm(shap_values)

高级功能实现
深入特征依赖分析 预期梯度融合了多种解释方法,允许使用整个数据集作为背景分布,并进行局部平滑。本方法可用于解释 VGG16 模型第7层如何影响输出概率,这需要较深的理解和分析技巧。
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
import keras.backend as K
import numpy as np
import json
import shap
# 加载模型
model = VGG16(weights='imagenet', include_top=True)
X,y = shap.datasets.imagenet50()
to_explain = X[[39,41]]
# 加载数据
url = "https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json"
fname = shap.datasets.cache(url)
with open(fname) as f:
class_names = json.load(f)
# 解释输入到第七层模型的数据是如何与最高的两种类型所匹配
def map2layer(x, layer):
feed_dict = dict(zip([model.layers[0].input], [preprocess_input(x.copy())]))
return K.get_session().run(model.layers[layer].input, feed_dict)
e = shap.GradientExplainer(
(model.layers[7].input, model.layers[-1].output),
map2layer(X, 7),
local_smoothing=0 # std dev of smoothing noise
)
shap_values,indexes = e.shap_values(map2layer(to_explain, 7), ranked_outputs=2)
# 获取类别名称
index_names = np.vectorize(lambda x: class_names[str(x)][1])(indexes)
# 可视化
shap.image_plot(shap_values, to_explain, index_names)

小结
Shap 是一个极具启发性和实用性的库,能够帮助开发者和数据科学家深入理解机器学习模型的内在机制。通过详细的特征贡献分析,Shap 使模型的解释性达到了一个新的水平。
—— End ——
【限时福利】专为粉丝打造的《Python入门到入魔保姆级教程》来啦!
现在扫码或者添加 vx:257735 即可领取
原文始发于微信公众号(木木夕咦):Shap,一个超酷的python库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/285314.html