发明内容
本发明针对目前疾病诊断的查询主要从以下三方面展开:
1、症状的向量化表示与疾病的向量化表示,即在疾病诊断的过程中,对所有的疾病均认为是其所包含症状的组合表示,疾病的向量化表示可基于其所含症状的向量表示进行表示;
2、使用病例样本进行症状向量更新与疾病向量更新,计算病例样本与疾病的向量表示的距离并结合损失函数进行反向迭代更新,本发明设计了疾病与病例样本的向量化表示方法,并设计了距离计算方法与损失函数和迭代更新方法;
3、使用用户输入进行疾病辅助诊断工作,本发明设计了方法应用于疾病辅助诊断***的工作流程和疾病诊断方法。
需要注意的是本发明并不直接作用于人体,可作为医疗辅助工具,辅助医学教育科研等医学技术领域。
具体来说本发明具体提供了一种基于症状向量的医学数据处理方法,其中包括:
步骤1、通过将数据库中的症状进行向量化处理,得到由症状向量组成的初始症状集合,并根据该初始症状集合得到疾病向量,集合该疾病向量作为初始疾病集合;
步骤2、获取多个病例样本,根据该病例样本的样本向量与疾病向量间的相似度,并结合损失函数对疾病向量和症状向量进行更新,以将该初始疾病集合和该初始症状集合分别更新为最终疾病集合和最终症状集合;
步骤3、用户输入症状,根据该输入症状与该最终症状集合中各疾病向量的相似度,对该数据库中的疾病进行筛选,并将筛选出的疾病作为处理结果返回给用户。
该基于症状向量的医学数据处理方法,其中该步骤2包括:
步骤21、获取该样本向量与该初始疾病集合中疾病向量的距离,通过对距离进行排序,为该样本向量对应的病例样本中各疾病分配序号,以生成损失函数,并通过该损失函数和深度学习优化算法反向优化该初始症状集合,将该初始症状集合更新为该最终症状集合;
步骤22、使用该最终症状集合重新计算疾病向量,以将该初始疾病集合更新为该最终疾病集合。
该基于症状向量的医学数据处理方法,其中该损失函数具体为:
其中,mk为病例样本(xi,yi)的疾病集yi中疾病的序号,k表示疾病是yi中的第k个疾病,K表示yi中共有K个疾病标签。
该基于症状向量的医学数据处理方法,其中该步骤1包括:
步骤11、使用TransE模型对症状进行向量化处理;
步骤21、根据以下公式计算疾病向量:
其中,为症状的向量表示,上标k表示症状是疾病Di中的第k个症状,疾病Di中共有K个症状。
该基于症状向量的医学数据处理方法,其中该步骤2中对于给定的病例样本(xi,yi),其中xi表示病例样本(xi,yi)的症状集合,表示集合xi中的第j个症状,该病例样本的症状数为J;yi表示病例样本(xi,yi)对应的疾病集合,表示集合yi中的第k个疾病标签,该病例样本的疾病标签数为K,同时疾病标签属于疾病集合D;
该样本向量表示为:
其中,为症状的向量表示,上标j表示症状是病例样本中(xi,yi)的第j个症状,病例样本中(xi,yi)中共有J个症状。
本发明还提供了一种基于症状向量的医学数据处理***,其中包括:
向量化处理模块,通过将数据库中的症状进行向量化处理,得到由症状向量组成的初始症状集合,并根据该初始症状集合得到疾病向量,集合该疾病向量作为初始疾病集合;
集合更新模块,用于获取多个病例样本,根据该病例样本的样本向量与疾病向量间的相似度,并结合损失函数对疾病向量和症状向量进行更新,以将该初始疾病集合和该初始症状集合分别更新为最终疾病集合和最终症状集合;
筛选模块,用户输入症状,根据该输入症状与该最终症状集合中各疾病向量的相似度,对该数据库中的疾病进行筛选,并将筛选出的疾病作为处理结果返回给用户。
该基于症状向量的医学数据处理***,其中该集合更新模块包括:
获取该样本向量与该初始疾病集合中疾病向量的距离,通过对距离进行排序,为该样本向量对应的病例样本中各疾病分配序号,以生成损失函数,并通过该损失函数和深度学习优化算法反向优化该初始症状集合,将该初始症状集合更新为该最终症状集合;
使用该最终症状集合重新计算疾病向量,以将该初始疾病集合更新为该最终疾病集合。
该基于症状向量的医学数据处理***,其中该损失函数具体为:
其中,mk为病例样本(xi,yi)的疾病集yi中疾病的序号,k表示疾病是yi中的第k个疾病,K表示yi中共有K个疾病标签。
该基于症状向量的医学数据处理***,其中该向量化处理模块包括:
使用TransE模型对症状进行向量化处理;
根据以下公式计算疾病向量:
其中,为症状的向量表示,上标k表示症状是疾病Di中的第k个症状,疾病Di中共有K个症状。
该基于症状向量的医学数据处理***,其中
该集合更新模块中对于给定的病例样本(xi,yi),其中xi表示病例样本(xi,yi)的症状集合,表示集合xi中的第j个症状,该病例样本的症状数为J;yi表示病例样本(xi,yi)对应的疾病集合,表示集合yi中的第k个疾病标签,该病例样本的疾病标签数为K,同时疾病标签属于疾病集合D;
该样本向量表示为:
其中,为症状的向量表示,上标j表示症状是病例样本中(xi,yi)的第j个症状,病例样本中(xi,yi)中共有J个症状。
本发明使用TransE翻译模型生成疾病症状的向量表示;现有技术没有对疾病症状进行向量表示。本发明使用疾病所包含症状的向量均值作为疾病的向量表示,使用病例样本所包含症状的向量均值作为病例样本的向量表示,该向量表示方法可综合考虑每个症状对疾病和病例样本的影响;现有技术普遍使用症状特征空间的向量空间模型表示疾病和病例样本。本发明使用损失函数迭代更新症状和疾病的向量表示,使病例样本标签的主次顺序与向量距离计算结果的主次顺序误差逐渐减小,使向量表示更加准确;现有技术普遍没有进行对症状和疾病向量表示的更新。本发明使用上面三个步骤使症状和疾病的向量表示更加准确,向量表示是否准确直接影响距离计算结果是否准确。因此,本发明使用上述方法可以提高待诊断病例向量的与疾病向量距离计算的准确度,即提高诊断准确率。
具体实施方式
本发明以和疾病集合和症状集合为基础,提供了症状向量表示和疾病综合向量表示方法,通过计算训练病例的向量表示与疾病的向量表示之间的相似度并结合损失函数优化症状与疾病的向量表示,目标是根据迭代次数要求得到每一个症状和疾病的向量表示。
为实现上述目的,本发明采用的步骤和每一步的技术方案如下:
A.症状集合、疾病集合与病例样本集合:
本发明的应用范围在症状集合与疾病集合范围之内,疾病集合中的每个疾病在临床表现中的症状均包含在症状集合中。
A1.症状集合。本发明使用任意疾病包含的所有症状不重复地合并组成症状集合,症状集合用S表示,S={S1,S2,...,Sp},Sp代表第p种症状。
A2.疾病集合。本发明所涉及的疾病种类不重复地组合程疾病集合,疾病集合用D表示,D={D1,D2,...,Dm},Dm代表第m种疾病。
A3.病例样本集合。本发明使用病例样本集合作为训练集,进行症状向量化表示的迭代更新,病例样本集合为TrainingSet={(x1,y1),(x2,y2),...,(xN,yN)}。其中,任意(xi,yi)代表一个病例样本,xi表示该病例样本在临床中表现的症状,即该病例样本包含的症状集合,yi表示该病例样本所对应疾病集合,即该病例样本的类别标签集合,每个病例样本含有至少一个疾病标签。在病例样本(xi,yi)的疾病标签集合中,疾病标签的顺序表示疾病标签对此病例的重要程度,第1个疾病标签为该病例的主要疾病,第2个疾病标签较第1个疾病标签重要性降低,以此类推。
其中,xi表示病例样本(xi,yi)的症状集合,表示集合xi中的第j个症状,该病例样本的症状数为J,同时症状属于症状集合S;yi表示病例样本(xi,yi)对应的类别标签集合,即该病例样本对应哪几种疾病,表示集合yi中的第k个疾病标签,该病例样本的疾病标签数为K,同时疾病标签属于疾病集合D。
B.症状与疾病的向量初始化:
B1.症状的向量表示。在确定症状集合与疾病集合之后,本发明采用翻译模型,例如TransE模型训练症状集合S,进行向量表示初始化,使每一个症状都有向量化表示。本文中使用表示症状Si的向量表示。
B2.疾病的向量表示。使用TransE模型进行症状集合S的向量表示初始化之后,计算每一种疾病的综合向量表示。疾病Di的向量表示使用如下公式进行:
其中,为症状的向量表示,上标k表示症状是疾病Di中的第k个症状,疾病Di中共有K个症状。公式的含义为,疾病Di的向量表示是疾病Di中每个症状的向量表示的均值。
C.使用病例样本集合更新症状和疾病的向量表示:
对于任意一个病例样本(xi,yi),本发明设计了其特征向量的表示,用于进行症状向量表示的更新,其特征向量可表示为:
其中,为症状的向量表示,上标j表示症状是病例样本中(xi,yi)的第j个症状,病例样本中(xi,yi)中共有J个症状。公式的含义为,病例样本中(xi,yi)的向量表示是病例样本中(xi,yi)中每个症状的向量表示的均值。
在得到了病例样本的向量化表示和疾病的向量化表示之后,本发明设计了两者的距离计算方法。因此对于病例样本(xi,yi)与任意疾病Di的距离计算公式如下:
其中,为病例样本(xi,yi)的向量表示,为疾病Di的向量表示。本设计使用余弦距离计算两向量之间的距离,表示病例样本(xi,yi)与任意疾病Di的距离。
根据距离计算公式对病例样本向量与任意疾病向量Di之间的距离进行计算,将计算结果按从小到大排序,即可得到疾病按与样本(xi,yi)距离从小到大排列的顺序,并按这个顺序给每种疾病一个依次递增的序号,与样本(xi,yi)距离最近的疾病序号为1,次近的疾病序号为2,以此类推。样本(xi,yi)的标签集yi中疾病的序号如下:
(m1,m2,...,mk),疾病的序号是根据前文中的排序得到的,例如距离当前样本最近的疾病对应的序号为1,其次距离远的疾病序号为2。
则,本发明设计损失函数为:
其中,mk为样本(xi,yi)的标签集yi中疾病的序号,k表示疾病是标签集yi中的第k个疾病,即疾病在标签集yi中的下标,K表示标签集yi中共有K个疾病标签。
本发明下面更进一步描述本发明步骤,本发明的目标是在疾病诊断预测***上,实现根据用户输入的症状智能诊断出对应的疾病,提升疾病诊断预测***的准确性。详细实施步骤包含执行:A、使用病例样本集合更新症状和疾病的向量表示;B、用户输入预处理;C、求输入症状集合与每一个疾病的相似度;D、将相似度按从大到小排序筛选出满足阈值条件的疾病返回给用户。具体的一种实施方式如下:
使用病例样本集合更新症状和疾病的向量表示,其实现的基本过程方法为:
如图1所示,在疾病诊断预测***供用户使用之前,要使用病例样本集合更新症状和疾病的向量表示,使用损失函数进行反向优化。首先,对于给定病例样本(xi,yi),其中 其特征向量表示为:
在确定病例样本的向量表示和疾病的向量表示之后,使用距离计算公式进行距离计算,计算病例样本(xi,yi)特征向量与任意一个疾病Di的距离为:
将计算结果按从小到大排序,即可得到疾病按与样本(xi,yi)距离从小到大排列的顺序。在这个排序中,样本(xi,yi)的标签集yi中疾病的序号如下:
(m1,m2,...,mk)
损失函数描述了样本(xi,yi)的标签集yi中疾病在当前的症状向量表示与疾病向量表示下与样本(xi,yi)按距离从小到大排序的损失。经A3介绍,在病例样本的标签集合中,疾病标签顺序表示其重要性,第1个标签表示此病例的主要对应疾病。疾病向量与病例样本向量的距离计算结果的排序,体现了在当前症状向量表示的条件下,疾病对病例样本的重要性,距离最小的疾病是病例样本的主要对应疾病。病例的标签集yi中的疾病排序和距离计算后的疾病排序,可能出现差别,这说明距离计算对病例样本和疾病标签的对应关系产生了损失。例如,病例(xi,yi)的标签集为经过距离计算和按距离从小到大排序结果为则经过距离计算使病例与疾病标签的对应顺序产生了差别,这种差别即为损失。由于病例样本向量和疾病向量都是由症状向量表示计算得到,所以,损失的根本原因是,通过翻译模型TransE得到的症状向量表示不准确。本设计提出损失函数来衡量这种损失的大小,并利用损失函数来更新症状的向量表示。L(f(xi),yi)表示病例样本(xi,yi)的标签对应顺序与经向量距离计算后的对应顺序的差别,即病例样本(xi,yi)的标签集中的疾病顺序与距离计算后得到的疾病顺序之间的差别,称为损失。损失函数用如下式表示:
根据损失函数L(f(xi),yi),将计算得到的损失平均分配在病例(xi,yi)所含有的每个症状的向量表示上,每个症状获得的平均损失值用表示,其计算公式如下:
根据平均损失值使用深度学习优化方法,例如ADA或SMO算法反向优化每一个症状的向量表示Si,使损失函数L(f(xi),yi)最小。上述公式中,J表示病例样本包含的症状个数,L(f(xi),yi)表示当前的症状向量与疾病向量下的损失。
对每个病例样本均进行以上步骤,计算损失并反向优化,更新症状的向量表示,即完成一次症状向量的更新。使用更新后的症状向量重新计算疾病向量表示,即完成本次症状向量与疾病向量的更新。再次对每个病例样本重复上述步骤,即对症状向量和疾病向量的第二次更新。这种更新过程是迭代式的,对每个样本依次完成上述步骤即为迭代一次,再对每个样本依次完成上述步骤即为迭代两次。症状向量与疾病向量的更新次数可设置,即为迭代次数的设置。
若达到设置的迭代次数则完成向量更新工作,则最终得到每一个症状的向量表示,与每一个疾病的向量表示;若未达到迭代次数,则重复进行更新工作,直到达到要求迭代次数为止。
如图2所示,用户输入预处理,其实现的基本过程方法为:
在疾病诊断预测***中,将用户的输入转换为向量表示。首先,对用户的输入提取关键症状,提取后的关键症使用TransE进行向量初始化,表示为{S1,S2,...,SK},则用户的输入可以向量化表示为:
求输入症状集合与每一个疾病的相似度,其实现方法为:
在完成用户输入的向量化表示之后,需要计算用户输入与每一个疾病的距离:
将相似度按从大到小排序筛选出满足阈值条件的疾病返回给用户,其实现方法为:
在计算完成用户输入与每一个疾病之间的距离之后,将距离按照值从大到小排列,选取大于用户设定阈值的距离对应的疾病返回给用户。
以下为与上述方法实施例对应的***实施例,本实施***可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施***中依然有效,为了减少重复,这里不再赘述。相应地,本实施***中提到的相关技术细节也可应用在上述实施方式中。
本发明还提供了一种基于症状向量的医学数据处理***,其中包括:
向量化处理模块,通过将数据库中的症状进行向量化处理,得到由症状向量组成的初始症状集合,并根据该初始症状集合得到疾病向量,集合该疾病向量作为初始疾病集合;
集合更新模块,用于获取多个病例样本,根据该病例样本的样本向量与疾病向量间的相似度,并结合损失函数对疾病向量和症状向量进行更新,以将该初始疾病集合和该初始症状集合分别更新为最终疾病集合和最终症状集合;
筛选模块,用户输入症状,根据该输入症状与该最终症状集合中各疾病向量的相似度,对该数据库中的疾病进行筛选,并将筛选出的疾病作为处理结果返回给用户。
该基于症状向量的医学数据处理***,其中该集合更新模块包括:
获取该样本向量与该初始疾病集合中疾病向量的距离,通过对距离进行排序,为该样本向量对应的病例样本中各疾病分配序号,以生成损失函数,并通过该损失函数和深度学习优化算法反向优化该初始症状集合,将该初始症状集合更新为该最终症状集合;
使用该最终症状集合重新计算疾病向量,以将该初始疾病集合更新为该最终疾病集合。
该基于症状向量的医学数据处理***,其中该损失函数具体为:
其中,mk为病例样本(xi,yi)的疾病集yi中疾病的序号,k表示疾病是yi中的第k个疾病,K表示yi中共有K个疾病标签。
该基于症状向量的医学数据处理***,其中该向量化处理模块包括:
使用TransE模型对症状进行向量化处理;
根据以下公式计算疾病向量:
其中,为症状的向量表示,上标k表示症状是疾病Di中的第k个症状,疾病Di中共有K个症状。
该基于症状向量的医学数据处理***,其中
该集合更新模块中对于给定的病例样本(xi,yi),其中xi表示病例样本(xi,yi)的症状集合,表示集合xi中的第j个症状,该病例样本的症状数为J;yi表示病例样本(xi,yi)对应的疾病集合,表示集合yi中的第k个疾病标签,该病例样本的疾病标签数为K,同时疾病标签属于疾病集合D;
该样本向量表示为:
其中,为症状的向量表示,上标j表示症状是病例样本中(xi,yi)的第j个症状,病例样本中(xi,yi)中共有J个症状。
虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。