1 介绍
预测胎儿体重是产前监护的重要内容, 是医生对孕妇进行临床处理的重要依据. 近年来研究显示, 低体重儿的存活率和扛感染能力相对低下[, 并且与低智商有密切联系[. 而巨大儿则会引起胎儿宫内窘迫、新生儿窒息、肩难产[等. 产前预测胎儿体重, 对于避免新生儿体重异常, 恰当选择分娩方式具有重要意义. 孕妇的产前体检记录属于特殊的电子病历. 围产医学规定的产前体检、孕妇个人的健康状况和高危妊娠的随访等使得孕妇的体检次数和体检时间间隔各不相同. 因而造成了体检事件在妊娠时间上的不均匀时间间隔分布. $\Delta {T_k}$表示, 相邻两次体检之间的时间间隔用
$\Delta {t_k}$表示
$(k = 1,2,3,\cdots,N)$. 孕妇每次体检的时间间隔不仅与妊娠时间有关, 而且与相邻两次体检之间的时间间隔有密切联系. 传统的RNN和LSTM模型默认序列之间是相等时间间隔的, 以序列的先后顺序表示时间信息, 在模型层面并没有时间概念, 难以充分有效地表征数据不均匀时间间隔的关系. 基于以上, 本研究从模型层面出发, 将妊娠时间
$\Delta T$和间隔时间
$\Delta t$做嵌入表示, 在LSTM模型中的“遗忘门”和“记忆门”分别增添“时间门”, 模型以“时间门控”的方式控制“状态”信息, 间接表征不均匀时间间隔信息. 文章安排如下: 第1部分介绍, 阐明胎儿体重预测的意义和孕妇的体检事件分布特点, 第2部分相关工作, 阐述目前胎儿体重预测任务的主流方法和不足, 以及深度学习在电子病历中的应用. 第3部分是任务定义和模型介绍, 第4部分是数据预处理和实验设计, 第5部分是实验结果和讨论, 最后部分是结论.
图 1
Fig. 1
图 1 孕妇产前体检记录分布示意图
2 相关工作
在临床工作中, 产科医生经常采用宫高腹围测量法[和超声测量法[估算胎儿体重. 两者根据孕妇的检查数据为参数, 通过公式来估计胎儿体重. 宫高腹围法简单快捷无副作用, 孕妇可在家中自行测量. 超声法则以其更精确的优点成为目前应用最广泛的方法. 但是, 这两种方法均存在不同的弊端. 首先, 由于产科工作的特殊性, 在一些紧急情况下不能及时为孕妇完成超声检查, 此时使用宫高腹围法便成为一个很好的选择. 超声法是目前较为准确的测量方法, 但是, 多次做超声检查是否有副作用存在争议, 一般情况下, 孕妇产前的超声检查仅为3–4次. 除以上两种公式估算方法外, 机器学习方法也可以将孕妇的宫高、腹围, 胎儿的双顶径、头围、腹围、股骨长等数据为参数预测胎儿体重, 在刁晓娣等的研究中[, 使用人工神经网络预测胎儿体重, Xu ZP等[在人工神经网络中添加了正则化条件来预测胎儿体重. 虽然, 机器学习方法已应用到胎儿体重预测任务中, 但是其方法大多为人工神经网络, 不同的研究虽对人工神经网络有不同的修改, 但其本质仍旧是MLP(多层感知机). 无论是宫高腹围法、超声测量法还是经典机器学习方法, 仅取孕妇分娩前一周内的数据作为估算或预测参数, 而忽略了孕妇在多次体检记录中反映出来的变化. 其次, 在胎儿体重预测的研究中, 尚未将孕妇的高危妊娠和疾病信息考虑进去. 因此, 此类研究不具有普适性.
3 变长时间间隔LSTM模型
孕妇在孕周时间上的体检统计分布如
图 2
Fig. 2
图 2 孕妇体检周统计分布图(前30种统计分布)
本文用
$P = \{ {p^1},{p^2}, \cdots ,{p^i}, \cdots ,{p^N}\} $表示孕妇集合, 用
$R = \{ {r^1},{r^2}, \cdots ,{r^i}, \cdots ,{r^N}\} $表示孕妇体检记录集合.
$N$表示孕妇总人数,
$i$表示第
$i$个孕妇, 孕妇
${p^i}$对应的体检记录为
${r^i}$. 每一个孕妇的体检记录和体检时间表示为
${M^i}: = [(r_1^i,t_1^i),(r_2^i,t_2^i), \cdots ,(r_k^i,t_k^i), \cdots ,(r_l^i,t_l^i)]$. 其中,
$r_k^i$和
$t_k^i$分别表示第
$i$个孕妇的第
$k$次体检的记录和时间,
$l$表示体检次数. 根据
$[t_1^i,t_2^i, \cdots ,t_k^i, \cdots ,t_l^i]$, 当前的妊娠时间
$\Delta T_k^i$和距上次体检的间隔时间
$\Delta t_k^i$的计算方式分别如式(1), 式(2):
$\Delta T_k^i = t_k^i$
(1)
$ \Delta t_k^i = t_k^i - t_{k - 1}^i, \;\; {\rm{s.t.}}\;\;\;k \in {N^ + },t_0^i = 0 $
(2)
本文的目标是根据Mi, 输出胎儿出生体重的预测值. 在标准的RNN和LSTM中, 第
$k$个时间步的输入是
${x_k} = r_k^i \oplus t_k^i$, 其中,
$ \oplus $表示
$r_k^i$和
$t_k^i$做向量拼接. 在变长时间间隔LSTM中, 第
$k$个时间步的输入是
${x_k}$,
$\Delta T_k^i$,
$\Delta t_k^i$. 由于孕妇第一次体检无间隔时间
$\Delta t$, 故令
$\Delta t_1^i = \Delta T_1^i$.
变长时间间隔LSTM模型即为Variable Time Interval-LSTM (VTI-LSTM). 标准的LSTM模型的表达式[如式(3)–式(7):
${i_k} = {\sigma _i}({x_k}{W_{xi}} + {h_{k - 1}}{W_{hi}} + {w_{ci}} \odot {c_{k - 1}} + {b_i})$
(3)
${f_k} = {\sigma _f}({x_k}{W_{xf}} + {h_{k - 1}}{W_{hf}} + {w_{cf}} \odot {c_{k - 1}} + {b_f})$
(4)
${c_k} = {f_k} \odot {c_{k - 1}} + {i_k} \odot tan{h_c}({x_k}{W_{xc}} + {h_{k - 1}}{W_{hc}} + {b_c})$
(5)
${o_k} = {\sigma _o}({x_k}{W_{xo}} + {h_{k - 1}}{W_{ho}} + {w_{co}} \odot {c_k} + {b_o})$
(6)
${h_k} = {o_k} \odot {\sigma _h}({c_k})$
(7)
LSTM模型结构如$\Delta T$和间隔时间
$\Delta t$做嵌入表征[, 如式(8), 式(9):
$T{1_k} = {\sigma _{t1}}({x_k}{W_{xT}} + {\sigma _{tt1}}(\Delta {T_k}{W_{tt1}}) + {b_{t1}})$
(8)
$T{2_k} = {\sigma _{t2}}({x_k}{W_{xt}} + {\sigma _{tt2}}(\Delta {t_k}{W_{tt2}}) + {b_{t2}})$
(9)
然后, 本文分别向Standard LSTM模型的“输入门”和“遗忘门”中以时间门控的方式引入妊娠时间
$\Delta T$和间隔时间
$\Delta t$, 即, 将式(5)换为式(10):
$ \begin{split} &{c_k} = (1 - T{2_k}) \odot {f_k} \odot {c_{k - 1}}\\ &\quad +{i_k} \odot T{1_k} \odot tan{h_c}({x_k}{W_{xc}} + {h_{k - 1}}{W_{hc}} + {b_c}) \end{split}$
(10)
对于式(10)中
$(1 - T{2_k})$项, 时间间隔的嵌入表征
$T{2_k}$越小, 模型对过去事件的“遗忘”越少. 而
$T{1_k}$则表示某次体检的妊娠时间对该次输入的“记忆”的多少. VTI-LSTM模型结构如${x_k}$和
$\Delta {T_k}$, 时间门2的输入是
${x_k}$和
$\Delta {t_k}$.
4 实验和数据
4.1 特征筛选
研究表明, 胎儿体重不仅与孕妇的宫高[、腹围[相关, 而且与身高体重[、年龄、糖尿病[等因素有关. 本研究中, 本文选取孕妇的宫高腹围和高危因素等方便获取的参数作为模型的输入特征. 根据数据中的特征, 计算各项特征与胎儿体重的皮尔森相关系数和P值. 皮尔森相关系数计算公式如式(11).
图 3
Fig. 3
图 3 两个LSTM模型图
$\rho = \frac{{\displaystyle \sum\limits_{i = 1}^N {({x_i} - \bar x)} ({y_i} - \bar y)}}{{(n - 1){s_x}{s_y}}}$
(11)
其中,
${x_i}$和
${y_i}$分别是两个变量的数据项,
$\bar x$和
$\bar y$分别是两个变量的平均值, N是样本总数.
${s_x}$和
${s_y}$分别是两个变量的标准差. P值即为原假设H0:
$\rho = 0$, 备择假设H1:
$\rho \not = 0$的t分布双边检验. P值计算公式如式(12), 式(13):
$t = \frac{{\rho \sqrt {n - 2} }}{{\sqrt {1 - {\rho ^2}} }}$
(12)
${P_{\rm{value}}} = 2 \times P(T > t)$
(13)
其中, T服从n–2自由度的t分布, Pvalue即为P值. 计算结果如P值低于0.05的特征, 包含妊娠周、年龄、身高、体重、宫高、腹围、胎次、早产史、胎盘异常、胎位不正、胎膜早破、糖尿病、辅助生殖、多胎共14个特征. 其中, 妊娠周、年龄、身高、体重、宫高、腹围、胎次属于数值型数据, 早产史、胎盘异常、胎位不正、胎膜早破、糖尿病、辅助生殖、多胎属于类别型数据.
表 1(Table 1)
表 1 相关性分析结果
数据项
妊娠周
年龄
身高
体重
宫高
腹围
胎心率
血型
RH型
婚姻状况
胎次
早产史
系数
0.526
0.019
0.159
0.276
0.431
0.345
–0.019
–0.008
–0.005
0.001
0.051
–0.020
P值
0.000
0.046
0.000
0.000
0.000
0.000
0.058
0.415
0.629
0.951
0.000
0.040
数据项
疤痕子宫
甲状腺病
胎盘异常
胎位不正
胎膜早破
高血压
糖尿病
心脏病
性病
辅助生殖
多胎
系数
–0.001
–0.005
–0.020
–0.027
–0.046
0.011
0.037
0.016
0.004
–0.072
–0.214
P值
0.936
0.601
0.041
0.005
0.000
0.243
0.000
0.100
0.715
0.000
0.000
表 1 相关性分析结果
4.2 数据预处理
将胎儿体重以小于2500 g、在2500 g和4000 g之间、大于4000 g为标准分别划分为低体重儿、正常体重儿、巨大儿, 如$I1$、$I2$、$I3$, 区间内胎儿体重数值种类的数量分别记为
$C1$、$C2$、$C3$, 则各区间的密度分别记为式(14)~式(16),
表 2(Table 2)
表 2 胎儿体重分类
胎儿体重 weight (g)
数量(个)
weight<2500
357
2500<=weight<=4000
9774
weight>4000
342
表 2 胎儿体重分类
图 4
Fig. 4
图 4 胎儿体重分布图
$D1 = \frac{{C1}}{{I1}}$
(14)
$D2 = \frac{{C2}}{{I2}}$
(15)
$D3 = \frac{{C3}}{{I3}}$
(16)
在区间I1上, 对样本进行一次线性归一化, 如式(17):
$V_{\rm{new}}^{I1} = \frac{{V_{\rm{origin}}^{I1} - V_{\rm{min}}^{I1}}}{{V_{\rm{max}}^{I1} - V_{\rm{min}}^{I1}}}$
(17)
其中,
$V_{\rm{origin}}^{I1}$是区间I1上原始数据的取值,
$V_{\rm{min}}^{I1}$和
$V_{\rm{max}}^{I1}$分别是区间中最小值和最大值.
$V_{\rm{new}}^{I1}$是经过公式计算后的结果. 对I2和I3也做类似计算得
$V_{\rm{new}}^{I2}$和
$V_{\rm{new}}^{I3}$. 那么, 各区间分段缩放后的取值分别为式(18)~式(20),
$I{1_{\rm{new}}} = D1 \times V_{\rm{new}}^{I1}$
(18)
$I{2_{\rm{new}}} = D2 \times V_{\rm{new}}^{I2} + D1$
(19)
$I{3_{\rm{new}}} = D3 \times V_{\rm{new}}^{I3} + D1 + D2$
(20)
将
$I{1_{\rm{new}}}$、$I{2_{\rm{new}}}$、$I{3_{\rm{new}}}$合并为一个大区间, 记为
${I_{\rm{total}}}$, 再对
${I_{\rm{total}}}$做一次类似式(14)的线性归一化计算.
经过上述分段缩放和归一化计算, 最终, 数值类型数据的间隔相对均匀, 且保留了各子区间内的线性关系, 可提升模型效果. 我们对身高、体重、宫高、腹围、胎儿体重5个数值型数据做了上述计算, 其他数值型数据分布较为均匀, 仅做简单的线性归一化. 对于类别型数据, 本文采用one-hot的编码方式, 当某一孕妇的体检记录包含多种类别型数据, 那么与该孕妇对应的类别信息为multi-hot向量.
孕妇的体检次数如
4.3 实验设置
本文将产前的体检记录作为模型的输入, 胎儿出生体重作为预测目标, 10 473个孕妇的最后一次体检记录与分娩时间在同一周内. 实验分为公式法和机器学习方法2部分. 公式法是选取4个不同的胎儿体重估算公式[作为对照, 4个估算公式如式(21)~式(24), 分别对应公式法1~公式法4. 其中, BW是胎儿的出生体重(单位为g), FH是宫高(单位为cm), AG是腹围(单位为cm).
$ BW = - 1.515 + 0.092 \times FH + 0.016 \times AG $
(21)
$ BW = 13.3 \times FH - 943 $
(22)
$ BW = (AG - 67.87)/7.2 $
(23)
$ BW = - 2700 + 123 \times FH + 20 \times AG $
(24)
机器学习方法采用GBDT、MLP、SVR、RNN、LSTM、VTI-LSTM等6种模型, 损失函数采用二次代价函数, 如式(25):
$L = \frac{1}{{2N}}\sum\limits_{i = 1}^N {{{({y_i} - {{\hat y}_i})}^2}} $
(25)
其中,
${y_i}$和
$\widehat {{y_i}}$分别是预测值和真实值.
$N$是训练集中孕妇总人数. 为直观展示预测误差, 我们采用平均相对误差如式(26):
$MRE = \frac{1}{M}\sum\limits_{j = 1}^M {\frac{{|{y_j} - {{\hat y}_j}|}}{{{{\hat y}_j}}}} \times 100\% $
(26)
其中,
${y_j}$是预测值,
${\hat y_j}$是真实值. M是测试集中孕妇总人数. 在实际临床工作中, 我们更关注异常体重胎儿, 仅以回归任务的相对误差作为预测结果显然是不够的, 因此, 实验分为两个任务:
(1)对低体重儿、正常体重儿、巨大儿的分类. 分类按照
(2) 计算总体上的回归误差, 训练集不做过采样处理, 总体回归的测试集保持数据中原始的各类体重儿的比例. 训练集和测试集按照10: 1划分.
5 实验结果和讨论
胎儿体重预测结果的平均相对误差如
图 5
Fig. 5
图 5 孕妇体检次数分布图
由于在分类任务中, 我们对小样本做了过采样处理, 所以导致机器学习模型牺牲正常体重儿的结果, 偏向低体重儿和巨大儿. 观察第4列的结果, 不做小样本过采样处理的总体回归误差仍旧是VTI-LSTM效果最好, 根据
表 3(Table 3)
表 3 测试集中胎儿体重预测的平均相对误差MRE(%)
模型和方法
低体重儿
正常体重儿
巨大儿
总体
公式法1-式(21)[
44.72
6.62
16.77
8.37
公式法2-式(22)[
62.79
15.97
9.80
17.46
公式法3-式(23)[
94.08
30.81
22.76
34.28
公式法4-式(24)[
55.29
9.54
8.76
11.81
GBDT
17.19
9.77
9.31
7.84
MLP
21.77
9.62
9.16
8.96
SVR
19.95
10.41
9.95
7.83
RNN
55.56
13.04
15.56
8.56
LSTM
14.17
9.32
7.65
8.18
VTI-LSTM
13.87
10.88
7.00
7.80
表 3 测试集中胎儿体重预测的平均相对误差MRE(%)
分类预测结果的混淆矩阵如L表示低体重儿(low birth-weight infant), N表示正常体重儿(normal birth-weight infant), M表示巨大儿(macrosomia). 公式法1、公式法2、公式法4中, 将大部分样本分类到正常体重中, 仅使用腹围作为预测参数的公式法3则倾向于将样本分类到巨大儿中, 预测结果受到了孕妇腹部脂肪的影响. GBDT、MLP、SVR三者中, MLP结果相对较差, GBDT和SVR无明显差异. RNN的分类结果与公式法接近, LSTM和VTI-LSTM明显优于其他方法, LSTM与VTI-LST相比, LSTM偏向于分类到正常体重儿中, VTI-LSTM则在低体重儿和巨大儿的分类中取得最好的结果, 说明不均匀离散时间在“输入门”和“遗忘门”上的嵌入表征起到了很大的作用. 上述的方法和模型中, 无论是哪一种, 对低体重儿和巨大儿的分类仍旧是一个挑战. 根据
图 6
Fig. 6
图 6 测试集上预测结果的混淆矩阵
6 结论
本研究在胎儿体重预测任务上分别使用了4种公式法和3种经典的机器学习方法以及3种时序模型方法. 其中, 本研究提出的VTI-LSTM模型在低体重儿和巨大儿的分类预测中取得了较好的结果并在总体的误差回归上取得最小的MRE. 传统的公式法弱于经典的机器学习模型和时序模型. 而时序模型中的LSTM可以学习到孕妇每次体检的变化以及胎儿的生长速率, 预测结果有大幅提升. VTI-LSTM将每次体检的时间间隔和体检的妊娠时间在模型层面上表征, 模型可以学习到孕妇体检记录的不均匀时间间隔, 又在LSTM的基础上得到提升. 综上, 本研究可为医生和孕妇判断胎儿生长发育提供一个相对准确的参考.