APP下载

基于异构图嵌入学习的相似病案推荐①

2020-11-13王亦凡李继云

计算机系统应用 2020年10期
关键词:病案异构实体

王亦凡,李继云

(东华大学 计算机科学与技术学院,上海 201620)

患者病案包括临床中患者本人对自己健康状况的描述以及医疗人员对患者的客观检查结果以及对患者的病情的分析、诊疗的记录.通过比较患者病案的相似程度可以为医生提供具有较高可信度的病案参考.随着医院和诊所中的临床病案数据的不断积累,如何充分利用这些记录是相当重要的,许多研究使用临床医疗病案来协助医生进行临床决策和预后[1].

相似病案是包含相同临床意义的医疗实体,具有相似属性的病人的病案.目前,部分研究将相似病案衡量任务视作具有不同医疗实体的临床文本多分类问题[2–4].部分研究通过提取病案中的隐藏信息并依据医疗代码进行对齐,以便衡量各个组成部分的距离[5],从而对相似病案进行度量.这样的度量有助于精准医疗中不同种类的患者细分[6],作为医生诊疗的参考.在本文中,我们将医疗实体定义为与患者治疗相关的医疗专有名词.如果某一患者病案中的两个医疗实体共同出现,我们就认为这对医疗实体存在某种关系.我们利用基于异构图嵌入的方法来学习病案表示,通过计算患者病案表示的余弦相似度可以获取相似病案.

以上的方法通过对患者病案中的医疗实体标签化或者根据医疗实体对应的医疗代码进行距离度量,但它们丢失了患者病案中的细节信息.比如仅保留关键的疾病分类分期分型信息,而丢失了疾病分布位置以及发展情况这些判断依据.

医疗实体网络研究中仅仅考虑了单一医疗实体的影响,忽略了同一医疗实体在不同患者病案场景下的含义可能不同的问题.在患者病案的场景中,病史中存在某种疾病(病史关系)和诊疗中发现某种疾病(病症关系)是截然不同的情况,可能是长期存在某种病症,也可能是疾病复发导致.

针对同一医疗实体在不同患者病案场景下具有不同含义这一问题,本文提出构建基于医疗实体和实体关系的患者病案异构图嵌入模型.通过学习医疗实体及其不同类别的关系表示,提升相似病案的推荐效果.

1 相关工作

1.1 图嵌入学习

网络结构一般包括诸多节点和边,用于反映事物之间的复杂关系.采用图嵌入的目的是为了学习网络中高维向量的低维表示,图嵌入学习主要应用于节点分类和推荐算法等任务中.网络表示学习采用低维向量表示网络中的节点,尽可能地学习网络中的潜在信息.传统的网络表示学习算法主要关注于网络的结构信息.相关研究工作包括:DeepWalk[7]使用随机游走来学习潜在的嵌入,将Word2Vec 算法应用于图中.Node2vec[8]采用通过随机游走实现深度遍历和广度遍历之间的平衡.LINE (Large-scale Information Network Embedding,大规模信息网络嵌入)[9]定义了二阶相似度来保持图的结构.GF (Graph Factorization,图因式分解)[10]将结点内积视作边权来优化节点向量,达到降维的效果.Struc2vec[11]考虑空间结构的相似性.虽然这些算法一步步地完善节点的潜在结构表示,但仅仅利用网络中的结构特点,学习到表示向量缺乏对下游任务的支持与扩展.图嵌入学习的结果对下游任务的效果有较大的影响.现实世界中广泛存在着异构的网络,包括不同类型的节点或不同类型的边.充分利用这些异构信息有助于提高表示向量的表征能力.

目前基于异构网络的算法主要包括基于矩阵分解的方法以及基于神经网络的方法.CMF (Coordinate Matrix Factorization,坐标矩阵分解)[12]通过矩阵分解获取实体与类别之间的潜在联系,构建更多关系矩阵.KGCN (Knowledge Graph Convolutional Networks,知识图卷积网络)[13]通过图卷积神经网络对物品之间的不同关系进行建模,提高推荐的多样性.目前异构图的研究主要着眼于不同类型节点或者不同类型的边,同时考虑它们的研究较少.

