1. 配电主站日志异常检测数据集概述
配电主站作为电力系统的核心控制单元,每天产生海量运行日志数据。这些日志记录了设备状态、操作指令、通信报文等关键信息,是诊断系统异常的重要依据。我们团队历时两年收集整理的这套数据集,覆盖了国内多个省级电网的真实运行场景,包含超过2000万条结构化日志记录,其中人工标注的异常事件达3.7万例。
这个数据集的价值在于:首次系统性地整合了配电自动化系统中六类典型异常模式(通信中断、参数越限、逻辑冲突、时序错乱、配置错误、外部攻击),每条异常数据都附带完整的上下文日志序列和专家分析报告。相比公开的通用日志数据集(如HDFS),本数据集具有鲜明的电力行业特征,异常模式与电力业务强相关。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据集核心特征解析
2.1 数据来源与采集方式
数据来自三个层级:
- 主站系统:SCADA/EMS系统日志、数据库操作记录
- 通信网络:IEC 60870-5-104、DNP3等规约通信报文
- 终端设备:FTU/DTU等终端上送的状态变位信息
采集采用旁路镜像技术,通过协议解析器将不同格式的原始数据统一转换为JSON格式,保留完整的时标信息(精确到毫秒级)。特别的是,我们同步采集了电网拓扑结构数据,使得日志分析可以结合电网运行方式。
2.2 数据结构与字段说明
每条记录包含以下核心字段:
json复制{
"timestamp": "2023-05-17T14:32:45.128Z",
"device_id": "FTU_110kV_中山变#1",
"log_type": "telemetry/event/command",
"content": {
"phase_current_A": 315.2,
"protection_flag": 0x01
},
"abnormal_tag": ["voltage_sag", "data_stuck"],
"topology_context": "110kV母联开关处于分位"
}
关键字段说明:
- log_type区分遥测(1秒级)、事件(SOE)、控制命令三类数据
- abnormal_tag采用多标签标注,体现异常叠加情况
- topology_context记录操作时的电网接线方式
3. 典型异常模式分析
3.1 通信类异常特征
数据集包含四类典型通信异常:
- 报文超时:连续5个采样周期缺失数据
- CRC校验失败:规约解析层发现的错误
- 通道切换:主备通道切换导致的时序混乱
- 雪崩效应:终端批量离线(常由光缆中断引起)
这类异常在数据中表现为:
- 时间戳不连续(gap>10s)
- 报文序列号跳变
- 通信恢复后的数据补传
处理建议:建立通信质量基线(如99.9%的报文应在±500ms内到达)
3.2 业务逻辑异常检测
电力特有的业务规则异常包括:
- 遥测突变:电流值跳变超过20%额定值
- 保护动作矛盾:过流保护触发但无故障电流
- 拓扑不一致:开关分闸但仍有电流流过
我们采用状态机模型进行标注,例如:
code复制正常序列:开关分闸 -> 电流降为0
异常案例:开关分闸 -> 电流保持原值(可能触点粘连)
4. 数据处理与特征工程
4.1 日志向量化方法
针对电力日志的特性,我们推荐两种特征提取方案:
方案A:基于规约的解析
- 对IEC 60870-5-104报文提取ASDU地址、类型标识
- 将信息对象地址(IOA)映射到设备物理位置
- 生成[时延, 数据新鲜度, 变化率]三元组
方案B:深度学习方法
python复制class LogEmbedding(nn.Module):
def __init__(self):
super().__init__()
self.dev_embed = nn.Embedding(1000, 64) # 设备ID嵌入
self.type_embed = nn.Embedding(10, 16) # 日志类型嵌入
self.value_lstm = nn.LSTM(8, 32) # 遥测值序列处理
def forward(self, x):
dev_vec = self.dev_embed(x["device_id"])
type_vec = self.type_embed(x["log_type"])
val_vec, _ = self.value_lstm(x["values"])
return torch.cat([dev_vec, type_vec, val_vec], dim=-1)
4.2 样本不平衡处理
异常样本占比不足0.2%,我们采用:
- 滑动窗口采样:以异常点为中心取前后5分钟数据
- SMOTE过采样:仅适用于离散事件类异常
- 权重调整:Focal Loss中的γ设为2.0
5. 模型训练与评估
5.1 基线模型对比
我们在数据集上测试了三种典型方案:
| 模型类型 | 精确率 | 召回率 | F1-score |
|---|---|---|---|
| 随机森林 | 0.82 | 0.71 | 0.76 |
| LSTM-Autoencoder | 0.89 | 0.65 | 0.75 |
| GNN+Attention | 0.91 | 0.83 | 0.87 |
关键发现:
- 传统算法对简单规则异常有效
- 图神经网络(GNN)能捕捉拓扑关联异常
- 注意力机制可识别长周期依赖
5.2 在线检测部署方案
推荐的生产环境架构:
code复制日志采集 -> Kafka -> Flink实时处理 -> 模型推理 -> 告警生成
\-> 数据湖(长期存储)
配置要点:
- 使用Flink的KeyedProcessFunction实现带状态的检测
- 模型热更新采用TensorFlow Serving的版本控制
- 告警聚合窗口设为30秒避免风暴
6. 常见问题与解决方案
6.1 数据质量问题
问题1:时标不同步
- 现象:多个设备日志时间偏差>1秒
- 解决方案:部署PTP精密时钟协议
问题2:终端时钟漂移
- 现象:长期运行后时间累积误差
- 处理方法:在预处理阶段做线性校正
6.2 模型应用问题
误报率高
- 检查是否包含检修期数据(建议过滤计划停电时段)
- 加入天气特征(雷雨天气易产生干扰)
漏检分析
- 典型场景:渐变型异常(如设备老化)
- 改进方案:引入移动平均线检测慢变过程
7. 数据集使用建议
- 训练集划分:建议按变电站分区划分,避免时间序列泄露
- 评估指标:优先考虑召回率(漏检风险>误报风险)
- 领域适配:跨区域使用时需微调电压等级等参数
我们团队在实际应用中总结出一个有效的工作流:
- 先用规则引擎过滤已知模式(如通信中断)
- 对剩余数据运行机器学习模型
- 人工复核最高风险的20%告警
- 将确认的新模式加入规则库
这种混合方法可使运维效率提升40%以上。数据集中的案例已按此流程标注,包含完整的处置过程记录。
