盖茨基金会:如何使用Python拯救生命
每年全球都要花费数十亿美元来预防疾病,减少死亡,资助预防保健及治疗的各种研发项目,以及其他的健康方案。但资金毕竟是有限的,所以一些组织,比如全球卫生资金的主要捐助者比尔&梅林达·盖茨基金会(Billand Melinda Gates Foundation),需要考虑优先把钱花在那儿。华盛顿大学健康指标及评估研究所(Institute for Health Metrics and Evaluation,IHME)正在帮助解决这个问题,而且是用数据科学的方法。
IHME的主要项目之一,是全球疾病监测(Global Burden of Disease, GDB),这是一个“系统的科学举措,以量化因疾病、外伤及其他危险因素所致的可比较等级的健康损失”。这套系统能跟踪188个国家的300多种疾病和 50个风险因素,根据1990年至今的数据来建模。换而言之,GBD描绘的是囊括人致病或死亡所有可能的方式的全球图景。
例如,运行GBD的发达国家部分,会生成一个树状图,如下所示:

图中红色部分代表传染性疾病,像LRIs (下呼吸道感染,如肺炎等)、腹泻、艾滋病、肺结核和疟疾。绿色代表意外损伤,主要由道路交通事故、以及其他形式的暴力行为如战争和灾难所造成。最后,大块的蓝色部分表示非传染性疾病:缺血性心脏病、中风、癌症及许多其他疾病。
随后,GBD可以和“疾病控制优先顺序计划(Disease Control Priorities)”整合 - 该计划是评估世界各地的医疗费用、医疗的有效性和普及性的诸多项目的集合。这两个系统共同运作,为政策制定者服务,为需要优先配置资源的筹款项目提供依据。从本质上讲,它帮助类似盖茨基金的这类公益组织决定投资在哪里可以得到最佳效果,即,拯救最多的生命。
IHME需要处理大量数据。GBD的单次运行所产生的数据超过25 TB,一些更新的项目甚至超过1 PB。为了处理这样的数据量, IHME的计算机科学团队使用20,000核Sun Grid Engine集群,以及一个更新的基于Spark的1000核的集群。
“我们使用Python 来进行数据分析 ,因为它免费,且资源公开”,IHME科学计算部门副主任凯尔·福尔曼(KyleForeman),在2015年西雅图PyData会议上说, “我们是一个非营利机构,不想在购买软件上花费太多。而且我们正与世界各地的人们一同工作,Python的优势对该合作意义重大。 ”
Python具有可扩展性(对处理那些庞大的数据集至关重要),可进行快速原型设计,且易于使用。虽然IHME专门处理医疗卫生指标,但它的许多员工都是流行病学家和医生,而不是统计学家和计算机科学家。一些便利化程序,如Dashboard和iPython notebooks,对帮助这些电脑技术稍欠的合作者使用非常必要。
集合建模:让多数人满意
在提高一个国家健康水平的方法中,最重要的是确定死亡原因。毕竟,你想减少人们的死亡,而做到这一点的最好办法是要弄清楚什么让他们死亡。在估计死亡原因方面,IHME已经开发了一种称为CODEm(Causeof Death Ensemble,死亡原因集合模型)的统计模型。
“关于什么是最好的建模策略一直存在巨大的争论,”福尔曼说,“特别是因为我们有这样一个庞大的合作伙伴网络,我们使用一个集合策略来组合所有这些不同的方法,有选择地评估和挑选最好的,然后将它们组合成一个人人满意的集合。”
例如:为创建65岁俄罗斯人缺血性心脏病的模型,你可能会先采用线性回归,然后把不同的风险因素、周边国家和邻居的年龄组等相互作用的变量整合,再把残余信息采纳过来,然后通过高斯方法来回归(使用PyMC),以适应数据,并做出更好的预测。这些技术一起形成一个由几组相互作用的变量模型,然后和几千个别的模型交叉验证,生成集合模型,也就是在这个案例里所说的缺血性心脏病的整体模型。

作者阐述了他们选择使用python原因:除了大量可以免费使用的软件包外,简单易用,原始模型(prototyping)的快速定制,延展性(Entensibility)及伸缩性强(Scalability),与其他语言交互能力也很强(Interoperability)。
另一个项目是关于疾病的建模,称为DisMod。 衡量某种疾病有许多不同的方法,比如你可以算一下有多少人得这个病,今年以来有多少人感染,一般的病期多长。 DisMod采用了流行病学数据,加上一些特定疾病的协变量,使用PyMC运行贝叶斯元回归(Bayesian meta-regression),以产生内部一致的数据集。
它是这样工作的:一个普通的疾病模型将一个人分类(共4类):易感,发病,因病而死,因并发症而死。然后,它使用了一系列微分方程来估计该患者从一类转换成另一类的各种概率(基于现有数据,协变量等等)。
展望未来
这些神奇的死亡和疾病模型的建立,使得 IHME 能够根据各种概率,预测全球健康的发展趋势,由此来展望未来。
通过追踪不同的条件和危险因素之间的相关性,跟踪所有单一疾病的全球疾病负担,并,IHME 可以预测生成该全球疾病系统(Global Burden of Disease)所跟踪的对每一疾病的可能发展情景。例如:在模拟血压和心脏病上升的时候,也看看是否钠(食盐)消费量也增加。同样,它也可以追踪一个国家的收入,同时看看烟草消费、死亡率和人口数的相关性。通过成千上万次地模拟运行这些相关性,将生成海量的数据,然后用基于 Python 的 统计模型来模拟。
这些大规模的模拟生成大量的数据资料( PB 级以上),所以他们需要以一种高性能、模块化的方式运行。要做到这一点,IHME 采用模块化的YAML来描述非闭合的流程图。每个数据集(GDP、死亡率等)被分配给一个节点,(通过使用 sympy 方程)这些节点之间的连线表示变量之间的相互影响(通过sympy表示)。
“这背后的想法,” Foreman 说,“是比尔·盖茨想知道他的钱花在了哪里,现在所做的一切,是为了拯救生活在2040年大多数人的生命。”
欢迎加入Python学习资料群:725479218