多数生物医学网络上的图嵌入学习都着眼于药物[14],蛋白质和疾病之间的关联.在生物医学领域内的图嵌入研究目前主要基于同种类型的关系.GameNet[14]将药物相互作用知识和患者医疗记录进行融合,实现对药物组合的推荐.实际上,医疗领域内医疗实体存在不同类型的关系,而同构网络学习算法不可以直接应用于这样的图网络中.因此,将患者病案引入医疗网络,将患者病案与医疗实体的不同关系作为补充信息,可以提升患者病案推荐的效果.

1.2 相似病案

病案数据是我国主要的临床医疗数据之一.基于医疗数据的相似性比较是医疗数据的预测以及预测建模中的研究方向之一[1].SimSVM[2]使用与新患者相似的临床记录对化疗后的患者的生存情况进行分类.标准医疗编码如ICD-10 可以用于概念层次的相似度比较,医疗概念层次模型可以应用于判断住院天数是否长期,并且针对不同年龄层次进行住院天数的细分[3].在获取了相似医疗数据后,医生就可以进行病程的比较,也有助于预测和推理等下游任务[15].虽然这些方法都是基于临床的诊疗过程进行研究,但是诊疗过程中由于临床中存在事件的先后次序,因此数据之间存在着依赖关系,需要考虑此种关系的影响.

本文将相似度比较按照数据抽取及建模方法分为如表1所示的3 种类型,从医疗数据中提取特征,对医疗数据进行距离度量或者学习医疗数据的表示.PSF (Patient Similarity evaluation Framework,患者相似度评估框架)提出了具有临床意义的患者距离评价方法,并将有监督方法和无监督方法进行融合来评判心力衰竭诊断的结果[16].PSDML (Patient Similarity Measuring using Deep Metric Learning,基于深度度量学习的患者相似度比较)利用ICD-10 编码来优化脑卒中疾病的监督距离,并进行kNN (k-Nearest Neighbor,k 最近邻)分类[17].卷积神经网络可以用于学习患者临床记录表示[18].

表1 医疗数据相似性比较框架

尽管这些方法在各自的疾病领域内具有较大的提升.然而这些方法需要对不同领域疾病进行不同处理[19],并且忽略了现实世界中医疗数据的依赖性,需要我们对实体之间的复杂关系进行建模,学习高维数据的表示.

2 问题描述

为了准确描述面向诊疗过程的患者病案表示问题,我们对以下概念进行定义.

定义1.患者病案:对于患者,患者病案可以定义为医疗实体以及其关系的集合Pi=.病案中的医疗实体列表经过融合函数就可视作患者的表示.融合函数可以为简单的算数平均函数或者使用attention机制的加权平均函数.其中e1代表某一医疗实体,n代表存在n个医疗实体.

定义2.医疗实体:患者病案中存在的具有临床诊疗意义的医疗术语视作一个医疗实体.

定义3.医疗实体的关系:给定患者病案Pi的病案,假设存在T={t1,t2,···,tk}代表病案与医疗实体的关系类型,若存在医疗实体e,那么该病案与e存在二元关系t=(Pi,e),t∈T.

根据以上概念,可以构建医疗实体网络,采用图嵌入算法对医疗实体及其关系进行建模,得到患者病案的低维向量表示,患者病案相似度可以根据患者病案表示计算得到.

定义4.患者病案相似度:给定一个患者病案Pi,可以通过计算其余患者病案表示和患者病案Pi的余弦相似度,得出该患者病案和其余患者病案的相似度分数列表Si={si,1,si,2,···si,i−1,si,i+1···},其中si,1代表患者病案Pi和患者病案P1的余弦相似度,Si代表患者病案Pi对应的余弦相似度分数集合.

3 病案表示模型

针对同一医疗实体在不同患者病案场景下具有不同含义这一问题,本文在关系建模中引入病案节点,将病案节点与临床医疗实体节点划分为二部图,构建基于医疗实体和实体关系的患者病案异构图嵌入模型,如图1所示.

图1 基于随机游走的病案表示学习

本文将患者病案的表示视作医疗实体经过某种融合函数的结果,由于每个医疗实体包含了一个节点信息(医疗实体)和一些带有类型属性的边(医疗实体关系),我们需要学习医疗实体及其关系的表示.

3.1 医疗实体表示

