返回目录
公开知识笔记 · 不进入目录
KNN图构建
公开知识笔记
KNN图构建
一句话理解:当对象之间没有天然连边时,先计算相似度,再让每个对象连接最相似的K个邻居,就得到KNN图。
1. 为什么副作用需要“造一张图”
药物分子天然有化学键,而“恶心”和“头痛”之间没有直接可见的边。若想用图神经网络处理副作用,就必须规定哪些副作用应该互相传递信息。
A3Net采用频率轮廓:对每个副作用,收集它在所有训练药物上的频率,形成向量。两个副作用在不同药物上若呈现相似模式,就认为它们相似。
不要与最终向量混淆:这里的频率轮廓是从训练频率矩阵取出的一列原始标签,用来决定“哪些副作用连边”。它不是模型学习出的副作用表示。KNN先规定信息可沿哪些边传播;随后GAT才以MedDRA初始特征为输入,结合这些边学习最终副作用向量。
2. 构图步骤
设副作用的频率轮廓为:
- 计算与其他副作用的相似度;
- 对相似度排序;
- 选择最相似的K个;
- 在与这些邻居之间连边;
- 决定是否对称化、是否保留边权和自环。
K控制图的稀疏程度:K太小,信息难传播;K太大,不相似的节点也会被连上,产生过度平滑和噪声。
3. KNN与K-means不是一回事
- KNN图中的K:每个节点连几个邻居;
- K-means中的K:数据分成几个簇。
两者只是在名称中都含K,目标完全不同。
4. 最重要的评估规范:只用训练数据构图
若使用完整频率矩阵计算相似度,测试折的真实频率可能偷偷进入图结构,造成信息泄漏。正确流程是:
A3Net公开脚本在每折中用遮蔽后的训练矩阵构建副作用图,这一点是正确的。自己复现时也必须保持顺序。
5. Cold start时还要再问一步
若测试对象是整种新药,该药物整行频率都应从构图依据中移除。否则模型虽然没直接看目标标签,却可能从该药物的其他副作用频率间接获得信息。
6. A3Net中的参数不一致
论文与warm-start脚本使用,但cold-start脚本默认参数是。这会改变副作用图的边,因此复现论文结果时应显式记录并比较两个设置,不能只依赖脚本默认值。
相关概念
- 图注意力网络GAT:在KNN图上加权聚合邻居
- Warm Start、Cold Start与交叉验证:决定每折哪些信息可用于构图
- 正例-未标注学习PU Learning:频率轮廓中的0并非可靠负例
相关论文
- A3Net精读笔记(A3Net)
被以下札记引用
2026-W35