计算化学公社

 找回密码 Forget password
 注册 Register
Views: 3106|回复 Reply: 7
打印 Print 上一主题 Last thread 下一主题 Next thread

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

[复制链接 Copy URL]

1102

帖子

18

威望

6643

eV
积分
8105

Level 6 (一方通行)

計算化学の社畜

本帖最后由 冰释之川 于 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官网




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








懒人脚本(Model_explanation.py)下载地址
shap.zip (680.94 KB, 下载次数 Times of downloads: 99)
Model_explanation_shap.py (14.59 KB, 下载次数 Times of downloads: 78)
代码什么的没啥好说的吧?女票就对了~





评分 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

威望

19

eV
积分
20

Level 1 能力者

2#
发表于 Post on 2022-8-9 10:15:03 | 只看该作者 Only view this author
冰冰大佬 为什么我读取模型的时候 报错
AttributeError: 'RandomForestRegressor' object has no attribute '_final_estimator'

1102

帖子

18

威望

6643

eV
积分
8105

Level 6 (一方通行)

計算化学の社畜

3#
 楼主 Author| 发表于 Post on 2022-8-9 13:24:31 | 只看该作者 Only view this author
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

7

帖子

0

威望

235

eV
积分
242

Level 3 能力者

4#
发表于 Post on 2022-8-12 16:49:16 | 只看该作者 Only view this author
看过交叉的综述,机器学习只会找到对应关系,无法给出因果关系的解释。ML即使有SHAP这种工具还是在解释性上太弱。

84

帖子

1

威望

3308

eV
积分
3412

Level 5 (御坂)

5#
发表于 Post on 2022-8-15 11:42:59 | 只看该作者 Only view this author
sjsjsj25915302 发表于 2022-8-12 16:49
看过交叉的综述,机器学习只会找到对应关系,无法给出因果关系的解释。ML即使有SHAP这种工具还是在解释性上 ...

跪求这个综述的doi~

7

帖子

0

威望

228

eV
积分
235

Level 3 能力者

6#
发表于 Post on 2022-9-13 21:57:49 | 只看该作者 Only view this author
大佬,我想请教一下,使用shap库对模型进行解释时,使用的是整个数据集,还是训练集、测试集?

1102

帖子

18

威望

6643

eV
积分
8105

Level 6 (一方通行)

計算化学の社畜

7#
 楼主 Author| 发表于 Post on 2022-9-14 08:33:24 | 只看该作者 Only view this author
杲杲出日 发表于 2022-9-13 21:57
大佬,我想请教一下,使用shap库对模型进行解释时,使用的是整个数据集,还是训练集、测试集?

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

7

帖子

0

威望

228

eV
积分
235

Level 3 能力者

8#
发表于 Post on 2022-9-14 09:16:32 | 只看该作者 Only view this author
冰释之川 发表于 2022-9-14 08:33
看你需求,没有硬性规定一定得是训练集、测试集或者整个数据集。如果你只想对测试集里的数据进行解释,那 ...

明白了,谢谢大佬

本版积分规则 Credits rule

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

GMT+8, 2024-11-27 10:33 , Processed in 0.222757 second(s), 31 queries , Gzip On.

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