1 Introduction

目前已经有一些药品推荐系统开发用于辅助医生去开精准的药物处方。

  • 有一些方法是基于临床医生的经验和临床指南所设计的基于规则的工具。这些工具的开发、设计都会耗费大量的人力、物力。针对特定疾病开发的该类工具可能相对容易,但是对于患有复杂疾病患者来说可能就比较困难了。
  • 还有一些使用监督学习方法来为患者推荐用药的算法,这类算法通常是输入一些特征,然后输出多个标签,即所推荐的药物。但是基于预测模型的方法会受到训练数据的限制,如果训练数据中没有的药品就没有办法进行推荐了。

一些现状与问题:

  • 通常一个患者如果患有两种或更多的病,会需要同时使用五种以上的药品。
  • 在临床中还存在着许多由于忽视了药品之间副作用而导致的开处方不当的问题。
  • 目前已经有很多的医疗知识图谱可以使用,例如DrugBank,其中包括这丰富的实体(drug, drug target, chemistry等)以及关系(enzymatic pathways, drug-drug interactions等);还有ICD本体。

    目前,所存在的医疗知识图谱中可能存在这一些关系缺失,而EMRs中的患者所使用的药品又无法体现药品之间的关系。而连接EMRs与医疗知识图谱可以生成高质量、异质的图,对于药品推荐来说是一种很有潜力的方法。但是这个方法会面临着很多挑战:
  • Computational Efficiency. 使用传统的基于图的算法会在查询特定实体或关系时造成巨大的计算代价,这种方法在可扩展性方面是有很大局限的。
  • Data Incompleteness. 医疗知识图谱通常也符合长尾分布,这种分布下的图通常会存在一些数据不完整的问题。例如,由于DDIs(drug-drug interactions)通常在临床试验时无法确定,所以在DrugBank中有很多这种关系是缺失的。
  • Cold Start. 传统的药品推荐系统在进行药品推荐的时候都基于历史记录,但是在临床实际中治疗通常是有更新交替的,所以对于更新的用药无法知晓其和其它药物之间的interaction,即便是知识图谱中这部分信息也是缺乏的。

针对上述问题,本文提出了一种基于图嵌入的药品推荐框架,其核心思想是链路预测。起的名字叫做Safe Medicine Recommendation (SMR),主要包括以下一些步骤:

  • 首先要根据EMRs数据和医疗知识图谱构建大型异质图,其中结点为实体(药品、疾病以及患者),边表示实体之间的各种关系,如DDIs。
  • 将异质图的不同部分(患者-药品二部图、患者-疾病二部图、药品知识图谱以及疾病知识图谱)都嵌入到低维空间中。
  • 基于上边学习到的嵌入表示,每一个患者都可以用向量表示其所患疾病,然后可以放到疾病-患者图中作为一个实体,然后药品推荐的问题可以转化为链路预测问题。

本文的主要贡献:

  • 提出了一种基于图的方法以有效表示患者、疾病以及药品。这种表示方法使得即便是新的药也可以进行推荐。
  • 本文提出了一种最小化药物副作用的方法以实现安全的药品推荐。

2 The proposed framework

2.1. Problem formulation


医疗知识图谱是以三元组的形式表示的。
为了表示患者、疾病以及药物在EMRs的共现关系,下面定义了患者-疾病患者药品的二部图(bipartite graph)。



经过图的构建后,可以将SMR问题定义为如下形式:

2.2. Model description and optimization

2.2.1 Medical knowledge graph embedding

