基于SHAP进行特征选择和贡献度计算——可解释性机器学习
创作时间:
作者:
@小白创作中心
基于SHAP进行特征选择和贡献度计算——可解释性机器学习
引用
CSDN
1.
https://blog.csdn.net/qq_41301570/article/details/140998319
SHAP(SHapley Additive exPlanations)是一个Python包,用于解释任何机器学习模型的输出。SHAP的名称源自合作博弈论中的Shapley值,它构建了一个加性的解释模型,将所有特征视为“贡献者”。对于每个预测样本,模型会产生一个预测值,而SHAP值则表示该样本中每个特征的贡献度。
假设第i个样本为Xi,第i个样本的第j个特征为Xij,模型对该样本的预测值为yi,整个模型的基线(通常是所有样本的目标变量的均值)为ybase,那么SHAP值服从以下等式:
yi=ybase+f(Xi1)+f(Xi2)+⋯+f(Xik)
其中f(Xij)表示第i个样本中第j个特征的SHAP值。从直观上看,f(Xi1)表示第i个样本中第1个特征对最终预测值yi的贡献。当f(Xj1)>0时,说明该特征提升了预测值,有正向作用;反之,则说明该特征降低了预测值,有反向作用。
解释器Explainer
在SHAP中进行模型解释需要先创建一个explainer,SHAP支持很多类型的explainer(例如deep、gradient、kernel、tree、sampling等),以tree为例,它支持常用的XGB、LGB、CatBoost等树集成算法。
explainer = shap.TreeExplainer(model) # 这里的model在准备工作中已经完成建模,模型名称就是model
shap_values = explainer.shap_values(X) # 传入特征矩阵X,计算SHAP值
上面的shap_values对象是一个包含两个array的list。第一个array是负向结果的SHAP值,而第二个array是正向结果的SHAP值。通常从预测正向结果的角度考虑模型的预测结果,所以会拿出正向结果的SHAP值(拿出shap_values[1])。
局部可解释性Local Interper,Local可解释性提供了预测的细节,侧重于解释单个预测是如何生成的。它可以帮助决策者信任模型,并且解释各个特征是如何影响模型单次的决策。
使用例子
import xgboost as xgb
from sklearn.model_selection import train_test_split
import shap
import pandas as pd
data = pd.read_csv('example.csv')
X = data[['A', 'B', 'C', 'D', 'E']]
Y = data['F']
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, shuffle=False)
xgb_model = xgb.XGBRegressor(random_state=42)
xgb_model.fit(X_train, Y_train)
explainer = shap.Explainer(xgb_model)
shap_values = explainer(X_test)
shap.summary_plot(shap_values) # 提琴图
shap.plots.bar(shap_values) # Bar Plot
shap.plots.bar(shap_values.cohorts(2).abs.mean(0)) # 队列图
shap.plots.heatmap(shap_values[1:1000]) # 热图
shap.plots.waterfall(shap_values[0]) # 瀑布图
shap.initjs()
explainer = shap.TreeExplainer(xgb_model)
shap_values = explainer.shap_values(X_test)
def p(j):
return(shap.force_plot(explainer.expected_value, shap_values[j,:], X_test.iloc[j,:]))
p(0)
shap_values = explainer.shap_values(X_test)[1]
shap.decision_plot(explainer.expected_value, shap_values, X_test)
可视化结果
热门推荐
跖疣怎么治能断根好用的方法
燕窝正宗味道怎么样
桂林十大特色美食小吃,舌尖上的桂林!
工伤伤残等级评定标准及赔偿标准是什么
加州大学洛杉矶分校生物医学工程专业毕业要求高吗
天津国家海洋博物馆旅游攻略:探秘蓝色星球
网页设计师有年龄限制么?
成立业主委员会需要哪些材料和手续,需要多长时间?
黑洞是如何发光的?
人形机器人如何跑好产业“马拉松”?
C++迭代器失效问题解析
桃花是什么季节开 桃花与梅花的区别
宋代官帽上的两根长翅,皇帝上朝都得戴,究竟有什么作用?
如何在选择住房时做出合理决定?这些决定如何考虑物业管理因素?
不锈钢电解抛光工艺详解
985和211哪个更好一些?附全国985211大学排名一览表
多地实施大学生志愿服务西部计划"卫国戍边"专项的一组新闻
如何应用电桥电路的原理?
【以案释法】败诉方不交诉讼费,也会成为被执行对象
冰点脱毛的操作间隔一定需要28天吗
多吃膳食纤维,抗癌作用超乎想象!斯坦福大学新研究:它们竟能直接“激活”抗癌基因
四川七城上榜“中国魅力小城” 解码“小而美”的文旅新密码
手部触电感的原因及疾病解析
日《这本漫画真厉害! 2025》榜单出炉,各有哪些作品上榜?
中国式现代化和西方现代化的区别
传统和新型食品发酵工艺
企业财务风险分析:从认知到实践的全方位指南
机器学习入门:分类与回归算法详解及代码实战
星途重启:244亿公里外的「旅行者1号」,修好了
五劳七伤亚健康,其实中医早有“解法”