文本型医疗大数据,拿来就可用?
编者按
本文作者是微软亚洲研究院数据挖掘与企业智能化组资深研究员闫峻。此前在微软研究院AI头条上我们也分享过他们组的研究,分别是 让计算机掌握常识:微软发布Microsoft Concept Graph和Microsoft Concept Tagging模型和 培养一个人类医生至少需要八年,那么人工智能呢?闫峻博士在本文中解读了一些在对外合作交流中经常被问起的关于医疗大数据的问题。
文本型医疗大数据,拿来就可用?
闫峻
数据挖掘与企业智能化
微软亚洲研究院
我们的很多研究工作都是基于大数据的,现在所做的健康医疗领域研究也要基于大规模医疗文本数据的处理。但是否有了大量的确定领域文本数据,就可以直接拿来进行挖掘,建模,并利用数据来创造价值了呢?如果发现问题没那么简单,我们要做些什么工作才能让这些大数据真正创造价值呢?为了尝试搞清楚这些问题,我们先来看看人们对文本型医疗大数据理解上的一些常见误区。
大数据与可计算大数据
我们现在触手可及的文本型健康医疗数据很多,能够获取的数据规模也都很大,但这是否就意味着这些数据可以供研究机构或商业机构做大数据分析,让数据产生更大价值了呢?在使用这些数据之前,让我们先区分一下 大数据与 可计算大数据的区别。很多大数据科学家口中所说的大数据,往往指的是可计算的大数据。举个例子,某科室门诊病历数量巨大,我们希望从患者主诉和医生诊断及最终的治疗效果中建模出更有效的治疗方案。然而,当我们看到真实数据后会发现,大部分数据是整段的文本描述,计算机根本无从下手进行预测分析,甚至连一些基本的统计工作都无法进行,那么这样的数据就是不可计算的。如果我们可以把文本数据转换为数据库表、关系图,甚至数值型向量,计算机就可以读懂数据,进行我们想要的分析。例如根据某项疾病统计患者的年龄分布,根据每一项症状和检查指标,推荐可能有效的药品等。要把自然语言的描述转换为计算机可以计算的数据,需要依赖自然语言处理中的很多基础技术,比如句子的 分词, 实体识别, 实体的归一化和链接等。临床电子病历的后结构化就是基于这些技术手段将大量不可计算数据转换为可统计、可计算数据的一个实际应用场景。所以拿到一份数据,我们需要先看看是否可用于计算;如果不是,就要做些功课了。
数据大与大数据
大家都期望从大数据中挖掘出潜在的价值,但是否数据量大了就是大数据,就一定有巨大价值呢?在进行大数据计算之前,我们还要区分一下 数据大与 大数据的区别。数据量大是我们谈及大数据的前提,但如果数据是有偏的和局部的,其价值将大打折扣。尽管工程上讲数据量大了,问题就是大数据问题,但从应用角度看,光凭数据量已经不能从本质上定义是否是大数据问题。我们理想的大数据指的是能够代表现实世界真实数据分布的数据。换句话说,如果大量数据代表了现实世界的真实情况,我们从中学习到的任何结论和数学模型都将具有实际意义,就可以用来预测未来和指导实践。反之,如果数据本身很偏,无论量有多大,得到的结论和模型都会很局限,甚至不能推广运用,那么其价值的折扣率就会很高。举个例子:某科室积累了大量门诊病历,数据已经很好结构化可用于计算,但所有数据都是本科室医生在过去几年针对某些疾病的积累,治疗手段渐渐趋同,我们从中建模出能打破瓶颈的新诊疗方案的可能性就很低了。下图用直观的方式来解释这个问题:外边的大圈代表真实的数据分布,当然不得不承认这个大圈对于大部分实际应用都是未知的。假设我们获得了大量数据,以里边小圈表示,明显小圈在整体数据分布中是偏向于某个局部的,那么我们的各种大数据计算所得的结果就会或者被局限到小圈以内,或者通过机器学习算法扩展到用虚线表示的那个小圈,距离真实数据分布的结论和模型还差得远,这就导致了我们大数据分析得到的结论不能代表现实世界的真实情况。既然如此,如何保证数据量大就是真正大数据问题呢?现实一点说,对很多应用来说根本无法保证,但我们可以尽可能逼近。如何逼近?对这个具体领域就是获取尽可能多的多源同类数据,如针对同一病种获取采用不同治疗方案的不同医院的数据。这里边有很多现实的挑战,首先是数据共享的挑战,这个太难了,但我们已经看到在开放领域的诸多努力,如开放知识图谱项目(OpenKG);从技术的角度看,问题是不同数据来源对知识的表达方式暂时还没有大家都在执行的统一标准,于是数据的融合成了大问题。这里边的挑战很多,大家都知道不同医院的医生在写病历过程中对同一实体的描述方式很可能不同,即使在同一家医院,医生也不能保证用同一名称表达同一个症状。要实现数据的融合,最起码的一个要解决的问题就是同一实体,同一短语,甚至同一句话的 语义扩展表达以及最终归一化的问题,可以是符号的扩展,也可以是向量的表达,但一定要有办法才行。
真大数据与伪大数据
如果我们有了可计算的大量数据,也尽人力之所能地尝试逼近了真实数据分布,总可以做大数据分析来解决问题了吧?当然可以解决一部分问题,如很多相关性分析工作,数据聚类工作,但对于很多现实的机器学习问题,尤其是有监督学习问题,我们再要区分一下 真大数据和 伪大数据。什么是伪大数据?就是看起来很大,实际上很小的数据。沿用前边的例子,我们希望从门诊病历中根据患者信息,医生治疗方案以及治疗效果做疗效的预测模型,数据量可能很大;但当我们做模型训练时发现我们实际上需要有标注的样本才能做机器学习,这里的标注就是疗效。比如一种方案针对某患者A治疗后症状有所减轻,针对另一患者B治疗完全无效,而第三名患者C在治疗后完全康复等等。当我们看了很多数据,会发现尽管总体样本量很大,很多实际问题中有标注的样本量很小,甚至有可能这些有标注的样本量已经少到让整个问题退化成小数据问题或者偏到单纯的数据大问题了。这就是伪大数据,看起来很大,有用部分很小。很多人会说我们可以用半监督学习还有增强学习。当然可用,但当前大部分半监督学习方法的能力也就是从上图的小圈学到稍大一点的虚线圈,增强学习要看我们的应用场景是否允许在现实环境中不断尝试并获得反馈,毕竟医疗人命关天。那该怎么办?答案是主动学习。啥意思? 就是要有人的参与,让我们的大数据以尽可能大的 比例有用。换句话说,让机器不懂就问人呗。就操作层面,出现了两个问题:第一,人为什么要参与?第二,人要花多大成本参与?第一个问题需要 应用场景支撑,让参与者在应用中获得好处。毕竟人是懒惰的,没有好处不能强求他人的参与,所以要有落地的项目才能驱动人的参与。这就部分解释了为什么医学大数据研究在没用应用场景情况下的纯研究会比较困难。针对第二个问题,如果要求每条数据都要有人的参与才有用,我们获取有用大数据的成本就会超出我们的想象了。所以要对人提关键问题,让人参与的结果可以泛化到尽可能多的数据中去。实际一点,至少做个 聚类分析或者 分类吧,把那些距离已知知识比较远但细节类似的情况通过人的一次参与尽可能多的标注解决。
从大数据到大数据的价值
我们利用技术手段,人际关系和实际项目获得了可计算的、尽可能无偏的、尽可能有用的大数据了。这是真的大数据了?可以从数据中收获价值了吗?其实,这才刚开始,数据中会有各种各样的问题,如噪声的问题、不平衡的问题、特征缺失的问题等等,这些总有算法和实际的应用场景解决。好,假设都解决了,获取数据的价值还需要建立模型,也就是我们的统计分析、知识推理、机器学习,包括深度学习模型。但是针对医疗的大数据还有一些特殊性值得我们注意。举几个例子,有很多应用场景如诊断问题,需要结论的可解释性或部分可解释性,那么我们的很多黑箱算法,如深度学习就遇到挑战了。当然可以用知识推理,但问题又来了,知识图谱建立的各种挑战和知识图谱普遍碎片化的现状让我们的推理工作障碍重重。现实就是如此,但有什么办法尽量做得好一点?可以把符号推理与统计学习结合起来,让碎片化知识图谱的知识推理和深度学习的决策模型结合起来,我们称之为 Local Knowledge Powered Global Learning。如何结合?方法很多,学术界也很关注,但不是现在的主题,暂时放放。最后,说明一下,大数据的类型很多,普遍认为有很多应用场景直接使用大量文本数据就可以用了:比如搜索,找相关的文章去读;比如自动问答,找到能回答问题的一段话就可以。但仔细想想,我们真的逃开了上面列出的技术问题吗?假设我们想要寻找一个罕见疾病的可能病因或方案,有大量的医疗文献可供查找,我们是否要从问题和文献中识别目标实体,是否要做语义的扩展用来匹配,是否要尽可能保证文献覆盖率,是否需要相关性的训练数据?仔细想想,在这些场景中其实就是把上边提到的一些功课放在另外一个流程中去做了,至少部分的做了,所以说到底还是做了。
作者简介
闫峻博士,微软亚洲研究院资深研究员。他的研究兴趣包括人工智能中的知识挖掘,基于知识的机器学习,文本处理技术,信息检索,互联网广告等并更加关注医疗健康领域的人工智能研究。至今为止,他的数十项研究成果被应用到微软的不同技术产品中,获取技术专利数十项,发表高质量学术论文70余篇。他是很多高质量学术会议的程序委员会成员及资深程序委员会成员, 并且是很多高质量期刊的审稿人。