医疗知识图谱是包括多种实体、多种关系的图G=(N,R)G=(\mathcal{N},\mathcal{R})G=(N,R)。对于一个三元组(h,r,t)∈G(h,r,t)\isin G(h,r,t)G,可以使用h,r,t\bm{h},\bm{r},\bm{t}h,r,t表示三个嵌入向量。
目前已经有很多translation−basedmodelstranslation-based \ modelstranslationbasedmodels可以用于学习嵌入表示,这种方法将关系rrr看作是一种实体之间的翻译,例如h+r−t\bm{h}+\bm{r}-\bm{t}h+rtTransR是目前最好的translation−basedmodelstranslation-based \ modelstranslationbasedmodels之一。这个方法将实体与关系表示到不同的向量空间,然后再用relation-specific matrices进行连接从而获得更好的图表示。
基于以上原因,本文将实体嵌入设置为h,t∈Rk\bm{h},\bm{t}\isin \mathbb{R}^kh,tRk,关系嵌入为r∈Rd\bm{r} \isin \mathbb{R}^drRd,并且使用投影矩阵Hr∈Rk×d\bm{H}_r \isin \mathbb{R}^{k \times d}HrRk×d,从而将实体从实体空间映射到关系空间。
通过energyfunctionenergy\ functionenergyfunction来定义实体之间的translations:
z(h,r,t)=b−∣∣hHr+r−tHt∣∣L1/L2z(\bm{h},\bm{r},\bm{t})=b-||\bm{h}\bm{H}_r+\bm{r}-\bm{t}\bm{H}_t||_{L1/L2} z(h,r,t)=bhHr+rtHtL1/L2
其中bbb是偏置常数。
然后三元组(h,r,t)(h,r,t)(h,r,t)的条件概率可以表示为:
P(h∣r,t)=exp⁡{z(h,r,t)}∑h^∈Nexp⁡{z(h^,r,t)}P(h|r,t)=\frac {\exp\{z(\bm{h},\bm{r},\bm{t})\}} {\sum_{\hat{h}\isin \mathcal{N}}\exp\{z(\hat{\bm{h}},\bm{r},\bm{t})\}} P(hr,t)=h^Nexp{z(h^,r,t)}exp{z(h,r,t)}
然后P(t∣h,r)P(t|h,r)P(th,r)P(r∣h,t)P(r|h,t)P(rh,t)也可以以类似的方式进行定义。
然后可以定义观察到一个三元组(h,r,t)(h,r,t)(h,r,t)的似然:
L(h,r,t)=logP(h∣r,t)+logP(t∣h,r)+logP(r∣h,t)\mathcal{L}(h,r,t)=logP(h|r,t)+logP(t|h,r)+logP(r|h,t)L(h,r,t)=logP(hr,t)+logP(th,r)+logP(rh,t)
而目标函数就可以定义为GGG中所存在的三元组的似然:
LG=∑(h,r,t)∈GL(h,r,t)\mathcal{L}_G=\sum_{(h,r,t)\isin G}\mathcal{L}(h,r,t) LG=(h,r,t)GL(h,r,t)
根据这个公式,可以得到药品和疾病知识图谱Gm=(Nm,Rm),Gd=(Nd,Rd)G_m=(\mathcal{N}_m,\mathcal{R}_m),G_d=(\mathcal{N}_d,\mathcal{R}_d)Gm=(Nm,Rm),Gd=(Nd,Rd)的目标函数:
LGm=∑(hm,rm,tm)∈GmL(hm,rm,tm)LGd=∑(hd,rd,td)∈GdL(hd,rd,td)\mathcal{L}_{G_m}=\sum_{(h_m,r_m,t_m)\isin G_m}\mathcal{L}(h_m,r_m,t_m)\\ \mathcal{L}_{G_d}=\sum_{(h_d,r_d,t_d)\isin G_d}\mathcal{L}(h_d,r_d,t_d) LGm=(hm,rm,tm)GmL(hm,rm,tm)LGd=(hd,rd,td)GdL(hd,rd,td)

2.2.2 Bipartite graph embedding

