基于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)
可视化结果
热门推荐
从房屋看护到邮轮旅行:退休人士专属省钱游世界指南
百岁老人教你如何过好退休生活:从作息到心态的全方位指南
从绿叶菜到土豆:10种蔬菜的正确储存方式
社区团购激发冷链技术创新,生鲜电商迎来高质量发展
古诗词配音文案指南:让经典诗词“声”入人心
中原大佛:从世界之最到没落困境
揭秘中原大佛:非遗传承人林胜标的匠心之作
儿童面部痤疮全程管理:四阶段护理要点详解
固定资产的会计处理与税务处理
折旧如何计算更为合理?这种合理的计算方式有何优势?
高中物理学习路线图:从基础到拔高,助你轻松掌握物理知识
古董收藏入门:九大维度教你辨真伪
古玩市场捡漏指南:七大技巧助你淘到真宝
Excel邮件合并:秒变在职证明达人
如何写出高逼格的在职证明?
在职证明的坑,你踩过几个?
轴承座的种类及其选择指南
轴承安装与保养的操作与注意事项
心理健康体检:改善医患关系的新路径
小学数学老师教你如何点燃学生学习热情🔥
新型师生关系:数学班主任的制胜法宝
王老师班级管理神器:小组长轮流制
数学班主任的沟通艺术:如何高效与家长互动
日常骑行,要求125CC踏板车,如何选?
150cc和125cc摩托车排量只差25cc,为什么马力却差这么多?
上海社区食堂推出冬季萝卜菜品,4道家常菜谱同步奉上
索菲亚大教堂:哈尔滨的音乐艺术之旅
冬日打卡哈尔滨四大历史建筑:文化之旅,历史对话
心理学专业VS应用心理学:哪个更适合想当心理医生的你
报考心理学专业,物理生物是关键:高考选科全攻略