计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1393|回复 Reply: 7

[Python] Linux下利用SHAP对机器学习模型进行合理解释

[复制链接 Copy URL]

1061

帖子

16

威望

5778

eV
积分
7159

Level 6 (一方通行)

計算化学の社畜

发表于 Post on 2022-7-4 21:23:50 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 冰释之川 于 2022-12-8 13:54 编辑

前文参见:Linux下Scikit-learn机器学习实例脚本》(http://bbs.keinsci.com/thread-30547-1-1.html

好不容易用Scikit-learn对某个数据集进行机器学习,并且得到了不错的模型,但如果只是看看MSE或者R方等度量指标,抑或是对新样本进行预测,那总感觉缺点啥……
对的,缺的就是对ML模型进行“合理化”分析。

虽然ML在很多人眼里就是个大黑箱,似乎很难对黑箱进行剖析,但是有了SHAP之后,一切都变了,都变了,变了……

本文利用SHAP库编写了一个懒人脚本,对Scikit-learn库中常用ML模型进行了剖析。

不知道SHAP是啥的童鞋,请访问SHAP官网https://shap.readthedocs.io/en/latest/index.html
不知道怎么装SHAP的同学,参见SHAP官网


shap_header.png

以下是基于1502_LYL.csv数据集利用RFR模型预测CUTLOSS(已经“腌制”成CUTLOSS_RFR_best.pkl文件)输出变量的SHAP分析图:
CUTLOSS_RFR_best_importance.png
CUTLOSS_RFR_best_dependence.png
CUTLOSS_RFR_best_force.png
CUTLOSS_RFR_best_waterfall.png
CUTLOSS_RFR_best_summary.png
CUTLOSS_RFR_best_target_interaction.png
CUTLOSS_RFR_best_top_interactions.png

懒人脚本(Model_explanation.py)下载地址
shap.zip (680.94 KB, 下载次数 Times of downloads: 65)

评分 Rate

参与人数
Participants 12
威望 +1 eV +50 收起 理由
Reason
ABB + 3
Chlorine@Chem + 5 赞!
StormSpirts + 5 不明觉厉
muuu2333 + 5 好物!
丁越 + 5 赞!
panernie + 5 好萌好萌好萌!
ggdh + 5 你搞的我完全看不懂啊 慌的一批
hdhxx123 + 5 GJ!
QH1995 + 5 谢谢分享
泡泡媛 + 2 整挺好
sobereva + 1
plus + 5

查看全部评分 View all ratings

Stand on the shoulders of giants

1

帖子

0

威望

9

eV
积分
10

Level 1 能力者

发表于 Post on 2022-8-9 10:15:03 | 显示全部楼层 Show all
冰冰大佬 为什么我读取模型的时候 报错
AttributeError: 'RandomForestRegressor' object has no attribute '_final_estimator'

1061

帖子

16

威望

5778

eV
积分
7159

Level 6 (一方通行)

計算化学の社畜

 楼主 Author| 发表于 Post on 2022-8-9 13:24:31 | 显示全部楼层 Show all
ABB 发表于 2022-8-9 10:15
冰冰大佬 为什么我读取模型的时候 报错
AttributeError: 'RandomForestRegressor' object has no attribut ...

我这边*.pkl保存的是使用pipeline流水线给出最佳模型。
前文参见:《Linux下Scikit-learn机器学习实例脚本》(http://bbs.keinsci.com/thread-30547-1-1.html
Stand on the shoulders of giants

5

帖子

0

威望

169

eV
积分
174

Level 3 能力者

发表于 Post on 2022-8-12 16:49:16 | 显示全部楼层 Show all
看过交叉的综述,机器学习只会找到对应关系,无法给出因果关系的解释。ML即使有SHAP这种工具还是在解释性上太弱。

57

帖子

1

威望

2227

eV
积分
2304

Level 5 (御坂)

发表于 Post on 2022-8-15 11:42:59 | 显示全部楼层 Show all
sjsjsj25915302 发表于 2022-8-12 16:49
看过交叉的综述,机器学习只会找到对应关系,无法给出因果关系的解释。ML即使有SHAP这种工具还是在解释性上 ...

跪求这个综述的doi~

7

帖子

0

威望

105

eV
积分
112

Level 2 能力者

发表于 Post on 2022-9-13 21:57:49 | 显示全部楼层 Show all
大佬,我想请教一下,使用shap库对模型进行解释时,使用的是整个数据集,还是训练集、测试集?

1061

帖子

16

威望

5778

eV
积分
7159

Level 6 (一方通行)

計算化学の社畜

 楼主 Author| 发表于 Post on 2022-9-14 08:33:24 | 显示全部楼层 Show all
杲杲出日 发表于 2022-9-13 21:57
大佬,我想请教一下,使用shap库对模型进行解释时,使用的是整个数据集,还是训练集、测试集?

看你需求,没有硬性规定一定得是训练集、测试集或者整个数据集。如果你只想对测试集里的数据进行解释,那就用测试集的数据,如果你想考察整个数据集,就选择整个数据集
Stand on the shoulders of giants

7

帖子

0

威望

105

eV
积分
112

Level 2 能力者

发表于 Post on 2022-9-14 09:16:32 | 显示全部楼层 Show all
冰释之川 发表于 2022-9-14 08:33
看你需求,没有硬性规定一定得是训练集、测试集或者整个数据集。如果你只想对测试集里的数据进行解释,那 ...

明白了,谢谢大佬

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2023-2-2 00:30 , Processed in 0.464986 second(s), 32 queries .

快速回复 返回顶部 返回列表 Return to list