链路预测与知识图谱嵌入
药物重定位可以表述为链路预测(link prediction)问题:在已知的药物–疾病、药物–靶点或蛋白–蛋白网络中,哪些尚未观察到的边最可能真实存在?Liben-Nowell 与 Kleinberg(2007)在社交网络中形式化了这一问题,Lü 与 Zhou(2011)对复杂网络中的方法做了系统综述。
基于局部结构的相似性指标
记 为 的邻居集合, 为度。
| 指标 | 定义 | 思想 |
|---|---|---|
| 共同邻居(CN) | 三角闭合:朋友的朋友是朋友 | |
| Jaccard | 对度做归一 | |
| Adamic–Adar(AA) | 低度的共同邻居更有信息量(Adamic & Adar 2003) | |
| 资源分配(RA) | 资源经共同邻居均分传递(Zhou、Lü & Zhang 2009) | |
| Katz | 所有路径,按长度几何降权 | |
| L3 | 长度为 3 的路径(Kovács 等 2019) |
蛋白网络为什么不同? Kovács 等(2019,Nature Communications)指出:两个蛋白有许多共同伙伴,往往说明它们有相似的结合界面,因而与同一类蛋白结合,而不是彼此结合;真正可能结合的,是“与我的伙伴相似的蛋白的伙伴”,即长度为 3 的路径的终点。因此在 PPI 中,L3 明显优于基于三角闭合的 CN、RA,而在社交网络中则相反。这提醒我们:相似性指标隐含了连接机制的假设,应与网络的形成机制相符。
手算例:路径 且 与 无共同邻居,则 ,而 ;若 ,。
代码示例隐藏 10% 的边后计算 AUROC:在三角闭合强的 Watts–Strogatz 网络中,CN、RA、L3 都在 0.95 左右;在同组节点共享伙伴但彼此不相连的分块二分网络中,CN 与 RA 只有 0.48,L3 为 0.86。
知识图谱嵌入
知识图谱由三元组 (头实体、关系、尾实体)组成,例如(二甲双胍,治疗,2 型糖尿病)。知识图谱嵌入把每个实体和关系映射为向量,用打分函数 衡量三元组成立的可能性:
- TransE(Bordes 等 2013):,把关系看作嵌入空间中的平移;难以表示一对多关系。
- DistMult(Yang 等 2015):,对 、 对称,无法区分“药物治疗疾病”与“疾病治疗药物”这类有方向的关系。
- RotatE(Sun 等 2019):在复数空间中 ,,把关系看作旋转,可以表示对称、反对称、逆关系和组合关系。
训练时对每个真实三元组随机替换头或尾生成负样本,用间隔损失或对数损失优化。评估常用平均倒数排名(MRR)和 Hits@,并采用“过滤”设置——排名时剔除其他已知为真的三元组。GNN 方法(如 Decagon、TxGNN)在嵌入中进一步聚合邻居信息。
评估设计:数据泄漏与冷启动
链路预测的评估结果高度依赖测试集如何划分:
- 随机拆边:测试药物–疾病对的药物和疾病都在训练图中出现过,且常有化学结构相似的近亲药物,性能被高估;
- 按实体拆分(冷启动):把某些疾病(或药物)的全部边留作测试,更接近“为一个尚无治疗的疾病找药”的真实情境。TxGNN(Huang 等 2024,Nature Medicine)就针对这种零样本场景设计评估;
- 按时间拆分:用某年之前的知识训练,预测之后才获批或发表的关系,最接近前瞻性检验。
负样本通常是“未观察到的边”,其中混有尚未被发现的真边;把它们当作确定的阴性,会让在热门实体上打分高的模型显得更好。报告链路预测结果时,应写明拆分方式、负样本的构造方法和与度(热门程度)基线的比较。