盖茨基金会:如何使用Python拯救生命的更多相关文章
- [转帖]盖茨辉煌后将归隐 DOS之父仍为生计打拼(图)
盖茨辉煌后将归隐 DOS之父仍为生计打拼(图) http://www.sina.com.cn 2007年12月10日 09:43 新浪科技 https://tech.sina.com.cn/it/2 ...
- 散文说python半篇——景观三元论与盖茨比的对话
今天, 天气晴朗,风和日丽: 我事实上在说谎-- 爱说谎事实上是我的天性 上个礼拜四我就用景观三元论说了非常多谎话.然后一头大象自己上吊了. 了不起的大象啊,盖茨比也要从坟墓里爬出来了吧, 陈年旧事, ...
- 基于Linux根据僵尸网络病毒平台《比尔盖茨》
感觉分析的非常好,所以决定翻译出来,希望和大家多多交流O(∩_∩)O~ 转载请注明出处:http://blog.csdn.net/u010484477 O(∩_∩)O谢谢 keyword:病毒 ...
- 比尔·盖茨写的最古老程序曝光:BAT程序员膜拜 #精选程序人生
比尔·盖茨31岁,就成为世界首富.很多人好奇,作为世界第一大PC系统的创始人,抛弃世界首富的头衔,单单从程序员角度来讨论,比尔盖茨的代码水平如何? 其实,比尔·盖茨对写代码有一种狂热的喜好.上高中的时 ...
- Linux应急响应(四):盖茨木马
0x00 前言 Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装.木马得名于其 ...
- 效仿盖茨:PPstream创始人的心路历程
http://www.jianglb.com/2007/08/15/about-ppstream.html “P2P网络视频软件的目标是成为网民肚子里的蛔虫.”PPstream总裁徐伟峰自信地说道.他 ...
- 季逸超:90后IT少年的“盖茨梦”
2月15日,"90后"独立开发者季逸超在其微博称,个人获得徐小平和红杉资本投资,成立了Peak Labs--以贝尔和施乐为目标的实验室. 谁是季逸超?他现年20岁,曾单独一人做出猛 ...
- content is king – Bill Gates (1/3/1996) 内容为王 - 比尔盖茨
以下中文版本由谷歌翻译 内容为王 - 比尔盖茨(1/3/1996) 内容是我期望在互联网上赚取大部分真钱的地方,就像在广播中一样. 半个世纪前开始的电视革命催生了许多行业,包括制造电视机,但长期的赢家 ...
- 如何让阿三 Windows 10、11 的恢复分区(Recovery Partition)恢复到 “盖茨” 模式
如何将 Windows Server 2022 的恢复分区(Recovery Partition)移动到 C 盘之前,恢复 C 盘容量调整功能. 请访问原文链接:https://sysin.org/b ...
随机推荐
- Python 正则介绍
正则表达式是一种小型的,高度专业化的变成语言,在 Python 中,它通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的引擎执行. findall() 方法,所有匹配的结 ...
- video 铺满父元素(object-fit: fill;)
遇到这个属性,是在给video 嵌入一个div时,导致video播放器上下有灰色.在控制台查看video默认样式的时候看到了这个属性. 播放器上下的灰色,不是我们想要的样式,如果能完全覆盖就更好了. ...
- 交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别 自己之前一直没搞清楚这两个交叉编译器到底有什么问题,特意google一番,总结如下,希望能帮到道上和 ...
- 安卓开发_深入理解Handler消息传递机制
一.概述 因为子线程的run()方法无法修改UI线程(主线程)的UI界面,所以Android引入了Handler消息传递机制,实现在新创建的线程中操作UI界面 二.消息类(Message) 消息类是存 ...
- js判断当前浏览器语言类型
console.log(window.navigator.language.slice(0, 2)); 得到的是zh
- engineercms支持文档协作和文档流程,基于flow
我们用于管理文件的系统,比如网盘云盘等,并不具备流程功能,所谓流程,本质是修改文档状态,比如,从初始状态,不同权限的人登录,查看这个文件,具有修改这个文档状态的权限,比如将初始状态修改为已审查状态. ...
- linux上用newman+postman进行自动化测试
第一步:导出postman文件 Postman就是根据collection和enviroment这两个json文件来自动化运行的! 所以从Postman中导出collection和enviroment ...
- mv,rm等命令出现unrecognized option提示的解决方法
出现这个提示,一般是由于命令操作的文件名最前面有"--"字符, 让命令误以为是--开头的长选项 解决: 命令后加上"--", shell把 -- 之后的参数当做 ...
- python-Tkinter整理总结
笔者学习Tkinter模块也有好久时间了,现将学习的做以整理. tkinter简介(一) tkinter中lable标签控件(二) tkinter中button按钮控件(三) tkinter中entr ...
- 高通 sensor 从native到HAL
app注册传感器监听 Android Sensor Framework 的整体架构如下图所示: 前几篇sensor相关的文章介绍了sensor的hal的知识,以press_sensor实时显示气压坐标 ...