如何解释一个模型

核能气质少年 提交于 2020-11-24 02:36:49


如何解释一个模型


今天早上和同事聊天,因为宅在家里,业余时间无事可干,大家各自发挥学习特长各种学习。然后再次感悟机器学习这个领域太大,每个看似小问题展开都是大学问。有些知识无法一时get到点,只能通过不停看参加讨论,耳濡目染,终于有一天顿悟。不知道我顿悟了没,但是想把自己get的到的关于解释机器模型的知识到和大家分享一下。


之前讨论过如何给一个模型打分。打分很好理解,根据分数能够一眼看出哪个模型更好一点。吴恩达在Machine Learning Yearning一书中强调了很多次,选择一个metric有多重要。那么解释模型又是什么鬼。


解释模型就像介绍软件功能一样,解释你的模型是怎么工作的。


比如说一个预测房价的模型,解释模型就是必须要解释,在模型中是房子的位置,大小还是房型起的作用更大。


线性模型很好解释:

y=2x2+1x1+0

 训练好的模型中的21 就是feature的权重。


那么复杂的模型该怎么办呢。是不是所有的模型都是可以解释的呢?


有人大概要质疑了,深度学习模型不是黑盒模型吗,需要关心这个吗?

这是一个很值得讨论的问题,为什么需要解析深度学习的模型。




首先万物当中,人类是最为矛盾的物种。人类思维不可能一夜之间从因果思维转换成相关思维。即使因果思维已经存在了几个世纪,为什么人类还是有很大一部分的有神论者。为什么热学有了第一定律后有了第二定律。为什么工业革命后会有科技革命。


偏题了,让我们serious的讨论一下这个问题。

从应用角度来说,如果无法解析模型,那就很难说服stokeholder来相信你的模型。特别是在某些领域,比如说医疗,如果你无法解释为什么某个影像或某个心电图被预测成异常,医院或者医生会放心使用这个系统吗?所以在很多时候,数据科学家们在模型精确度和可解析度上选择了可解析度。


 解释一个模型有助于优化模型,不管是模型的质量或者是性能。比如说如果你发现有些feature根本不起作用,那就可以研究是不是可以不用,最后结果可能是抛弃大量无关feature,使得模型更加简单。或者发现某个feature起了很大的作用,与现实不符,那就可以研究是不是哪里有错误,是不是数据有bias,是不是网络结构不合适。解释模型就是想做到”知己知彼”。


那到底要怎么解释呢,怎么找出权重呢。


shapley value

Shapley value是借用了游戏领域计算每个玩家的对community的贡献值的方法。shapley的文献很难看,越看越糊涂,特别是对算法的各种解析文章很多都不准确。但是记住以下几点:

计算shapley value不是针对feature,而是feature value,有很多文章都没指出这一点,使得最初帮助理解的例子无法转化到模型解释上来。

如果明白了这一点,那每一个shapley value就是每一个feature value的margin contribution的平均值。那这又是什么意思呢。大家还记得概率论里怎么计算一个变量的margin probability边缘概率吗? 其实是一个道理,就是把所有的和自己有关的组合都找出来,算出自己的contribution再平均一下。

为什么游戏理论里是的算法很好理解,这里很难理解呢,因为游戏理论里,可以直接去掉某个人来计算,但是模型不可以把某个feature去掉,所以用了替代方法,计算了所有可能的取值,然后取平均值。

最后记住一点,每一个样本都需要对每个feature的value计算一次shapley value,最后这个feature value的值是个平均值。

shapley value据说是非常公正的一种做法,但问题一看就知道,计算量太大。所以有了SHAP.

SHAP也是计算shapley value,只不过是一种局部近似法来减轻计算量。其中数学推导相当复杂。现在python有库来分析多种模型。https://github.com/slundberg/shap


解释模型不得不提的是LIME。数学推导不展开。核心思想就是对于每个样本找到局部模型,然后分析其贡献。有人质疑这个局部替代模型靠谱吗?人家问啦,你觉得gradient descent靠谱吗?


解释模型也是机器学习中比较大的一块领域。不可能通过读几篇文章就全部搞懂。如果到这里为止,大家get到shapley value,SHAP 和 LIME都是用来解释负责模型的,计算每个feature value的contribution就可以了。细节通过慢慢领悟。当然细节不领悟,照样可以使用python库。



Reference:

https://christophm.github.io/interpretable-ml-book/shap.html

https://towardsdatascience.com/explain-your-model-with-the-shap-values-bc36aac4de3d



作者简介:

Dagis: 现居住在瑞典,某AI公司的Data Scientist, 学习通信出身,喜欢数学,更喜欢把数学用于实际。 


作者其它文章(更多文章,请进入公众号。)

贝叶斯统计方法--思维方式的改变

NLP随想

测测你的数学直觉

用Streamlit可视化数据分析

Transfer Learning

标注数据那点事

如何给模型打分

一个模型如何从幕后走向台前

大白话介绍-什么是机器学习

学习笔记:Practical Statistics for Data Scientists




本文分享自微信公众号 - 一起learn大数据和机器学习(hundendagis)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!