This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Cybertron 0ead9d742b readme
2023-05-25 15:23:12 +08:00

6.5 KiB
Raw Permalink Blame History

时间序列异常检测实验工具脚本使用说明

说明

本工具用于进行时间序列异常检测模型实验基于PyTorch框架实现的深度学习训练脚本。 为了方便实验创新本工具封装了dataloader、训练流程、测试流程、评估流程、日志记录与模型导出功能 并内置了部分数据集、预处理算法、模型与评估方法。 在进行创新实验时,可以仅修改数据集、预处理算法、模型与评估方法四个内容中的一个就开始快速实验,节省实验的冗余代码开发。 数据集、预处理算法、模型与评估方法四部分内容进行自定义时,请按照指定格式设计。 实验的参数请通过config.ini文件进行设置。

如需特殊接口,请联系开发人员郑延钦,邮箱:zhengyanqin@iie.ac.cn

安装

环境依赖

python==3.9.7

* eventlet==0.33.3
* gevent==22.10.2
* loguru==0.6.0
* numpy==1.21.2
* pandas==1.4.1
* scikit_learn==1.2.2
* torch==1.10.2
* tqdm==4.63.1

python第三方库安装方法

pip3 install -r requirements.txt

配置文件参数说明

config.ini文件用于配置相关设置包括数据集、算法模型、预处理方法、评估方法、模型参数加载、实验基本参数与自定义参数。

[Dataset]
# 填写数据集名称(文件夹名称),同时训练测试多个数据集,请用逗号隔开
# 请确保数据集已经按照要求格式放置在./dataset路径下
name=SWAT

[Method]
# 填写模型名称(文件名称,不用写".py"),同时训练测试多个算法,请用逗号隔开
# 请确保模型文件已经按照要求格式放置在./model路径下
# 模型名称请全部由字母组成
name=MtadGatAtt

[Preprocess]
# 填写预处理方法名称(文件名称,不用写".py"
# 请确保预处理方法文件已经按照要求格式放置在./preprocess路径下
name=standardization

[Evaluation]
# 填写评估方法名称(文件名称,不用写".py"),同时使用多个评估方法,请用逗号隔开
# 请确保评估方法文件已经按照要求格式放置在./evaluation路径下
name=f1,f1pa,ftad,affiliation

[ModelPath]
# 模型加载先前参数,请用"模型名_数据集名"作为变量名
# 路径名称从TSAD文件夹下开始写相对路径或者直接写绝对路径
MtadGatAtt_SWAT=none

[BaseParameters]
# train表示是否训练模型请填写true或者false为false时仅测试模型
train=true
# epoch表示训练轮数请填写正整数
epochs=20
# batch-size表示每个batch的尺寸请填写正整数
batch_size=32
# learning-rate表示学习率建议不要高于0.001
learning_rate=1e-4
# device表示使用的设备可以选auto、cpu、cuda其中auto代表自动判断有gpu使用gpu没有则使用cpu选gpu时需要选择gpu序号例如cuda:0
device=auto

[CustomParameters]
# 此处可以填入自定义参数,数量不限,用于填写特殊需求输入,例如模型文件所需的所有外部参数,构建数据集的部分参数
# 输入数据长度input_size即截取数据的窗口长度
input_size=60
# 输出数据长度output_size
output_size=1
# 截取数据的窗口的移动步长
step=1
# 数据集文件csv第一行是否需要忽略第一行为列名的话需要忽略
del_column_name=true
# 数据集文件csv第一列是否是时间戳
time_index=true

启动与停止

通过运行main.py脚本文件启动程序。可以选择 start | stop | daemon 三个参数。

  • start是启动普通进程前台运行日志实时输出并本地记录可输出训练进度条。
  • stop是停止当前实验进程。
  • daemon是启动守护进程后台运行程序日志仅保存本地日志不包含训练进度条内容。

如无输入参数默认选择start参数。使用方法如下所示

python3 main.py start/stop/daemon  

本工具会输出实验日志、所有模型的最佳检测标签、模型参数文件到./records路径下。

数据集文件配置说明

所有数据集文件,均存放在./dataset路径下。 数据集可以包含子数据集数据以csv格式文件存储必须包含train.csv和test.csv。

  • train.csv和test.csv的数据内容必须全为数值型数据第一行可保留列名。
  • train.csv和test.csv如包含时间戳请置于第一列。
  • test.csv最后一列为异常标签建议用0表示正常数据1表示异常数据如标签含义相反本工具会自动识别并反转标签

数据集路径示例如下:

└── dataset
    ├── 数据集1名称
    │   ├── 子数据集1名称
    │   │   ├── train.csv
    │   │   ├── test.csv
    │   ├── 子数据集2名称
    ...
    │   └── 子数据集m名称
    ├── 数据集2名称
    │   ├── train.csv
    │   └── test.csv
    ...
    └── 数据集n名称

预处理文件配置说明

所有预处理方法的文件,均存放在./preprocess路径下并写入__init__文件。 每个预处理方法单独建立一个文件,新建预处理方法的命名全部采用英文和数字组成,文件名称直接使用预处理方法的命名。

文件内需包含MyDataset类MyDataset类继承torch.utils.data.Dataset必须定义__len__、__getitem__两个方法。 各个方法的具体设计要求,详见./preprocess/template.py文件。

模型文件配置说明

所有模型结构的文件,需存放于./method路径下并写入__init__文件。 每个模型单独建立一个文件,新建模型的命名全部采用英文和数字组成,文件名称直接使用模型的命名。

文件内需包含Model类Model类继承nn.Module必须定义forward方法、loss方法和detection方法。 各个方法的具体设计要求,详见./method/template.py文件。

评估方法文件配置说明

所有评估方法的文件,需存放于./evaluation路径下并写入__init__文件。 每个评估方法单独建立一个文件,新建评估方法的命名全部采用英文和数字组成,文件名称直接使用模型的命名。

文件内需定义evaluate方法方法的输入输出设计详见./evaluation/template.py文件。