非侵入式负载监测(NILM)算法与实验结果分析
立即解锁
发布时间: 2025-08-30 00:26:29 阅读量: 5 订阅数: 5 AIGC 

### 非侵入式负载监测(NILM)算法与实验结果分析
#### 1. 算法原理概述
在非侵入式负载监测(NILM)领域,多种算法发挥着重要作用,下面对几种关键算法进行详细介绍。
- **GRU(门控循环单元)**:GRU的重置门在接近零值时,会使隐藏状态忽略之前的隐藏状态,以当前输入进行重置。这一机制使得隐藏状态能够删除后续被判定为无关的数据,从而优化信息处理。例如,在处理时间序列数据时,若某一时刻的信息对后续预测无意义,GRU可通过重置门将其剔除。
- **Window GRU**:该算法减少了每层的神经元数量。经测试,即使循环层规模减半,网络的精度仍能保持不变,同时可使可训练参数数量减少60%。此外,通过在层间插入Dropout操作,有效避免了过拟合问题。这在使用多户家庭数据训练电器模型时尤为有用,同时也能应对输入值缺失的情况。操作步骤如下:
1. 确定每层神经元数量的缩减比例。
2. 构建网络结构,将循环层规模减半。
3. 在层间插入Dropout层,设置合适的丢弃率。
- **SS2P(短序列到点)**:此算法将网络输入视为一个主窗口,输出为目标电器对应窗口的中间元素。其核心思想是目标电器的中点与该点前后的主数据存在强关联,可看作一种非线性回归。例如,在预测某电器的功率消耗时,可利用该算法通过主窗口数据预测目标电器中点的功率值。
- **S2S(序列到序列)**:S2S学习模型用于在两个序列之间进行转换。它包含一个理解输入序列的编码器RNN和一个对思想向量进行解码以生成输出序列的解码器RNN。编码器将输入序列压缩为一个向量,解码器再将该向量展开为新的序列。其主要目标是构建从主序列到目标电器序列的回归映射。操作流程如下:
```mermaid
graph LR
A[输入序列] --> B[编码器RNN]
B --> C[向量]
C --> D[解码器RNN]
D --> E[输出序列]
```
- **BERT(双向编码器表示)**:BERT通过嵌入模块、变压器层和多层感知器作为输出层,能够识别具有相同形式输出的单个家用电器。它还通过对电器进行比较来计算阈值。此外,在一维输入数组上应用卷积层,可恢复并增加设计特征的隐藏大小。该模型采用监督学习方法,通过迭代过程计算给定训练数据的最小预测误差。操作步骤如下:
1. 构建BERT模型,包含嵌入模块、变压器层和多层感知器输出层。
2. 对电器进行比较,计算阈值。
3. 在一维输入数组上应用卷积层。
4. 使用监督学习方法,迭代计算最小预测误差。
#### 2. 实验设置
非侵入式负载监测(NILM)拥有42个公开可用的数据集,这些数据集分为低频和高频两类。为便于研究,使用了开源工具包NILMTK及其改进版NILMTK - contrib,该API降低了开发者和贡献者添加新算法的复杂度。实验选用了四种数据集:REDD、UK - DALE、SynD和REFIT,并将每个数据集的80%作为训练数据,20%作为测试数据。测试使用TensorFlow和Keras深度学习框架,训练工作站的配置为:CPU为Intel core i7 Cooler Master,GPU为GeForce RTX 2080 Ti,RAM为32 GB。评估算法性能的相对指标如下:
|指标|公式|
|----|----|
|Precision(P)|$\text{Precision} = \frac{\text{TruePositive}}{\text{TruePositive} + \text{FalsePositive}}$|
|Recall(R)|$\text{Recall} = \frac{\text{TruePositive}}{\text{TruePositive} + \text{FalseNegative}}$|
|Accuracy(Acc)|$\text{Accuracy} = \frac{\text{TruePositive} + \text{TrueNegative}}{\text{TruePositive} + \text{FalsePositive} + \text{TrueNegative} + \text{FalseNegative}}$|
|F1 - Score(F)|$F1 - Score = \frac{2 \times P \times R}{P + R}$|
|MeanAbsoluteError(MAE)|$MAE = \frac{1}{n} \sum_{t = 1}^{n
0
0
复制全文
相关推荐










