Py学习  »  机器学习算法

如何有效沟通你的机器学习结果?

玉树芝兰 • 5 年前 • 430 次点击  

由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。

知识星球入口在这里:

疑问

7月初,我赴南京参会。 James Hendler 教授的演讲非常精彩。

其中一个片段,让我印象深刻。

他说,许多人跑模型,跑出来一个比别人都高的准确率,于是就觉得任务完成了。他自己做健康信息研究,通过各种特征判定病人是否需要住院治疗。很容易就可以构建一个模型,获得很好的分类效果。

但是,这其实远远不够。因为别人(例如他的医生客户们)非常可能会问出一个问题“so what?” (意即“那又怎样?”)

我听了深以为然。

因为模型准确率再高,有时也免不了会有运气的成分。能否在实际应用中发挥作用,并不能单单靠着一个数字来说明。

医生们都有自己作为专业人士的骄傲。如果计算机模型不能从理据上说服他们,那肯定是不会加以采纳的。同时,他们对于病患的健康和生命安全,也有足够重大的责任,因此无法简单接受机器模型的结果,而不加以自己的理解与思考。

对于机器学习模型研究的这种批评,之前我也听到一些。但是不少人仅仅是批评,却没有给出有效的解决方法。

该怎么办呢?Hendler 教授的解决办法,是给医生展示一些统计图表。例如描述年龄与二次入院关系的散点图。

我听了大为惊诧,提问环节第一个就把话筒抢了过来,问:

这种图形,属于描述统计。难道不应该是正式进行模型训练之前,就做了的吗?如果把它作为沟通模型的结果,那还做什么机器学习呢?

解释

Hendler 教授耐心地给我解答了这个问题。

他说,没错,这个图形确实属于描述统计。然而,数百上千个特征里面,知道该汇报哪几个变量的统计图,就必须是机器学习之后才能做的。

实际上,医生们看了这个简单的统计图之后,非常震撼。

他们的刻板印象认为,老年人身体状况差,因此二次入院几率高;年轻人身体好,自愈能力强,因此不大容易“二进宫”。

就此,他们发现了一直以来决策上的失误——对于年轻病患,他们往往比较放心,因此缺乏足够的留院观察和治疗;反倒是对老年人,照顾得更加精细。造成的结果,是本以为没事儿的年轻人,再次重症发病入院;老年人却不少都治愈后健康回家了。

这种结果的传递沟通,有效地改进了医生的决策和行为方式。

其实,Hendler 教授的研究目的,不是去跟别人比拼一个数字,而是帮助医生更好地帮助病患。看似最为简单,没有技术含量的统计图,反倒比各种黑科技更能起到实际作用。

茶歇的时候,我们又聊了20分钟。

他给我讲,他的博士生,现在正在尝试在深度学习中找寻那些影响最后结果的关键要素,有的时候,甚至会选择跨过层级,来设计最简单明确的变量间关联设定。这样,深度学习的结果,可以最大限度(对别人)进行解释。即便会牺牲一些(当然不会很大)准确率,也在所不惜。

反思

为什么我们一直对准确率的数字,这么着迷,而忽略了模型的沟通解释呢?

其实道理也很简单,机器学习的最初广泛用途,给我们的思维带来了路径依赖。

还记得吗?机器学习逐渐受到世人重视的案例?

我说的不是 AlphaGo。

就是几乎每一本讲机器学习的书,都会用到的那个例子,MNIST。

专家们最初要解决的问题,无非是把原先需要人工分拣的邮件,变成机器自动分拣。关键在于手写数字的识别。

这个具体用例,有它的特点。

首先是任务目标单一,就是追求更高的准确率;

其次是分类数量确定,0-9,一共10个数字,不会更多,不会更少;

最后是犯错成本低,即便准确率达不到100%,也没有什么大问题——寄错了信,在人工分拣时代也是正常。

于是,这样的任务,就适合大家拼结果准确率数字。

但是,人们的思维惯性和路径依赖(包括各种竞赛的规则设置),导致了后面的机器学习任务,也都只关注数字,尤其是准确率。

但这其实是不对的。类似于决策支持,尤其是健康医疗的决策支持,就不适合单单比拼数字。

即便误判 0.1%,背后可能也是许许多多鲜活的生命,因此犯错成本极高。

医生并没有因为模型的准确率提升而被取代,反而在信息浪潮奔涌而来的场景下,充当把关人的角色,责任更加重大了。

一个模型要能说服医生,影响其决策行为,就必须解释清楚判断的依据,而不能递给他一个黑箱,告诉他:

你该这样做。

方法

原理想明白了,怎么实施呢?

如果每一个模型跑完,都只是拿出多张描述性统计图给用户,好像也不大合适。

通过文献阅读,我发现了其他机器学习研究人员为了解释结果所做的努力。

在深度学习领域,现在做得比较好的,是卷积神经网络。

在《文科生如何理解卷积神经网络?》一文中,我给你解释过卷积神经网络的概念和使用方法。

但是,我们当时,还只是给你讲解如何用它进行分类等,没有涉及解释方案。

你看这样一幅图,机器模型可以很容易分辨它为“非洲象”。

但是,这到底是机器具有了辨别能力,还是只不过运气使然呢?

单看结果,不好分辨。但是我们可以对卷积神经网络训练的结果参数进行可视化,并且叠加到原图上,你一眼就可以看到,机器做出图像分类的依据,究竟是什么。

显然,在机器重点关注的区域里,象的鼻子和耳朵占了最大的决策比重。

由此可以看出,这不是简单的好运气。

以上例子,来自于 François Chollet 的《Deep Learning with Python》。书中附有详细的代码,供你用 Python 和 Keras 自己实现这种可视化结果。

小结

你训练出的模型表现好,这是成功的基础,但不是全部。

只展示一个数字给别人,在很多特定的应用场景下,是不够的。问题越是重要,犯错代价越高,这种方式就越不能被接受。这时候多问自己一个“那又怎样?”,没有坏处。

你需要明确自己用户的需求。与之有效沟通的关键在于用同理心,尊重对方。作为一个人,特别是一个专业人士,对方进行有效思考的要件,就是足够的理据支撑。

不管是用文中介绍的卷积神经网络可视化方法,还是 Hendler 教授所做的看似基础无比的描述性统计图,都可以根据问题的特点,加以采用。只要能够真正影响对方的决策,帮助他们更好地达成自己的目标,你的机器学习分析,便有了更佳的效果。

喜欢请点赞和打赏。还可以微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。

如果你对数据科学感兴趣,不妨阅读我的系列教程索引贴《如何高效入门数据科学?》,里面还有更多的有趣问题及解法。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Y0IX9IY9dn
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/23090
 
430 次点击