基于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)
可视化结果
热门推荐
微波炉加热的食物还有营养吗?
敏捷迭代开发:如何进行有效的迭代规划
尿酸控制在多少合适?出现这些症状,尿酸可能已超标
膝盖关节积液是什么原因造成的膝关节
骨灰盒下葬有哪些忌讳需要注意?
茶艺表演入门到精通:从基础技巧到舞台表演的全方位指南
《美丽新世界》和《一九八四》——摧毁我们的两剂毒药
1966年属马人2025年整体运势如何?1966年属马人2025年运势详解
央视一套:3分钟学会预防近视的握笔姿势!
哪吒为何火出圈——中国动画电影海外市场观察
阿恩·斯洛特继任利物浦,这位新帅什么来头?
一座城市选择与电动自行车“友好共处”
哺乳期能吃甘蔗吗
入睡困难怎么办?这些睡前手机使用习惯一定要改善
“运动后写作业再也不发脾气了” 学校运用AI激发孩子们的运动兴趣
动物所探索DNA转座子多样性并拓展基因工程工具箱
深入探讨赫奇模型在金融行业的应用与影响
电脑看电影卡顿怎么办?原因分析与解决方案全攻略
千年老二李宗伟,4进世锦赛决赛都是亚军,都输给了谁?
2024买二手笔记本,手把手教你怎么验货
剃光头,能改善发质、发量吗?
南京明孝陵游览攻略:三条经典路线,总有一条适合你
巴沙鱼烹饪全攻略:从选购到多种美味做法详解
人到了70岁以后,要注意两亲不走,两地不去,两钱不花,你怎么看?
头孢拉定片的安全剂量规范
Minecraft模组《吸血鬼/血族传说》:两大阵营的奇幻冒险
海口社保证明怎么查询打印?
“与苏东坡同游园山”!这个露天博物馆太赞了
评分最高的十部励志剧:第一评分高达9.7,良医上榜
智能电子公交站牌系统方案介绍