karelriyan/SCIO-Bench
GitHub: karelriyan/SCIO-Bench
一个针对离网光伏储能物联网的异常检测基准数据集,整合真实遥测数据与自然故障、网络攻击注入,支持规则、机器学习和边缘 AI 方法的对比评估及 SHAP 可解释性分析。
Stars: 1 | Forks: 0
# SCIO-Bench
[](LICENSE)
[](https://creativecommons.org/licenses/by/4.0/)
[]()
[](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, 逆向工具, 遥测分析, 量化模型, 随机森林, 隐私保护