Page 421 - 《软件学报》2026年第3期
P. 421
1384 软件学报 2026 年第 37 卷第 3 期
本文实验是基于 Python 3.7.16 的 PyTorch 1.11.0 实现, 在具有 256 GB RAM 和 NVIDIA Titan V GPU 的 Intel
–3
Xeon E5-2678 机器上完成测试. 基于验证集选择最佳超参数. 模型使用 Adam 优化器, 学习率设置为 1×10 , 批大
小为 4, 训练 50 个 epoch.
3.2 评价指标及基准模型
在本研究中, 为了深入评估所提出模型的综合性能, 我们采用了 4 种广泛使用的评估指标, 包括 Jaccard 相似
系数 (Jaccard)、F1 分数 (F1-score)、精确率-召回率曲线下面积 (PRAUC) 以及药物-药物相互作用率 (也称 DDI
rate). 其中, DDI 率是一种关键的安全性能指标, 用于衡量预测结果中成对药物相互作用发生的概率. 接下来, 我们
将对上述各项评估指标进行详细定义和解释:
Jaccard 系数可以用于确定预测的药物组合与实际药物组合的相似度. 我们通过对患者 x 的总体问诊次数进
行平均计算得出最终的 Jaccard 相似性得分:
{ } { }
t t
1 N x ∑ i : m = 1 ∩ i : ˆy = 1
i
i
Jaccard = (24)
{ t } { t }
N x i : m = 1 ∪ i : ˆy = 1
t=1 i i
其中, ∩ 表示集合的交集运算, ∪ 表示集合的并集运算, N x 表示患者 x 的问诊总数.
F1 分数是一种衡量分类模型性能的指标, 它同时考虑了模型的精度和召回率, 适用于类别分布不均衡的情况.
在医学数据分析中, F1 分数常用于评估模型的诊断性能. 对于患者 x, F1 分数计算如下:
t t
|{i : m = 1}∩{i : ˆy = 1}|
t
Precision = i i (25)
t
|{i : ˆy = 1}|
i
t t
|{i : m = 1}∩{i : ˆy = 1}|
t
Recall = i i (26)
t
|{i : m = 1}|
i
t
2 N x ∑ Recall ·Precision t
F1-score = t t (27)
N x Precision +Recall
t=1
PRAUC 则通过对精确率-召回率曲线下的面积进行积分来度量模型的整体性能. 我们将药品推荐视为一个检
索问题, PRAUC 的计算方法如下:
1 N x ∑ |M| ( (
∑
t
PRAUC = Precision k) ∆Recall k) t (28)
N x
t=1 k=1
t
t
∆Recall(k) = Recall(k) −Recall(k −1) t (29)
k
其中, k 是检索到的药品在排序中的排名, Precision(k) 是在排序后的检索列表中截止 时的精度, ∆Recall(k) 是从
药品 k −1 到 k 的召回率变化.
DDI 率是指模型预测为正例的药物对中, 真实存在 DDI 的比例, 具体定义为预测药物中存在的 DDI 对数除以
可能的药物组合对的对数, 即: DDI 率=DDI 对数/可能的药物组合对的对数.
| C t ˆ |
∑
1{[A d ] lk = 1}
1 N x ∑ l,k=1
DDI rate = (30)
N x | C t ˆ |
t=1 ∑
1
l,k=1
t
其中, ˆ C 为预测结果, 而 1{·} 是一个函数, 当 {·} 中的表达式为真时返回 1, 否则返回 0.
为了验证我们提出的 SSMD 模型在药物组合推荐任务中的优越性, 本文选取了 13 种基线方法进行对比实验.
具体来说, 这些比较方法包括如下.
1) LR (logistic regression): 一种带有 L2 正则化的逻辑回归模型, 广泛应用于分类问题. 采用 One-vs-Rest (OvR)
多类策略进行多标签预测, 即一类样本拟合一个分类器.
2) ECC (ensembles classifier chain) [55] : 使用多热向量对诊断和手术集进行编码, 并利用多个 SVM 分类器进行