本文使用LINE的方法将患者-疾病、患者-药品二部图转换为嵌入,即p,m,d∈Rk\bm{p},\bm{m},\bm{d} \isin \mathbb{R}^kp,m,dRk。具体过程如下所示:
给定一个患者-药品二部图Gpm=(P∪M,Epm)G_{pm}=(\mathcal{P}\cup \mathcal{M},\mathcal{E}_{pm})Gpm=(PM,Epm),可以定义患者pip_ipi服用药物mjm_jmj的概率:
p(mj∣pi)=exp⁡{z(pi,MJ)}∑m^∈Piexp⁡{z(pi,MJ)}p(m_j|p_i)=\frac {\exp{\{z(\bm{p}_i,\bm{M}}_J)\}} {\sum_{\hat{m}\isin \mathcal{P_i}} \exp{\{z(\bm{p}_i,\bm{M}}_J)\}} p(mjpi)=m^Piexp{z(pi,MJ)}exp{z(pi,MJ)}
其中z(pi,mj)=mjT⋅piz(\bm{p}_i,\bm{m}_j)=\bm{m}_j^T\cdot \bm{p}_iz(pi,mj)=mjTpi。这个式子定义的是患者iii使用M\mathcal{M}M所有药品的条件概率分布P(⋅∣pi)P(\cdot|p_i)P(pi)。而经验分布P^(⋅∣pi)\hat{P}(\cdot | p_i)P^(pi)定义为P^(mj∣pi)=wijsumi\hat{P}(m_j | p_i)=\frac {w_{ij}} {sum_i}P^(mjpi)=sumiwij,其中wijw_{ij}wij是边eije_{ij}eij的权重,也就是患者pip_ipi吃了药mjm_jmj的次数,而sumi=∑jwijsum_i=\sum_j w_{ij}sumi=jwij是患者pip_ipi吃所药的次数。于是有最大化目标函数:
LGpm=−∑pi∈Pλid(P^(⋅∣pi),P(⋅∣pi))\mathcal{L}_{G_{pm}}=-\sum_{p_i \isin \bm{P}}\lambda_id(\hat{P}(\cdot|p_i),P(\cdot|p_i)) LGpm=piPλid(P^(pi),P(pi))
其中d(⋅,⋅)d(\cdot,\cdot)d(,)为两个分布之间的距离,在本文中,使用的是KL散度计算该距离的。

2.2.3 Optimizing and training

为了学习表示,这里的嵌入的学习是同时进行的:
L=LGm+LGd+LGpm+LGpd+γC(X)\mathcal{L}=\mathcal{L}_{G_m}+\mathcal{L}_{G_d}+\mathcal{L}_{G_{pm}}+\mathcal{L}_{G_{pd}}+\gamma C(X) L=LGm+LGd+LGpm+LGpd+γC(X)
其中XXX为嵌入表示,γ\gammaγ为权衡正则化的超参数,C(X)C(X)C(X)为正则化因子。
由于直接进行优化,计算开销会很多,所以在此采用了negative sampling method的方法来转换目标函数。
这一块儿还不是很明白。

2.3 Safe medicine recommendations process

2.3.1 New patient model

对于新的患者,使用其所患的疾病来表示。在对患者进行表示时,需要考虑多种疾病的时序性。假设一个患者患有nnn种病是按照递增的次序的,则一个患者的表示为
p=∑t=1nexp⁡−t⋅dt\bm{p}=\sum_{t=1}^n\exp^{-t}\cdot{\bm{d}_t} p=t=1nexptdt
其中dt\bm{d}_tdt是第ttt个疾病的嵌入。

2.3.2 Medicine recommendation

给定一个患者ppp和其疾病ddd,即q=(p,d)q=(p,d)q=(p,d),首先需要将疾病ddd与患者ppp投影到隐空间中,然后根据下式计算的得分选择top−ktop-ktopk的药品。
S(q,mn)=pT⋅mn−∑o=1n−1∣∣mn+rinteraction−mo∣∣L1/L2S(q,m_n)=\bm{p}^T\cdot \bm{m}_n-\sum_{o=1}^{n-1}||\bm{m}_n+\bm{r}_{interaction}-\bm{m}_o||_{L1/L2} S(q,mn)=pTmno=1n1mn+rinteractionmoL1/L2
其中p\bm{p}p为患者表示,mnm_nmn为在已经推荐n−1n-1n1个的药品的基础上要推荐的药。
这个式子第一个部分计算患者与药品的相似性,然后再去计算现在这个药品和之前所选的药品之间会产生的副作用

3. Experiments and evaluation

3.1 Experimental settings

3.1.1 Data sets

使用了MIMIC-III、ICD-9、DrugBank。
在实验中药品被分为两组

  • 4525种药品是存在于EMRs中的
  • 有3529种药品是EMRs中没有的,用于冷启动测试

3.1.2 Baselines

  • Rule-based method.基于MEDI数据库中疾病与药品的对应关系来进行推荐。
  • K-Most frequent method. 选择与每一种疾病共现最多的三种药品。
  • LEAP method. 使用一种Multi-Instance Multi-Label的学习框架来训练预测模型,模型的输入为疾病的状态,输入即多种药品标签。

3.2 Evaluation methods

