← 返回目录

AAAI 2026 · arXiv 2511.08867 v2

Conformal Prediction for Multi-Source Detection on a Network

用共形预测给传播源检测输出一个节点集合:以至少 1−α 的概率,集合召回至少 1−β 比例的真源。它不需要传播模型的似然,只要一个预训练的预测器和一批校准数据,单源、多源都能用。

Xingchao Jian,Purui Zhang,Tian Lan,Feng Ji,Wenfei Liang,Wee Peng Tay,Bihan Wen,Felix Krahmer。代码:github.com/xcjian/Conformalized-Network-Source-Detection。本页依据 arXiv v2(2025-11-30,23 页,含附录)。

1研究问题

多源检测:观测到若干时刻全网节点的 S/I/R 状态,找出所有源。已有中心性方法只在树上有保证;GNN 方法效果好但没有统计保证;Dawkins 等的检验反演(本文称 ADiT)有保证,但只能做单源、只能用 SI 模型,而且每个节点都要做模拟检验,代价高。

本文目标:构造集合 Ĉ,满足

P( |Y ∩ Ĉ| / |Y| ≥ 1 − β ) ≥ 1 − α Y:真源集合

β=0 时就是"以 1−α 概率包含全部真源";β 越大,集合越小。

2共形预测基础(分裂式)

  1. 准备一个点预测器 f,例如预训练 GNN,对每个节点输出"是源"的估计概率 π̂(v)。
  2. 定义非一致性分数 s(X, 候选答案):越大表示越不像。
  3. 在 n 条校准数据上算出真答案的分数,取 (1−α)(1+1/n) 经验分位数 q̂。
  4. 新样本上,把分数不超过 q̂ 的答案都放进集合。

只要校准数据和测试数据可交换,覆盖就至少 1−α。这一保证与预测器好坏、数据分布都无关。

3方法:把"集合包含"变成一维分数

直接对所有节点子集做共形预测不可行(2^N 个候选)。作者的做法:

  1. 把节点按 π̂ 从大到小排序。对任一子集 U,定义 γ(X,U) 为"π̂ 不小于 U 中最小值的所有节点",即把 U 补成一个排序前缀。
  2. 非一致性分数只依赖 γ(X,U),且对前缀单调。作者给了三个例子:负的平均概率(setCP-pre,对应精确率)、前缀概率占全部的比例(setCP-rec,对应召回率)、负的最小概率(setCP-min,与共形风险控制等价)。
  3. 命题 1:在单调条件下,"真源集合 Y 被预测集合包含"等价于"Y 的分数不超过 q̂"。于是只需对每个节点单独判断,复杂度 O(N log N)。
  4. 要求部分召回(β>0)时,先把真源集合缩成"π̂ 最大的 (1−β) 部分",再套用上面的构造(定理 3)。

4实验结果(论文报告值)

网络:highSchool(774 节点)、SFHH(403)、bkFratB(58)。传播用 NDlib 模拟离散时间 SIR/SI;输入是连续 16 个时刻的全网状态快照;骨干网络 SD-STGCN。

单源 SI(σ_inf=0.25,highSchool,α=0.1)

方法包含率平均集合大小
setCP-rec0.90123.3
setCP-pre0.90225.7
setCP-min0.90120.4
ADiT(Dawkins 等)0.98824.4
ArbiTree0.896624.4

多源(|Y|=7、10,α=0.1,β=0.3)

SI 下 setCP-rec 的集合约 29、40 个节点;ArbiTree 几乎输出全图(约 770)。SIR 下集合都更小,因为恢复状态提供了额外信息。

时间(400 个测试样本,单源 SI)

方法秒
setCP-min / rec / pre(单线程)1.2 / 1.4 / 1.6
ArbiTree(并行)79.6
ADiT(并行)792.2

另一个值得注意的结果:在表 I(多源、随机参数的 SIR)中,setCP-rec 在 β=0.1 时输出全部 774 个节点,集合失去信息量。

5细读要点

6作者代码讲解

仓库 xcjian/Conformalized-Network-Source-Detection,提交 e861d51e。仓库共 20,664 个文件,含大量模拟数据和结果(单个结果文件可达约 100 MB,整体约 1.3 GB);本节只读了源代码,没有下载数据、没有运行。

目录或文件作用
main.py完整流程:加载 SD-STGCN 的测试输出,随机划分校准集与测试集,计算各方法的覆盖率、集合大小与耗时,重复 50 次后汇总
utils/score_convert.py非一致性分数:recall_score、avg_score(精确率版)、min_score,各有已知真源(校准)和未知真源(测试)两个版本;set_truncate 是缩集映射 ν;ArbiTree、PGM 的分数
utils/functions.py分位数 cpquantile、调用预训练模型的 get_test_results、ArbiTree 的树学习与消息传递
SD-STGCN/第三方骨干网络(Sha 等 2021,TensorFlow),连同各网络的 SIR/SI 模拟脚本
DSI/Dawkins 等代码的副本,用作 ADiT 对照
batch_CP_process*.sh论文各表的运行命令

论文公式与代码的对应

  1. 排序前缀 γ:*_gtunknown 函数把节点按 π̂ 降序排列,沿前缀累加,一次得到所有节点的分数,这就是论文 O(N log N) 的来源。
  2. 校准分位数:tail_prop = (1−α)(1+1/n),阈值取校准分数的该分位数;测试时分数不超过阈值的节点进入集合(式 10、16)。
  3. 缩集映射 ν:set_truncate 保留真源中 π̂ 最大的 1−β 部分(式 17)。命令行参数 --pow_expected 就是 1−β。
  4. 覆盖的判定:每个测试样本若 |真源 ∩ 集合|/|真源| ≥ pow_expected 记为覆盖,再对测试样本取比例。

论文没写清楚、代码里才有的细节

7与你的方案(传感器部署 + 有效源集合)的关系

维度本文你的方案
观测全网多时刻快照k 个传感器的首次到达时间
保证对源分布平均,需校准集逐源有效,需已知模型
多源支持先只做单源
部署不涉及核心

可作对照:把传感器记录当作输入 X,就能得到一个"传感器版共形集合",作为同覆盖下比较集合大小的强基线。这种替换本身是直接应用,不能算创新。

需注意:比较时要说明两种保证的区别,并让两者用相同的模拟预算;不要沿用本文 m=20 的 ADiT 设置。