本发明涉及预测诊断技术领域,尤其涉及一种基于注意力的双向递归神经网络的诊断预测方法。
背景技术:
电子健康记录(electronichealthrecords,ehr)由纵向的患者健康数据组成,患者ehr数据包括随时间推移的就诊序列,其中每次就诊包含多个医疗代码,包括诊断、用药和程序代码,已经成功地应用于医疗保健中的几个预测建模任务。ehr数据由一组高维临床变量(即、医疗规范)。其中一个关键任务是根据患者的既往ehr数据预测未来的诊断,即诊断预测。
在预测诊断时,每个病人的就诊时间和每次就诊的医疗编码可能具有不同的重要性。因此,诊断预测中最重要、最具挑战性的问题是:1.如何正确建模这些时间和高次二ehr数据,以显著提高预测性能;2.如何在预测结果中合理解释就诊和医疗规范的重要性。
诊断预测是一项具有挑战性和重要意义的工作,预测结果的准确预测是医疗预测模型的难点和关键问题。现有的许多诊断预测工作都采用了深度学习技术,如递归神经网络(rnns)来建模时间和高维的ehr数据。然而,基于rnn的方法可能不能完全记住以前的所有访问信息,从而导致错误的预测。
技术实现要素:
本发明的目的在于提供一种基于注意力的双向递归神经网络的诊断预测方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于注意力的双向递归神经网络的诊断预测方法,包括如下步骤:
s1,构建患者电子健康病历中的医疗代码xt作为诊断、干预编码、入院类型和时间推移序列的模型;根据时间1到t的访问信息,将第i次访问的医疗编码xi∈{0,1}|c|嵌入到向量表示vi中:
vi=relu(wvxi+bc)
其中,|c|是独特医疗代码的数量,m是嵌入维度大小,wv∈m×|c|是医疗代码的权重,bc∈m是偏置向量。relu是定义为relu(v)=max(v,0)的整流线性单元,max()按元素顺序应用于向量;
s2,根据不同注意机制状态构建不同的双向递归神经网络:
将矢量vi输入双向递归神经网络(brnn),输出隐藏状态hi作为第i次访问的表示,隐藏状态集合记为
其中,
s3,根据相对重要性αt和
通过以下softmax函数获得αt:
αt=softmax([αt1,αt2,…,αt(t-1)]).
其中,通过注意机制计算相对重要性αt中的αti;
s4,根据上下文状态向量ct和当前隐藏状态ht,使用一个简单的连接层来组合来自两个向量的信息,从而生成一个注意力隐藏状态向量,如下所示:
其中,wc∈r×4p是权重矩阵;
s5,将注意力隐藏状态向量
其中,
优选地,s2中,所述通过注意机制计算相对重要性αt中的αti,具体包括:
基于位置的注意函数,根据当前的隐藏状态hi单独计算权重,如下所示:
其中,wα∈2p,
或,一般注意函数,使用一个矩阵wα∈2p×2p来捕获ht和hi之间的关系,计算权重如下所示:
或,基于连接的函数,使用一个多层感知器mlp,首先连接当前隐藏状态hs和先前状态hi,然后通过乘以权重矩阵wα∈q×4q获得潜在的向量,q是潜在的维度,选择tanh作为激活函数,注意权重向量生成如下:
其中,υα∈q是要学习的参数。
优选地,s5之后,还包括步骤对预测进行解释,具体为:
使用非负矩阵
其中,
本发明的有益效果是:本发明提供的基于注意力的双向递归神经网络的诊断预测方法,首先将高维的医学编码(即临床变量)嵌入低码层空间,然后将编码表示输入到一个基于注意力的双向递归神经网络中,生成隐藏状态表示。通过softmax层输入隐藏的表示,以预测未来访问的医疗代码。实验数据表明,采用本实施例提供的方法,在预测未来访问信息时,注意机制可以对之前的访问分配不同的权重,不仅能够有效的完成诊断预测任务,而且能够合理地解释预测结果。
附图说明
图1是本发明提供的基于注意力的双向递归神经网络的诊断预测方法流程示意图;
图2是具体实施例中对五位患者的注意机制分析结果示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明提供了一种基于注意力的双向递归神经网络的诊断预测方法,包括如下步骤:
步骤1)构建患者电子健康病历中的医疗代码xt作为诊断、干预编码、入院类型和时间推移的序列的模型;
步骤2)根据不同注意机制状态构建不同的双向递归神经网络;
步骤3)进行诊断预测;
步骤4)对预测进行解释。
关于上述步骤详细的解释如下:
电子健康记录(electronichealthrecords,ehr)由纵向的患者健康数据组成,患者ehr数据包括随时间推移的就诊序列,其中每次就诊包含多个医疗代码,包括诊断、用药和程序代码。将来自ehr数据中所有独特医疗代码记为c1,c2,…,c|c|∈c,其中|c|是独特医疗代码的数量。假设有n位患者,第n位患者在ehr数据中有t(n)次访问记录。患者可由一系列访问
根据时间1到t的访问信息,可以将第i次访问的医疗编码xi∈{0,1}|c|嵌入到向量表示vi中:
vi=relu(wvxi+bc)
其中,m是嵌入维度大小,wv∈m×|c|是医疗代码的权重,bc∈m是偏置向量。relu是定义为relu(v)=max(v,0)的整流线性单元,其中max()按元素顺序应用于向量。
将矢量vi输入双向递归神经网络(brnn),输出隐藏状态hi作为第i次访问的表示,隐藏状态集合记为
通过以下softmax函数获得一个注意权重向量αt:
一个brnn包含一个正向和后向的递归神经网络(rnn)。正向
有三种注意机制可以用来计算相对重要性αt中的αti,捕获相关信息:
基于位置的注意函数是根据当前的隐藏状态hi单独计算权重,如下所示:
其中wα∈2p和
一般注意函数是使用一个矩阵wα∈2p×2p来捕获ht和hi之间的关系,计算权重:
另一种计算αti的方法是基于连接的函数,使用一个多层感知器(mlp)。首先连接当前隐藏状态hs和先前状态hi,然后通过乘以权重矩阵wα∈q×4q可以获得潜在的向量,q是潜在的维度。选择tanh作为激活函数。注意权重向量生成如下:
其中υα∈q是需要学习的参数。
根据给出的下文向量ct和当前隐藏状态ht,使用一个简单的连接层来组合来自两个向量的信息,从而生成一个注意力隐藏状态,如下所示:
其中wc∈r×4p是权重矩阵。注意力向量
其中
在医疗保健中,对所学到的医疗代码和访问表示的可解释性非常重要,需要理解医疗编码表示的每个维度的临床意义,并分析哪些访问对预测至关重要。由于所提出的模型是基于注意机制的,因此通过对注意得分的分析,很容易发现每次访问对于预测的重要性。第t次预测,如果关注分数αti很大,那么第i+1个访问相关信息的概率预测当前高。首先使用非负矩阵
其中
具体实施例
为了说明本发明的技术效果,采用具体的应用实例对本发明进行实施验证。
实验使用两种数据集:医疗补助索赔和糖尿病索赔。医疗补助数据集包括2011年的医疗补助申请。它包含了147,810名患者和1,055,011次就诊的相关数据。患者就诊按周进行分组,排除就诊次数少于2次的患者。糖尿病数据集包括2012年和2013年的医疗补助申请,对应的是被诊断为糖尿病的患者(即申请中有icd-9诊断代码250.xx的医疗补助成员)。它包含了22,820名患者的相关数据,这些患者的就诊次数为466,732次。患者就诊按周汇总,排除就诊次数少于5次的患者。
对于每个数据集,以0.75:0.1:0.15的比例将数据集随机分为训练、验证和测试集。验证数据集用于确定参数的最佳值,执行100次迭代,并报告每种方法的最佳性能。
实验一:
统计数据集如表1所示:
表1
实验二:
执行以下基线模型:(1)med2vec(模型1);(2)retain(模型2);(3)rnn(模型3)。
执行以下基于rnn的预测模型:(1)用基于位置的注意函数计算相对重要性的rnnl(模型4);(2)用一般注意函数计算相对重要性的rnng(模型5);(3)用基于连接的注意函数计算相对重要性的rnnc(模型6)。
执行以下dipole模型:(1)不使用任何注意机制的dipole-(模型7);(2)用基于位置的注意函数计算相对重要性的dipolel(模型8);(2)用一般注意函数计算相对重要性的dipoleg(模型9);(3)用基于连接的注意函数计算相对重要性的dipolec(模型10)
实验结果及分析
表2显示了所有方法在糖尿病数据集的准确率
表2
在表2可以观察到,由于大多数医疗代码都是关于糖尿病的,med2vec(模型2)可以正确地学习糖尿病数据集上的矢量比表示。因此,med2vec在三条基线中取得了最好的结果,对于医疗数据集,retain(模型3)的准确性优于med2vec。原因是医疗补助数据集中有很多疾病,而医疗编码的种类比糖尿病数据集中多。在这种情况下,注意机制可以帮助retain学习合理的参数,做出正确的预测。
在这两种数据集的所有方法中,rnn(模型1)的精度都是最低的。这是因为rnn的预测主要依赖于最近的访问信息。它不能记住所有过去的信息。然而,retain和提议的rnn变体rnnl(模型4)、rnng(模型5)和rnnc(模型6)可以充分考虑以前的所有访问信息,为过去的访问分配不同的注意力得分,并在与rnn相比的情况下取得更好的性能。
由于糖尿病数据集中的就诊大多与糖尿病有关,所以根据以往的就诊信息,很容易预测下一次就诊的医疗编码。retain使用反向时间注意机制进行预测,与使用时间顺序注意机制的方法相比,会降低预测性能。三种rnn变体的性能均优于retain。然而,retain的准确性比rnn变体要高,因为医疗补助数据集中的数据是关于不同疾病的。利用反向时间注意机制可以帮助学习正确的访问关系。
rnn和提出的dipole-(模型7)均不使用任何注意机制,但在糖尿病和医疗补助数据集上,dipole-的准确性均高于rnn。结果表明,从两个方向对访问信息进行建模可以提高预测性能。因此,采用双向递归神经网络进行诊断预测是合理的。
提出的dipolec(模型10)和dipolel(模型8)分别在糖尿病和医疗补助数据集上取得了最好的表现,这说明从两个方向对就诊进行建模,并为每次就诊分配不同的权重,都可以提高医疗诊断预测任务的准确性。在糖尿病数据集上,dipolel和dipolec优于所有基线和建议的rnn变体。在医疗补助数据集上,dipolel、dipoleg和dipolec三种方法的性能均优于基线和rnn变体
图2显示了一个案例研究预测医疗代码在第六访问(y5)基于前面的糖尿病数据集访问。根据隐藏状态h1,h2,h3计算第二次到第五次访问的基于连接的注意权重。在图2中,x轴为患者,y轴为每次就诊的注意权重。在这个案例研究中,试验选择了5名患者。可以观察到,对于不同的患者,通过注意机制学习到的注意得分是不同的。对于图2中的第二个病人,在表3中列出了所有的诊断代码:
表3
首先从图2中获得患者2四次访问的权重α=[0.2386,0.0824,0.2386,0.0824]。通过对这一注意向量的分析,可以得出结论,第二次、第四次和第五次就诊时的医疗编码对最终的预测有显著影响。从表3可以看出,患者在第二次和第四次就诊时出现原发性高血压,第五次就诊时诊断为糖尿病。因此,第6次就诊的糖尿病和原发性高血压相关疾病的医疗编码的概率较高。
综上所述,dipole可以弥补建模ehr数据和解释预测结果的挑战。利用双向递归神经网络,dipole可以记住以往和未来访问中所学到的隐藏知识。三种注意机制能够合理地解释预测结果。在两个大型真实ehr数据集上的实验结果证明了该dipole在诊断预测任务中的有效性。分析表明,在预测未来访问信息时,注意机制可以对之前的访问分配不同的权重。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明提供的基于注意力的双向递归神经网络的诊断预测方法,首先将高维的医学编码(即临床变量)嵌入低码层空间,然后将编码表示输入到一个基于注意力的双向递归神经网络中,生成隐藏状态表示。通过softmax层输入隐藏的表示,以预测未来访问的医疗代码。实验数据表明,采用本实施例提供的方法,在预测未来访问信息时,注意机制可以对之前的访问分配不同的权重,不仅能够有效的完成诊断预测任务,而且能够合理地解释预测结果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。