# OSBI **Repository Path**: Chester_Xue/osbi ## Basic Information - **Project Name**: OSBI - **Description**: 基于观察者节点的复杂网络传播源识别 (SI 模型) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: 复杂网络, 源节点识别 ## README # OSBI: Observer and Label-Guided Source Identification > 复杂网络中基于观察者节点与标签引导的传播源识别方法 ## 方法概述 OBSI(Observer and Label-Guided Source Identification)通过两个核心算法阶段识别网络中的传播源节点: **Algorithm 1 — 观察者选择**:基于 k-core 分解与度中心性的加权组合计算节点重要性,以 1-hop 分离约束贪心选择观察者节点集,最大化网络覆盖范围。 **Algorithm 2 — 标签引导传播**:利用观察者记录的感染方向信息,以异构权重(α/β)引导标签传播。观察者相关边使用增强权重 β,普通边使用标准权重 α,迭代收敛后在初始感染非观察者节点中识别全局/局部标签极大值作为候选源。 ## 项目结构 ``` OSBI/ ├── src/ # 核心算法 │ ├── observer_selection.py # Algorithm 1: 观察者选择 (k-core + degree) │ ├── si_simulation.py # SI 传播模型 │ ├── label_propagation.py # Algorithm 2: 标签引导传播 │ ├── source_identification.py # 单源/多源识别流水线 │ ├── metrics.py # ED, F1, Jaccard, Top-k │ └── utils.py # 图加载、矩阵构建 ├── baselines/ # 基线方法 │ ├── lpsi.py # LPSI (Wang et al. 2017) │ ├── pbsi.py # PBSI (Zhu et al. 2022) │ ├── scce.py # SCCE (Tang et al. 2018) │ └── advanced_observer.py # 高级观察者策略 (PrEF/EDIS/DC/CC/BC) ├── experiments/ # 实验流水线 │ ├── run_single_source.py # 单源识别 │ ├── run_multi_source.py # 多源识别 │ ├── run_observer_ratio.py # 观察者比例扫描 │ ├── run_infection_rate.py # 感染率扫描 │ ├── run_parameter_sensitivity.py # 参数敏感性 │ ├── run_baselines.py # 基线对比 │ └── run_structural_analysis.py # 网络结构分析 ├── figures/ # 图表生成 │ ├── __init__.py # Fig 4-16 + Table 2-3 │ └── combine_figures.py # 子图合并 ├── data/ # 数据集 ├── results/ # 实验结果 (CSV) ├── convert_results.py # Excel→标准CSV转换 ├── main.py # 统一CLI入口 ├── requirements.txt ├── REVIEWER_GUIDANCE.md # 审稿意见修改指导 └── README.md ``` ## 安装 ```bash pip install -r requirements.txt ``` ## 使用方法 ```bash # 单个实验 python main.py --method OBSI --network dolphin --mode single python main.py --method OBSI --network dolphin --mode multi python main.py --method SCCE --network dolphin --mode multi # 全部实验 python main.py --all --iterations 100 # 仅重新生成图表 python main.py --plot-only # 转换 Origin Excel 数据 python convert_results.py # 结构分析 python experiments/run_structural_analysis.py # 合并子图 python figures/combine_figures.py ``` ## 命令行参数 ``` --method {OBSI,LPSI,PBSI,SCCE} 运行的方法 --network NAME 网络名称 --mode {single,multi} 单源/多源模式 --iterations N 迭代次数 (默认 100) --plot-only 仅从已有 CSV 重新生成图表 --all 运行全部实验 --format {pdf,png,eps} 图表输出格式 (默认 pdf) --seed N 随机种子 (默认 42) ``` ## 数据集 | 网络 | 节点 | 边 | 格式 | |------|------|-----|------| | Karate | 34 | 78 | .txt | | Dolphin | 62 | 159 | .csv | | Football | 115 | 613 | .gml | | Jazz | 198 | 2,742 | .mtx | | Email | 1,133 | 5,451 | .txt | | BA1000 | 1,000 | 4,000 | — | | BA4000 | 4,000 | 20,000 | — | | Facebook | 4,039 | 88,234 | .txt | ## 算法参数 | 参数 | 默认值 | 说明 | |------|--------|------| | observer_ratio | 0.1 | 观察者占比 | | p_infect | 0.3 | SI 模型感染概率 | | alpha | 0.5 | 标签传播衰减系数 | | beta | 0.95 | 观察者增强系数 (β > α) | | lam | 0.5 | k-core 与 degree 平衡权重 | | infection_threshold | 0.3 | 终止传播的感染比例 | | K | 5 | 多源裁剪数量 | ## 评估指标 | 指标 | 场景 | 说明 | |------|------|------| | Error Distance | 单源 | 识别源到真实源的最短路径长度 | | F-Score | 多源 | 精确率与召回率的调和平均 | | Jaccard | 多源 | 识别源集与真实源集的交并比 | | Top-k | 多源 | 前 k 个候选节点命中真实源的比例 | ## 生成图表 | 图表 | 内容 | |------|------| | Fig 4 | 单源识别 Error Distance | | Fig 5 | 小网络多源 F-Score | | Fig 6 | 大网络多源 F-Score | | Fig 7 | 多源 Jaccard 系数 | | Fig 8 | 观察者比例与覆盖率/ED | | Fig 9 | OBSI vs PBSI 不同比例对比 | | Fig 10 | 观察者信息缺失/噪声影响 | | Fig 11 | 感染率扫描 | | Fig 12 | 多感染率基线对比 (含 SCCE) | | Fig 13 | 3D 曲面图 (补充材料) | | Fig 14 | λ 敏感性 | | Fig 15 | α 敏感性 | | Fig 16 | 收敛性分析 | | Table 2 | Top-k 准确率 | | Table 3 | 观察者策略对比 |