盖茨基金会:如何使用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 练习:使用 # 号输出长方形
使用 # 号输出一个长方形,用户可以指定宽和高 height = int(input("please input height: "))width = int(input(&quo ...
- csharp: Use of Is and As operators in csharp
/// <summary> /// Geovin Du 20170622 /// </summary> /// <param name="sender" ...
- 用animate改变了某个样式之后再用css控制会无效
我前几天写了个移动端运动,(这个运动的代码我贴在这了:http://www.cnblogs.com/weiman/p/6600380.html)然后发现了这个问题,具体如下: 未运动前是这样的,菜单栏 ...
- Sql Server 向上取整、向下取整、四舍五入取整
==================================================== [四舍五入取整截取] select round(55.56,0) ============== ...
- 基于Grafana的监控数据钻取功能应用实践
互联网企业中,随着机器规模以及业务量的爆发式增长,监控数据逐渐成为一种大数据,对监控大数据的分析,包括数据采集.数据缓存.数据聚合分析.数据存储.数据展现等几个阶段.不同阶段有不同的解决方案及支撑工具 ...
- Android View体系(七)从源码解析View的measure流程
前言 在上一篇我们了解了Activity的构成后,开始了解一下View的工作流程,就是measure.layout和draw.measure用来测量View的宽高,layout用来确定View的位置, ...
- spring 引用Bean的属性值
引用Bean的属性值 从Spring3.0开始,可以通过#{beanName.beanProp}的方式方便地引用另一个bean的属性值1.不需要使用PropertyPlaceholderConfigu ...
- 从零自学Java-9.描述对象
1.为类或对象创建变量:2.使用对象和类的方法:3.调用方法并返回一个值:4.创建构造函数:5.给方法传递参数:6.使用this来引用对象:7.创建新对象. 程序VirusLab:测试Virus类的功 ...
- [20180118]tstats的问题.txt
[20180118]tstats的问题.txt --//关于使用tstats收集处理统计信息,可以看链接http://blog.itpub.net/267265/viewspace-1987839/ ...
- 分布式文件系统(HDFS)与 linux系统文件系统 对比
初次接触分布式文件系统,有很多迷惑.通过参考网络文章,这里进行对比一下Hadoop 分布式文件系统(HDFS)与 传统文件系统之间的关系: Linux 文件系统 分布式文件系统 块 块对应物理磁盘 ...