1.基于药物映射和诊断增强的药物推荐方法,其特征在于,包括步骤:S1、构建药物推荐模型的数据集:下载公开医疗数据集,对所述医疗数据集进行预处理,按比例划分得到训练数据、验证数据和测试数据,组合形成最终数据集;
S2、构建药物推荐模型:所述药物推荐模型包括诊断增强模块、药物映射模块、药物推荐器模块和联合训练模块;
所述诊断增强模块以诊断信息、治疗手段信息、身体检查信息为输入,输出增强的诊断信息至药物推荐器模块;
所述药物映射模块以诊断信息、治疗手段信息、药物信息为输入,输出映射的药物信息充当单一疾病药物推荐的训练标签至药物推荐器模块;
所述药物推荐器模块以增强的诊断信息、全部药物信息、全部诊断信息、全部治疗手段信息为输入,输出药物推荐概率;
所述联合训练模块以药物推荐概率为输入,定义局部损失函数和全局损失函数,优化单一疾病药物推荐任务与整体药物推荐任务目标;
S3、训练药物推荐模型:在步骤S1的最终数据集中,采用二进制交叉熵损失函数与多标签铰链损失函数构建总损失函数,使用Adam优化器对步骤 S2 的药物推荐模型进行多轮迭代训练;
步骤S1中所述医疗数据集包含病人诊断记录、病人治疗手段记录、病人身体检查记录和病人处方记录,所述预处理包括按病人编号与病案编号整合四类记录,形成包含诊断信息、治疗手段信息、身体检查信息、药物信息的就诊记录;
步骤S2中所述诊断增强模块先通过预定义诊断增强Prompt模板构成诊断增强Prompt并送入大语言模型匹配,建立诊断与治疗手段、身体检查之间的对应关系,生成未经检查的诊断增强信息;再将所述未经检查的诊断增强信息通过诊断检查Prompt模板生成诊断检查Prompt并送入大语言模型审核,审核通过的信息作为增强的诊断信息;所述药物映射模块先通过预定义药物映射Prompt模板生成药物映射Prompt并送入大语言模型映射,建立药物与诊断、治疗手段之间的对应关系,生成未经检查的药物映射信息;将所述未经检查的药物映射信息通过药物检查Prompt模板生成药物检查Prompt并送入大语言模型审核,审核通过的信息作为映射的药物信息;所述药物推荐器模块包括诊断编码子模块和药物编码子模块,所述诊断编码子模块生成增强的诊断表示,所述药物编码子模块构建外部知识图获得药物表示,再经加权聚合与Sigmoid激活函数计算药物推荐概率;
所述诊断编码子模块的具体实现包括:将诊断、治疗手段、身体检查通过嵌入矩阵转换为嵌入表示,通过交叉注意力机制计算治疗手段、身体检查对诊断的影响权重,加权聚合后得到增强的诊断表示;
所述药物编码子模块的外部知识图包括四种:药物和药物共现图、药物和药物不利相互作用图、药物和诊断共现图、药物和治疗手段共现图;
使用图卷积网络对药物和药物共现图、药物和药物不利相互作用图进行建模:,
,
,
, ,
其中, 、 分别是药物和药物共现表示与药物和药物不利相互作用表示; 、是可学习的参数矩阵; 是药物和药物共现图,是统计药物推荐训练数据集中全部的药物共现的频率得出来的矩阵,矩阵中值大小在0到1之间; 是药物和药物不利相互作用图,用于说明每一对药物是否有不利作用,有则为1,没有则为0; 、 分别是两个图中初始化的药物表示;ReLU是ReLU激活函数; 表示矩阵 中的第i行第i列的值, 为对角矩阵;表示单位矩阵, 表示作为超参数的激活函数, 为函数 的自变量;
使用图注意力网络对药物和诊断共现图、药物和治疗手段共现图进行建模:,
,
, ,
,
其中, 、 分别是药物和诊断共现表示和药物和治疗手段共现表示; 、 、是可学习的参数矩阵; 是药物和诊断共现图,是统计药物推荐训练数据集中全部的药物与全部的诊断在同一处方中共同出现的频率得出的矩阵,矩阵中值大小在0到1之间;
是药物和治疗手段共现图,是统计药物推荐训练数据集中全部的药物与全部的治疗手段在同一处方中共同出现的频率得出的矩阵,矩阵中值大小在0到1之间; 为初始化的药物表示; 、 为诊断编码子模块输出的初始化的诊断与治疗手段表示;LeakyReLU是LeakyReLU激活函数;m表示药物,p表示治疗手段,M表示全部药物的集合, 表示第i个节点的邻居,H表示多头注意力中注意力头的个数,和 表示邻居节点集合中第 或 个邻居节点, 表示第k个邻居节点的嵌入表示,可能为 中某个诊断的嵌入表示或者 中某个治疗手段的嵌入表示, 表示第i个药物节点的嵌入表示;
最后将四个图中的药物嵌入进行加权聚合获得药物表示:
,
其中, 、 、均为可学习参数;[;]表示拼接操作;
药物推荐概率为:
,
其中, 是可学习的参数矩阵;Softmax和Sigmoid分别是Softmax和Sigmoid激活函数。
2.根据权利要求1所述基于药物映射和诊断增强的药物推荐方法,其特征在于,步骤S2中所述诊断增强Prompt模板要求输出形式为[“诊断”,[“治疗手段”],[“身体检查”]]的三元组列表,所述诊断检查Prompt模板要求审核三元组内医学关联性,符合则输出“1”,否则输出“0”;
所述药物映射Prompt模板要求输出形式为[“药物”,[“诊断”],[“治疗手段”]]的三元组列表,所述药物检查Prompt模板要求审核三元组内医学逻辑性,符合则输出“1”,否则输出“0”。
3.根据权利要求1所述基于药物映射和诊断增强的药物推荐方法,其特征在于,所述诊断编码子模块采用交叉注意力机制生成增强的诊断表示:,
, ,
,
其中, 、 、 为可训练嵌入矩阵,将诊断、治疗手段和身体检查转换为嵌入表示、 、 , 、 、 为当前增强后的诊断信息中的诊断、该诊断对应的多个治疗手段、身体检查信息; 、 为两个交叉注意力机制的可学习的参数矩阵; 是嵌入向量表示的维度;Softmax代表Softmax激活函数; 、 分别代表计算了重要性之后的治疗手段表示和身体检查表示; 为增强的诊断表示; 为可训练的参数矩阵, 为可训练的偏置参数。
4.根据权利要求1所述基于药物映射和诊断增强的药物推荐方法,其特征在于,所述联合训练模块基于最大化的池化生成的全局药物推荐概率 为:,
,
其中, 为结合局部药物推荐任务和全局药物任务的最终训练使用的损失函数, 、 分别是第i个病人中第k个诊断的药物推荐任务的损失函数和全局药物推荐任务的损失函数; 是超参数,用于平衡局部药物推荐任务和全局药物推荐任务; 是第i个病人第j次就诊的诊断信息集合。
5.根据权利要求4所述基于药物映射和诊断增强的药物推荐方法,其特征在于,所述步骤S3中药物推荐模型的总损失函数构建过程为:,
,
其中, 为二进制交叉熵损失函数, 为多标签铰链损失函数, 表示针对第i病人的第j个诊断第k个药物被推荐的概率; 表示针对第i病人的第j个诊断第k个药物是否被推荐的真实标签;M是全部的药物的集合;
将上述损失函数带入到联合训练模块中,得到最终的损失函数:
,
其中, 和 具有相同的数学定义,统一表示为 , 为用来协调二进制交叉熵损失函数和多标签铰链损失函数的超参数。
6.根据权利要求1所述基于药物映射和诊断增强的药物推荐方法,其特征在于,所述Adam优化器的学习率设置为 0.0001,其他超参数采用PyTorch默认值;所述训练数据、验证数据、测试数据的划分比例为4:1:1。
7.基于药物映射和诊断增强的药物推荐系统,其特征在于,用于实现权利要求1所述方法,包括:药物推荐数据集构建单元:用于下载公开医疗数据集,对所述医疗数据集进行预处理,并按比例划分训练数据、验证数据、测试数据;
药物推荐模型构建单元:用于构建诊断增强模块、药物映射模块、药物推荐器模块和联合训练模块,形成药物推荐模型预测病人当前就诊所需的药物推荐概率;
药物推荐模型训练单元:用于构建总损失函数,采用Adam优化器,对药物推荐模型进行多轮迭代训练。