prediction accuracy,the ability to avoid adverse drug-drug interactions, the experienced clinical doctor assessment,capacity to process cold start problem四个方面展开。

SMR: Medical Knowledge Graph Embedding for Safe Medicine Recommendation阅读记录相关推荐

  1. 学习Knowledge Graph Embedding Based Question Answering代码笔记

    前言 最近被导师安排学习一下[Knowledge Graph Embedding Based Question Answering] 这篇paper,这篇paper的重点在于运用了Knowledge ...

  2. AutoSF- Searching Scoring Functions for Knowledge Graph Embedding

    AutoSF: Searching Scoring Functions for Knowledge Graph Embedding Abstract 衡量知识图(KG)中三元组合理性的得分函数(SFs ...

  3. 知识图谱-第三方工具:LibKGE(用于Knowledge Graph Embedding)【包含多种模型:TransE、DistMult、ComplEx、ConvE、Transformer等】

    用于Knowledge Graph Embedding的向量表示库有很多,比如: LibKGE GraphVite AmpliGraph OpenKE pykeen pykg2vec LibKGE的主 ...

  4. 《knowledge graph embedding:a survey of approaches and applications》论文阅读

    发表于TKDE 2017. knowledge graph embedding:a survey of approaches and applications abstract 1. introduc ...

  5. Knowledge Graph Embedding: A Survey of Approaches and Applications (2)

    本文是对知识图谱相关文章阅读翻译,<Knowledge Graph Embedding: A Survey of Approaches and Applications>只针对文字部分,图 ...

  6. Knowledge Graph Embedding: A Survey of Approaches and Applications【翻译】

    原文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8047276 论文名称:Knowledge Graph Embed ...

  7. 知识图谱论文阅读(十三)【2020 arXiv】Attentive Knowledge Graph Embedding for Personalized Recommendation

    题目: Attentive Knowledge Graph Embedding for Personalized Recommendation 论文链接: 代码链接: 知识图谱特征学习在推荐系统中的应 ...

  8. TransC:Differentiating Concepts and Instances for Knowledge Graph Embedding

    TransC:Differentiating Concepts and Instances for Knowledge Graph Embedding 1 介绍 1.1 问题 作者发现在实现时,对于c ...

  9. 论文阅读 AutoSF: Searching Scoring Functions for Knowledge Graph Embedding

    AutoSF: Searching Scoring Functions for Knowledge Graph Embedding AutoSF:知识图嵌入的搜索评分函数 发表期刊:2020 IEEE ...

最新文章

  1. c# 如何让tooltip显示文字换行
  2. Data Set 投票
  3. oracle创建定时任务
  4. local_response_normalization 和 batch_normalization
  5. 按值传递按引用传递按地址传递
  6. Windows - 通过注册表编辑器来删除多余盘符
  7. 整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
  8. 使用C#+Edge (Chromium)进行Web自动化测试
  9. Sublime Text 2安装插件的方法
  10. 百度春晚红包分享链接遭微信屏蔽 已有超700人集齐好运卡
  11. VMware Cloud Director 被曝严重漏洞,可导致黑客接管企业服务器
  12. 获取手机唯一标识插件_非常强大的几款手机浏览器,适用于某些黑科技功能
  13. Kubernetes 小白学习笔记(6)--kubernetes的架构与组件-Master组件
  14. 关于短信内容格式及压缩方法
  15. 01、pyqt入门使用--01布局、基本组件、第一个示例、qtdesigner大概使用
  16. 增减幅度计算机公式,增长率怎么算公式(基数为0的增长率)
  17. 6.配置dovecot
  18. 温故而知新 知识点整理
  19. Apache CarbonData快速入门指南
  20. BCrypt加密方式

热门文章

  1. 用telnet命令发送邮件
  2. 哈希函数相关的比较分析
  3. TMP的阴影性能如何
  4. CRM可以解决的七个销售管理难题
  5. Latex 首字母缩略词 首字母缩略词 正文/整体显示
  6. 智慧水务云平台助力“十四五”水安全保障规划!
  7. 一起Talk编程语言吧
  8. arduino教程-01. Arduino 板的说明
  9. php app 第三方登录接口开发文档,申请appid和appkey
  10. 我为什么选择Linux mint 21.1 “Vera“ ? Mint安装优化调教指南(分辨率DPI、主题美化)