# usad-lstm **Repository Path**: yi-junquan/usad-lstm ## Basic Information - **Project Name**: usad-lstm - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-27 - **Last Updated**: 2023-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多维时间序列无监督异常检测算法 USAD 的性能评估与改进研究
专硕5班 易俊泉 23214589
## 项目简介 ## 项目结构 ```shell . | data_preprocess.py | README.md | requirements.txt | example.ipynb +---ablation-exp +---common +---compared-algorithms | +---autoencoder | +---dagmm | +---iforest | +---lstmvae | \---omnianomaly | +---data +---model +---processed +---usad | | parameters_exp1.ipynb | | parameters_exp2.ipynb | | usad_model.py | | usad_smap_msl.ipynb | | usad_smd.ipynb | | usad_swat.ipynb | | usad_wadi.ipynb | | __init__.py | | | \---log | 2023_12_27_usad.log \---usad_lstm | usadlstm_model.py | usadlstm_smap_msl.ipynb | usadlstm_smd.ipynb | usadlstm_swat.ipynb | usadlstm_wadi.ipynb | __init__.py \---log 2023_12_27_usadlstm.log ``` - `data_preprocess.py`:数据预处理程序; - `example.ipynb`:示例程序,可通过已经训练好的模型测试算法性能; - `ablation-exp`:该目录下为消融实验程序; - `common`:该目录下为一些工具类; - `compared-algorithms`:该目录下为对比的五种算法; - `data`:该目录下为原始数据集; - `model`:该目录下为训练好的USAD和USAD-LSTM模型; - `processed`:预处理后的数据; - `usad`:该目录下为无监督异常监测算法USAD的复现代码和在五个数据集上的实验程序; - `usad-lstm`:该目录下为USAD的改进模型USAD-LSTM的实现代码和在五个数据集上的实验程序; ## 环境准备 使用conda创建python3.10虚拟环境: ```shell conda create -n usad-lstm python=3.10 conda activate usad-lstm ``` 安装依赖 ```shell pip install -r requirements.txt ``` 安装ipykernel ``` pip install ipykernel ``` ## 快速开始 **数据预处理** ```python python data_preprocess.py SWaT WADI SMAP MSL SMD ``` **运行示例程序**:`example.ipynb`,测试USAD和USAD-LSTM在SWaT数据集上的结果。 **查看结果** ```python USAD: {'f1-score': 0.8465877162916761, 'precision': 0.9111298658273805, 'recall': 0.7905933613828758, 'TP': 43183.0, 'TN': 391086.0, 'FP': 4212.0, 'FN': 11438.0, 'threshold': 9.630896289825388} USAD-LSTM: {'f1-score': 0.8473364521310057, 'precision': 0.8964249232080848, 'recall': 0.803354021200023, 'TP': 43880.0, 'TN': 390228.0, 'FP': 5070.0, 'FN': 10741.0, 'threshold': 9.120748317718505} ``` ## 数据集说明 本项目使用了五个公开数据集对USAD和USAD-LSTM的性能进行评估: 1. SWaT数据集:收集自真实工业水处理厂数据,包含7天正常数据和4天攻击场景下数据,每个多维时间序列数据由 51 个维度的传感器信息组成。 2. WADI数据集:是SWaT测试平台的扩展,包含14天正常数据和2天攻击场景下数据。 3. SMD数据集:收集自28台服务器机器的数据,每台机器监测33个指标。一半是训练集,一半是测试集。 4. SMAP数据集:由NASA提供的55个实体的数据,每个实体监测 25 个指标。 5. MSL数据集:与SMAP相似,也是由NASA提供的27个实体的数据,每个实体监测 55 个指标。 | 数据集 | 训练数据量 | 测试数据量 | 维度 | 异常占比(%) | | ------ | ---------- | ---------- | ----- | ------------- | | SWaT | 495000 | 449919 | 51 | 12.14 | | WADI | 1209601 | 172801 | 123 | 5.71 | | SMD | 708405 | 708420 | 28*38 | 4.16 | | SMAP | 135183 | 427617 | 55*25 | 13.13 | | MSL | 58317 | 73729 | 27*55 | 10.72 | ## 实验结果 ### USAD与对比方法 $$ P=\frac{TP}{TP+FP}, \ R=\frac{TP}{TP+FN}, \ F1=2\cdot\frac{P\cdot R}{P+R}\nonumber\\ F1^*=2\cdot\frac{\bar P\cdot \bar R}{\bar P+\bar R}\nonumber $$ ![image-20231227143116409](assets/image-20231227143116409.png) USAD 是表现最好的方法,$F1^* $分数超过 SOTA 方法 OmniAnomaly1.66%。 ### USAD消融实验 image-20231227143419756 受到GAN启发的对抗性训练相对于没有对抗性训练的USAD提高了1.96%(F1得分),相对于仅使用对抗性训练提高了2.27%。 ### USAD-LSTM与USAD img 得益于 LSTM 对时序数据的强大处理能力,USAD-LSTM 的性能提升了 1.66%。