机器学习模型解释性工具SHAP
如下图,SHAP支持模型解释性,可用于抽取特征对结果的贡献。
Github地址:https://github.com/slundberg/shap
案例:
1、数据集:
# dataset:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html
# diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。
# 数据集中的特征值总共10项, 如下:# 年龄# 性别#体质指数#血压#s1,s2,s3,s4,s4,s6 (六种血清的化验数据)
#10个t特征每个都做了均值中心化处理,然后又用标准差乘以个体数量调整了数值范围。验证就会发现任何一列的所有数值平方和为1.
2、代码:
#https://github.com/slundberg/shap
#https://slundberg.github.io/shap/notebooks/plots/decision_plot.html
import lightgbm as lgb
import shap# train XGBoost model
diabetes=datasets.load_diabetes()
x_train,x_test,y_train,y_test=train_test_split(diabetes.data,diabetes.target,test_size=0.1, random_state=10)
print(type(x_test))
d_train = lgb.Dataset(x_train, label=y_train)
d_test = lgb.Dataset(x_test, label=y_test)params = {"max_bin": 512,"learning_rate": 0.05,"boosting_type": "gbdt","objective": "regression","metric": "regression_l2","num_leaves": 10,"verbose": -1,"min_data": 100,"boost_from_average": True,"random_state": random_state
}model = lgb.train(params, d_train, 10000, valid_sets=[d_test], early_stopping_rounds=50, verbose_eval=1000)# explain the model's predictions using SHAP
explainer = shap.TreeExplainer(model)
expected_value = explainer.expected_value
if isinstance(expected_value, list):expected_value = expected_value[1]
print(f"Explainer expected value: {expected_value}")with warnings.catch_warnings():warnings.simplefilter("ignore")shap_values = explainer.shap_values(x_test)[1]shap_interaction_values = explainer.shap_interaction_values(x_test)
if isinstance(shap_interaction_values, list):shap_interaction_values = shap_interaction_values[1]features_display = ['Age','Gender','BMI','BloodPressure','S1','S2','S3','S4','S5','S6']
shap.decision_plot(expected_value, shap_values, features_display)
更多图示可参考,目前说支持xgboost、lgbm、sklearn以及深度keras\tf模型,深度学习模型还没试验,xgbosst在1.0.0版本据说支持,我安装的是1.2.0不支持,sklearn我用lr也不支持。
机器学习模型解释性工具SHAP相关推荐
- combo:机器学习模型合并工具库
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 机器学习中的模型合并(model combination)可以通过合并多个模型达到提升 ...
- 开源机器学习模型管理工具DVC介绍
算法工程师往往在使用算法的过程中要不断地调整参数去找到最好的效果,俗称"调参民工".在不断的调参过程中,会产生各种各样的模型,如何记录好这些参数与模型效果对应的关系,往往另算法工程 ...
- 机器学习模型解释性之Shapley Value
机器学习现在是以迅雷不及盗铃之势席卷了几乎所有科技.商业.医疗.生活领域,基于gbdt的各种优化以及ensemble横扫所有数据竞赛,cnn则是霸榜图像领域.看起来,时代已经变了.但,等等,还有一个问 ...
- 【Tools】神经网络、深度学习和机器学习模型可视化工具——Netron
背景 有时候我们写完深度学习模型后,想看看代码实现的模型和我们预期是否一致,但是没有一个好的工具.最近发现有一个软件Netron支持对一部分深度学习模型可视化,源码地址.Netron 支持 ONNX. ...
- 机器学习模型可解释性的6种Python工具包,总有一款适合你!
开发一个机器学习模型是任何数据科学家都期待的事情.我遇到过许多数据科学研究,只关注建模方面和评估,而没有解释. 然而,许多人还没有意识到机器学习可解释性在业务过程中的重要性.以我的经验,商业人士希望知 ...
- 谈谈机器学习模型的部署
随着机器学习的广泛应用,如何高效的把训练好的机器学习的模型部署到生产环境,正在被越来越多的工具所支持.我们今天就来看一看不同的工具是如何解决这个问题的. 上图的过程是一个数据科学项目所要经历的典型的过 ...
- 机器学习模型可解释性进行到底 —— SHAP值理论(一)
最近在系统性的学习AUTOML一些细节,本篇单纯从实现与解读的角度入手, 因为最近SHAP版本与之前的调用方式有蛮多差异,就从新版本出发,进行解读. 不会过多解读SHAP值理论部分,相关理论可参考: ...
- 还在随缘炼丹?一文带你详尽了解机器学习模型可解释性的奥秘
一只小狐狸带你解锁NLP/ML/DL秘籍 正文来源:腾讯技术工程 所谓炼丹,就是将大量灵材使用丹炉将其凝炼成丹.练成的灵丹蕴含灵材的大部分特性,方便携带,容易吸收.高级仙丹在炼制中更是能吸收天地灵气从 ...
- 机器学习模型可解释性的详尽介绍
机器之心平台 来源:腾讯技术工程 模型可解释性方面的研究,在近两年的科研会议上成为关注热点,因为大家不仅仅满足于模型的效果,更对模型效果的原因产生更多的思考,这样的思考有助于模型和特征的优化,更能够帮 ...
最新文章
- 5G NR — 国内运营商的频段和带宽划分
- keyshot卡住了还能保存吗_相机希望你知道的13件事 keyshot相机切换事件
- 判断素数或者求出素数的基本算法 《挑战程序设计竞赛》
- 母函数 入门 + 模板
- linux下三三维建模软件,SolidWorks是基于()原创的三维实体建模软件。A.UNIXB.WindowsC.LinuxD.Dos...
- mysql 导入导出 csv_mysql文件导入导出为csv格式
- 动手学PyTorch知识点汇总
- Kerberos的工作原理
- c语言 格式化硬盘,在Windows 7上用c ++格式化硬盘(Formatting a hard disk in c++ on Windows 7)...
- Python 撞库与防御策略
- python统计形容词权重然后排序
- 中企海外周报 | 华为在德国发布mate30系列手机;一汽新车亮相法兰克福车展
- 大多数程序员单身的原因(转)
- Linux内核之——等待队列wait queue
- 如何同时或者按顺序间隔启动多个程序
- 二分图(染色法+匈牙利法)学习笔记
- 智能暖风机——6.利用TM1650实现显示功能
- 机器人军团防护罩_冒险岛贴吧 - 1000A导轨保护罩Y轴保护盖板的简单介绍
- python 梦幻西游_tensorflow实践:梦幻西游人物弹窗识别(二)
- 网络安全事件应急演练
热门文章
- hadoop 开启防火墙_Hadoop部署一Hadoop安装
- win7html文件,教你win7浏览器打不开本地html文件格式的解决方法
- 调用 标签打印软件_标签打印软件如何制作陶瓷标签模板
- 专业软件测试面试题汇总
- 转 使用 HttpClient 4 进行文件上传
- HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
- 读未来产品的设计(1)
- Android 用adb 打印linux内核调试信息dmesg和kmsg命令
- Android MTK平台最完备的开机动画修改教程
- Android JNI 使用的数据结构JNINativeMethod详解