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表示三个嵌入向量。
目前已经有很多
t
r
a
n
s
l
a
t
i
o
n
−
b
a
s
e
d
m
o
d
e
l
s
translation-based \ models
translation−based models可以用于学习嵌入表示,这种方法将关系
r
r
r看作是一种实体之间的翻译,例如
h
+
r
−
t
\bm{h}+\bm{r}-\bm{t}
h+r−t。TransR是目前最好的
t
r
a
n
s
l
a
t
i
o
n
−
b
a
s
e
d
m
o
d
e
l
s
translation-based \ models
translation−based models之一。这个方法将实体与关系表示到不同的向量空间,然后再用relation-specific matrices进行连接从而获得更好的图表示。
基于以上原因,本文将实体嵌入设置为
h
,
t
∈
R
k
\bm{h},\bm{t}\isin \mathbb{R}^k
h,t∈Rk,关系嵌入为
r
∈
R
d
\bm{r} \isin \mathbb{R}^d
r∈Rd,并且使用投影矩阵
H
r
∈
R
k
×
d
\bm{H}_r \isin \mathbb{R}^{k \times d}
Hr∈Rk×d,从而将实体从实体空间映射到关系空间。
通过
e
n
e
r
g
y
f
u
n
c
t
i
o
n
energy\ function
energy function来定义实体之间的translations:
z
(
h
,
r
,
t
)
=
b
−
∣
∣
h
H
r
+
r
−
t
H
t
∣
∣
L
1
/
L
2
z(\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)=b−∣∣hHr+r−tHt∣∣L1/L2
其中
b
b
b是偏置常数。
然后三元组
(
h
,
r
,
t
)
(h,r,t)
(h,r,t)的条件概率可以表示为:
P
(
h
∣
r
,
t
)
=
exp
{
z
(
h
,
r
,
t
)
}
∑
h
^
∈
N
exp
{
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(h∣r,t)=∑h^∈Nexp{z(h^,r,t)}exp{z(h,r,t)}
然后
P
(
t
∣
h
,
r
)
P(t|h,r)
P(t∣h,r)与
P
(
r
∣
h
,
t
)
P(r|h,t)
P(r∣h,t)也可以以类似的方式进行定义。
然后可以定义观察到一个三元组
(
h
,
r
,
t
)
(h,r,t)
(h,r,t)的似然:
L
(
h
,
r
,
t
)
=
l
o
g
P
(
h
∣
r
,
t
)
+
l
o
g
P
(
t
∣
h
,
r
)
+
l
o
g
P
(
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(h∣r,t)+logP(t∣h,r)+logP(r∣h,t)
而目标函数就可以定义为
G
G
G中所存在的三元组的似然:
L
G
=
∑
(
h
,
r
,
t
)
∈
G
L
(
h
,
r
,
t
)
\mathcal{L}_G=\sum_{(h,r,t)\isin G}\mathcal{L}(h,r,t)
LG=(h,r,t)∈G∑L(h,r,t)
根据这个公式,可以得到药品和疾病知识图谱
G
m
=
(
N
m
,
R
m
)
,
G
d
=
(
N
d
,
R
d
)
G_m=(\mathcal{N}_m,\mathcal{R}_m),G_d=(\mathcal{N}_d,\mathcal{R}_d)
Gm=(Nm,Rm),Gd=(Nd,Rd)的目标函数:
L
G
m
=
∑
(
h
m
,
r
m
,
t
m
)
∈
G
m
L
(
h
m
,
r
m
,
t
m
)
L
G
d
=
∑
(
h
d
,
r
d
,
t
d
)
∈
G
d
L
(
h
d
,
r
d
,
t
d
)
\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)∈Gm∑L(hm,rm,tm)LGd=(hd,rd,td)∈Gd∑L(hd,rd,td)
2.2.2 Bipartite graph embedding
本文使用LINE的方法将患者-疾病、患者-药品二部图转换为嵌入,即
p
,
m
,
d
∈
R
k
\bm{p},\bm{m},\bm{d} \isin \mathbb{R}^k
p,m,d∈Rk。具体过程如下所示:
给定一个患者-药品二部图
G
p
m
=
(
P
∪
M
,
E
p
m
)
G_{pm}=(\mathcal{P}\cup \mathcal{M},\mathcal{E}_{pm})
Gpm=(P∪M,Epm),可以定义患者
p
i
p_i
pi服用药物
m
j
m_j
mj的概率:
p
(
m
j
∣
p
i
)
=
exp
{
z
(
p
i
,
M
J
)
}
∑
m
^
∈
P
i
exp
{
z
(
p
i
,
M
J
)
}
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(mj∣pi)=∑m^∈Piexp{z(pi,MJ)}exp{z(pi,MJ)}
其中
z
(
p
i
,
m
j
)
=
m
j
T
⋅
p
i
z(\bm{p}_i,\bm{m}_j)=\bm{m}_j^T\cdot \bm{p}_i
z(pi,mj)=mjT⋅pi。这个式子定义的是患者
i
i
i使用
M
\mathcal{M}
M所有药品的条件概率分布
P
(
⋅
∣
p
i
)
P(\cdot|p_i)
P(⋅∣pi)。而经验分布
P
^
(
⋅
∣
p
i
)
\hat{P}(\cdot | p_i)
P^(⋅∣pi)定义为
P
^
(
m
j
∣
p
i
)
=
w
i
j
s
u
m
i
\hat{P}(m_j | p_i)=\frac {w_{ij}} {sum_i}
P^(mj∣pi)=sumiwij,其中
w
i
j
w_{ij}
wij是边
e
i
j
e_{ij}
eij的权重,也就是患者
p
i
p_i
pi吃了药
m
j
m_j
mj的次数,而
s
u
m
i
=
∑
j
w
i
j
sum_i=\sum_j w_{ij}
sumi=∑jwij是患者
p
i
p_i
pi吃所药的次数。于是有最大化目标函数:
L
G
p
m
=
−
∑
p
i
∈
P
λ
i
d
(
P
^
(
⋅
∣
p
i
)
,
P
(
⋅
∣
p
i
)
)
\mathcal{L}_{G_{pm}}=-\sum_{p_i \isin \bm{P}}\lambda_id(\hat{P}(\cdot|p_i),P(\cdot|p_i))
LGpm=−pi∈P∑λid(P^(⋅∣pi),P(⋅∣pi))
其中
d
(
⋅
,
⋅
)
d(\cdot,\cdot)
d(⋅,⋅)为两个分布之间的距离,在本文中,使用的是KL散度计算该距离的。
2.2.3 Optimizing and training
为了学习表示,这里的嵌入的学习是同时进行的:
L
=
L
G
m
+
L
G
d
+
L
G
p
m
+
L
G
p
d
+
γ
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)
其中
X
X
X为嵌入表示,
γ
\gamma
γ为权衡正则化的超参数,
C
(
X
)
C(X)
C(X)为正则化因子。
由于直接进行优化,计算开销会很多,所以在此采用了negative sampling method的方法来转换目标函数。
这一块儿还不是很明白。
2.3 Safe medicine recommendations process
2.3.1 New patient model
对于新的患者,使用其所患的疾病来表示。在对患者进行表示时,需要考虑多种疾病的时序性。假设一个患者患有
n
n
n种病是按照递增的次序的,则一个患者的表示为
p
=
∑
t
=
1
n
exp
−
t
⋅
d
t
\bm{p}=\sum_{t=1}^n\exp^{-t}\cdot{\bm{d}_t}
p=t=1∑nexp−t⋅dt
其中
d
t
\bm{d}_t
dt是第
t
t
t个疾病的嵌入。
2.3.2 Medicine recommendation
给定一个患者
p
p
p和其疾病
d
d
d,即
q
=
(
p
,
d
)
q=(p,d)
q=(p,d),首先需要将疾病
d
d
d与患者
p
p
p投影到隐空间中,然后根据下式计算的得分选择
t
o
p
−
k
top-k
top−k的药品。
S
(
q
,
m
n
)
=
p
T
⋅
m
n
−
∑
o
=
1
n
−
1
∣
∣
m
n
+
r
i
n
t
e
r
a
c
t
i
o
n
−
m
o
∣
∣
L
1
/
L
2
S(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)=pT⋅mn−o=1∑n−1∣∣mn+rinteraction−mo∣∣L1/L2
其中
p
\bm{p}
p为患者表示,
m
n
m_n
mn为在已经推荐
n
−
1
n-1
n−1个的药品的基础上要推荐的药。
这个式子第一个部分计算患者与药品的相似性,然后再去计算现在这个药品和之前所选的药品之间会产生的副作用。
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四个方面展开。