医疗实体表示可以通过构建医疗实体的共现来获取.如图1(a)图所示,对于存在于同一病案的不同医疗实体,我们将他们视作共现,病案中每个医疗实体两两之间包含了共现关系,可以构建出医疗实体网络,如图1(b)所示.通过随机游走的方法获取医疗实体的序列,采用skip-gram 进行更新,可以获得医疗实体的表示,如图1(c)下图所示.在实际医疗场景中,医疗实体存在不同含义,本文把不受医疗场景影响的实体表示记为医疗实体的公共表示,而受到其影响的实体表示记为基于关系的实体表示.为了建模这种医疗实体与患者病案的关系,本文在图中引入了患者病案节点.

3.2 医疗实体与患者病案

引入病案节点后,病案与医疗实体构成的医疗网络变为异构图网络,包含异构的节点,即病案节点与医疗实体节点类型不同,以及异构的边,即两种节点之间可以通过不同的关系连接.医疗实体与患者病案的关系类型不同,我们可以分别为每个关系类型学习一个表示,如图1(c)上图所示.关系之间并不是完全独立的,因此需要对相互之间的影响进行建模.

对于每个医疗实体,为每种类型的关系提出一个公共表示和基于关系的表示,如式(1)所示.其中ei,e代表医疗实体的公共表示,ei,r代表医疗实体关系的表示.

医疗实体的公共表示不受医疗实体关系的类别变化的影响.在异构边条件下,需要分别对医疗实体的关系表示进行学习,通过聚合邻居节点获取关系t下的医疗实体表示,经过k次聚合后,此时对应的医疗实体表示如式(2)所示.

其中,j代表相邻的节点,N是相邻节点的个数,σ是激活函数,ωk是需要训练的参数.由于我们不知道医疗实体关系的联系,利用self-attention 建模不同医疗实体关系之间的权重,依据上述公式,医疗实体ei基于关系的表示如式(3)所示.

其中,t为医疗实体的关系类型.对于任意t类型,随机游走序列中的节点e,假设它的位置为i,我们将ei−b,···,ei−1,ei+1,···,ei+b视作它的邻居节点.其中,b是窗口大小的一半.

为了建模异构的病案节点和医疗实体节点,我们预先设置序列的随机游走模式,比如医疗实体-病案-医疗实体,获取随机游走的转移概率.因此,给定医疗实体的序列,我们的目标是最小化如式(4)所示的目标函数.

对于每一个边,如式(5)所示,由医疗实体ei生成医疗实体ej的条件概率可利用Softmax 函数获得.

其中,e′是医疗实体上下文的向量表示.最后,通过负采样来近似目标函数,如式(6)所示.

其中,σ是Sigmoid 函数,可以表示成σ(x)=1/(1+exp(−x))的形式.

由于我们的模型是基于随机游走的方法,假设我们有T个关系类型的子网络和E个节点,模型的时间复杂度为O (TE).模型的内存复杂度是O ((d+dt·T)·E).

3.3 患者病案表示

最终我们从医疗网络中可获取医疗实体节点和患者病案节点两类节点的表示.患者病案表示对病案中所有医疗实体的节点表示经过算术平均或者加权平均计算获取.如果直接采取患者病案节点作为患者病案的表示会丢失医疗实体之间的共现信息.此外,采用这种方式,我们不仅可以获取患者病案的全局表示,还可以根据不同的医疗实体关系获取不同医疗场景下的患者病案表示.由于患者病案是不定长的医疗实体集合.通过融合函数对不同医疗实体表示进行处理,便可以获取同一维度的患者病案.通过医疗实体获取患者病案表示的公式如式(7)所示.

其中,g函数可以为简单算数平均或者加权平均函数.给定一个患者病案Pi,推荐任务的目标是推荐给医生个有序的病案列表.为了完成这个任务,对于患者病案Pi以外的患者病案均计算出一个分数,这个分数值是衡量患者病案Pi,和其他患者病案之间的相似度.最后将相似病案推荐给当前的患者.患者病案之间的相似度分数定义如式(8)所示.

最后,根据相似性分数的相对大小排序,就实现了基于患者病案表示的相似病案推荐.

图2 病案表示的建模流程

4 实验

本节主要介绍实验,包括实验的数据集、评测指标、实验结果以及结果分析等多个方面的内容.将未考虑医疗实体关系类型的图嵌入算法和所提出的方法进行对比.选取图嵌入算法中具有代表性的方法,包括基于随机游走的DeepWalk 算法、基于矩阵因式分解的GF 算法以及基于神经网络的LINE 算法.

