karelriyan/SCIO-Bench

GitHub: karelriyan/SCIO-Bench

一个针对离网光伏储能物联网的异常检测基准数据集,整合真实遥测数据与自然故障、网络攻击注入,支持规则、机器学习和边缘 AI 方法的对比评估及 SHAP 可解释性分析。

Stars: 1 | Forks: 0

# SCIO-Bench [![License: MIT](https://img.shields.io/badge/Code%20License-MIT-blue.svg)](LICENSE) [![Data License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) [![Paper: IEEE IoT Journal (Under Review)](https://img.shields.io/badge/Paper-IEEE%20IoT%20Journal-green.svg)]() [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/) **所属机构:** Universitas Jenderal Soedirman, Purwokerto, Indonesia **状态:** 研究已完成 — 2026 年 4 月 ## 概述 SCIO-Bench 是一个**公开可用的带标签合成数据集**,也是针对离网太阳能+电池 IoT 遥测中异常检测的对比基准。它评估了四种方法: 1. **Rule-Based Threshold** (SCIO M1 基线) — 基于 MAD 的规则 2. **Isolation Forest** — 经典无监督 ML 3. **LOF (Local Outlier Factor)** — 经典无监督 ML 4. **LSTM Autoencoder** (L1) + **Random Forest** (L2 分层) — 轻量级深度学习 该数据集 (`scio_bench_dataset.csv`) 包含约 3,200 行,注入了 **5 种真实异常类型**(注入比例符合现实的 <10%),以及 **热带天气压力测试 (A6)** 和 **虚假数据注入 (A7)**。 ## 快速设置(< 5 步) SCIO-Bench 流程已被安全地工程化为完全模块化的 Python 包,以确保可复现性。您可以通过终端或使用主包装器 notebook 执行整个流程。 ``` # 1. Clone 仓库 git clone https://github.com//scio-anomaly-benchmark.git cd scio-anomaly-benchmark # 2. 安装依赖 pip install -r requirements.txt # 3. 添加你的 Kaggle API key mkdir -p ~/.kaggle && cp kaggle.json ~/.kaggle/ && chmod 600 ~/.kaggle/kaggle.json # 4. 打开 master notebook jupyter notebook notebooks/scio_anomaly_benchmark.ipynb # 或者你可以独立运行每个阶段: # python -m src.data.preprocess # python -m src.data.augmentation # ... # python -m src.visualization.plots # 6. 所有输出直接导出至 outputs/{dataset,results,figures}/ ``` ## 项目结构 ``` SCIO-Bench/ ├── src/ │ ├── data/ # Dataset download, preprocessing, augmentation, injection │ ├── models/ # Rule-based, IF, LOF, LSTM AE, Hierarchical L2 │ ├── evaluation/ # Metrics, statistical tests, edge profiling │ ├── xai/ # SHAP analysis, reconstruction error analysis │ └── visualization/ # Plot generation (5 publication figures) ├── notebooks/ │ └── scio_anomaly_benchmark.ipynb # Master orchestration notebook ├── outputs/ │ ├── dataset/ # scio_bench_dataset.csv (also on Zenodo) │ ├── results/ # Table I, II, III as CSV + LaTeX │ └── figures/ # Figure 1–5 as PDF (300 DPI) ├── data/ │ ├── raw/ # Kaggle download (not committed — see .gitignore) │ ├── processed/ # Merged, resampled, cleaned CSVs │ └── splits/ # Train/val/test splits (chronological) ├── tests/ # Unit tests per component ├── requirements.txt └── README.md ``` ## 数据集:SCIO-Bench | 异常类型 | 代码 | 比例 | 描述 | |---|---|---|---| | Panel Degradation | A1 | 2% | 6 小时内逐渐发生 30–50% 的功率衰减 | | Sudden Panel Drop | A2 | 1.5% | 持续 1–3 个时间点的瞬间 60–80% 下降 | | Battery Fault | A3 | 2% | SOC 快速下降或数值卡滞 | | Sensor Drift | A4 | 1.5% | ±15% 的持续性电压/电流偏移 | | Device Offline | A5 | 2% | NaN / 保持上一数值 >3 个连续时间点 | | Extended Low Irradiance (**正常!**) | A6 | ~15% | 热带雨季 — 非异常 | | False Data Injection (对抗性) | A7 | 1% | 物理不一致的传感器操纵 | | Normal | — | ~76% | 基线运行 | **基础数据:** Kaggle Solar Power Generation Data (Ani Kannal, 2020) — 印度 2 个电站,34 天,重采样至 30 分钟间隔。 ## 可复现性 - 所有随机种子:`random_state=42`,`np.random.seed(42)` - 按时间顺序划分训练/验证/测试集(无数据泄露) - 数据集可在 Zenodo 获取:[DOI: 10.5281/zenodo.XXXXXXX] ## 引用 ``` @article{scio_bench_2026, title = {Rule-Based vs. Machine Learning Anomaly Detection for Off-Grid Renewable Energy IoT Telemetry: A Comparative Benchmark with Adaptive Thresholding, Cyber-Physical Discrimination, and Hardware-Algorithmic Co-Design}, author = {Riyan, Karel Tsalasatir and Setyoko, Muhammad Azka Mauzaky and Ulumudin, Ihya}, journal = {Zenodo (Preprint)}, year = {2026}, doi = {10.36227/techrxiv.XXXXXXX} } ``` ## 许可证 - 代码:MIT License - 数据集 (SCIO-Bench):CC BY 4.0
标签:Apex, LOF, LSTM自编码器, NoSQL, Python, SHAP, 可解释AI, 合成数据, 太阳能发电, 孤立森林, 工业物联网, 异常检测, 无后门, 时序数据, 机器学习, 物联网, 电池储能, 离网系统, 网络安全, 能源安全, 虚假数据注入, 边缘AI, 逆向工具, 遥测分析, 量化模型, 随机森林, 隐私保护