图2展示了本文提出的患者病案表示方法的建模主要流程.首先,确定医疗实体的标注标准并进行人工标注.使用Bi-LSTM-CRF 模型对数据集进行训练,以便从病案中提取医疗实体.其次,通过图嵌入算法学习患者病案对应的不同种医疗实体关系以及学习不同关系的相互作用.最后,将病案中医疗实体列表经过融合函数作为患者病案表示.

4.1 实验数据集

本文的患者病案数据是来自于某三甲医院的真实世界数据.由于真实世界数据并非为了研究而特意收集,存在大量的冗余以及缺失的字段,存在完整性问题,并且难以获取结构化的数据信息,医疗场景下的患者病案存在大量的医疗术语,并且患者病案的表述因人而异.

目前国内针对患者病案尚没有通用的框架,难以适应不同源的数据.我们采用命名实体识别技术对患者病案进行信息抽取,便于从自由医疗文本中获取医疗实体以及其关系.原始医疗数据消除敏感性信息后,如表2所示.经过Bi-LSTM-CRF 模型的训练后,能够自动获取病案中的医疗实体信息.表2中加粗字段为输出对应的医疗实体.

表2 患者病案样例

首先通过关键字从数据中选取乳腺疾病的患者.经过人工标注,数据集中包含1002 个患者以及285 146个医疗实体.将其中80% 的数据作为训练集,20%的数据作为测试集,并设计了如表3所示的医疗实体分类.

表3 医疗实体分类

4.2 评价方法

患者最终的临床诊断可以用来评价患者表示学习模型的效果.根据出院的诊疗结果以及病理结果将患者分类.遵循乳腺疾病发展规律,依据诊断的严重程度进行划分.对于患者病案,本文在实验中使用ROC 和F1 作为相似任务中常用的评价标准.值越高,相似病案的推荐效果更好.本文采用DeepWalk 作为基准方法,实验结果如表4所示.

表4 患者表示学习结果

从实验结果可以看出我们的方法对于患者相似度衡量的结果优于现有的算法,证明了该方法的有效性.

4.3 参数敏感性

患者病案表示模型中实验参数对实验结果有重要的影响,因而需要对参数敏感度进行分析.本文同时对于向量维度、随机游走步数、类型维度对实验结果的影响进行探讨,并对实验结果的可能因素进行分析,实验结果如图3所示.

从图3中可以看出选择的参数均对结果有一定的影响.患者病案表示模型基于随机游走,因此需要充分考虑对于随机游走过程中的步长和步数,这里本文选取20 作为步长和10 作为步数.步数是对一个节点的不同邻居进行反复学习的数目,进而获取完整的节点信息,如果节点较为稀疏或造成一定的过度学习.一般来说,步长越长,可以学习到更远的结构信息,从而把握全局的结构.在实际中,远处邻居对节点表示影响不大,所以步长不宜设置过大.由于更大的维度可以容纳更多的信息,起初随着维度的增大可以产生更好的结果.但是当维度到达某一阶段后,对于结果产生了负面的影响,这可能是由于高维信息增加了模型的复杂度,并且考虑到高维信息会导致下游任务耗费更多时间,因此选择100 维作为表示维度.对于类型维度而言,本文设置其大小为30,增加外部类型信息可以扩充信息量,进而提高模型的准确率.但类型维度过高会造成对于补充信息的过分依赖,反而忽视了原本的主要表示信息.

图3 参数敏感性

5 总结

本文提出了一种面向医生的患者病案推荐算法,通过在医疗实体网络引入患者病案节点,将患者病案对应的不同种医疗实体关系进行建模,通过异构图嵌入方法获取了在患者病案相似度衡量中更为优越的病案表示,最大程度地利用了数据当中的信息,并基于此实现了患者病案推荐.本方法在各个评价指标上均有上升.在真实世界中,由于医疗实体的数目繁多,难以全部涵盖于模型中,因此存在冷启动的问题.下一步,将会考虑利用时间因素进行建模,对患者入院后的医生的每个诊断后进行在线学习,提高实时性能.

猜你喜欢

病案异构实体
ETC拓展应用场景下的多源异构交易系统
质量控制在病案管理工作中的实施
离散异构线性多智能体系统的输出一致性
试论同课异构之“同”与“异”
病案数字化质量控制研究
病案信息化在病案服务利用中的应用效率分析
凝聚与铺张——孙绍振教授《以丑、呆为美》两岸同课异构教学观摩后记
实体书店步入复兴期?
2017实体经济领军者
两会进行时:紧扣实体经济“钉钉子”