能源取证中的先进AI算法开发:通过消费模式对智能电网盗窃进行变压器模型的Python指南

先进AI算法开发:智能电网盗窃的变压器模型Python指南

图片来源:Pexels

德国能源数据洞察:Stephanie Ness关于小规模环境中消费模式和在线数据支持分析的指南

在海量数据的汪洋中,每一度电都低声诉说着它的故事。在复杂的消费模式中,可能隐藏着异常,成为能源盗窃的离奇线索。@media(min-width:0px){#div-gpt-ad-aitimejournal_com-medrectangle-3-0-asloaded{max-width:580px!important;max-height:400px!important;}}

尽管这些故事通常平凡无奇,但有时候它们会含有恶意行为的悄悄呢喃声。恶意行为者在消费数据的迷宫中巧妙地窃取电力,他们的行动被掩盖在消费数据的迷宫之中。然而,我们拥有一种强大的武器,它在机器学习的不断创新中锻造而成:变压器模型。

尽管变压器模型不再是人工智能领域中最新的明星,但它在处理序列时的无与伦比的能力使其成为我们任务中的首选侦探。借助Python,我们可以发现异常,识别恶意行为者,并使用我们自己的数据科学检测算法采取纠正措施。

能源分析的本质

在一个越来越依赖可持续能源的世界中,了解消费模式至关重要。从家庭和企业到工业和政府机构,对能源消费的全面分析具有多重目的。无论是效率、节约成本还是可持续性,能源永远不仅仅是表面的。

在消费的迷宫中揭开盗窃之谜

所涉及的数据集来自于Open Energy Data Initiative,并于2022年5月发布,其中包含了各种消费者的能源消费细节。在这个海量的数据中,有六种特定的盗窃类型引人注目:@media(min-width:0px){#div-gpt-ad-aitimejournal_com-medrectangle-4-0-asloaded{max-width:300px!important;max-height:250px!important;}}

  1. 白天减少用电量。
  2. 随机突然降为零。
  3. 随机乘法减少每小时用电量。
  4. 消费数据呈现为平均值的随机分数。
  5. 无论实际使用情况如何,都始终报告平均消费量。
  6. 消费读数的顺序完全颠倒。

每一种盗窃类型都被复杂地嵌入在数据集中,需要采用精密的方法才能有效地检测到它们。

本教程中所介绍的方法是基于变压器的。它主要使用变压器的固有并行处理能力。与线性分析数据不同,它能同时处理多个数据点,从而加快分析速度。@media(min-width:0px){#div-gpt-ad-aitimejournal_com-box-4-0-asloaded{max-width:250px!important;max-height:250px!important;}}

第一步:设置环境

说明:

在进行任何数据分析之前,设置一个适合的环境至关重要。这样可以确保我们需要时拥有所有的工具。

pip install pandas numpy tensorflow

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-banner-1-0-asloaded{max-width:728px!important;max-height:400px!important;}}

这个命令安装了三个库:pandas(用于数据处理)、numpy(用于数值计算)和tensorflow(我们的深度学习框架)。

第二步:加载数据集

说明:

数据集是任何机器学习项目的基础。在这里,我们从在线链接获取我们的数据集。

import pandas as pdimport numpy as np# 加载数据集url = “https://data.mendeley.com/datasets/c3c7329tjj/1/files/df.csv”data = pd.read_csv(url)

在执行过程中,数据将包含整个数据集,准备进行预处理。

步骤3:初步数据分析

解释:

在进行模型构建之前,了解所使用的数据是明智的。这一步是为了获得对数据的理解。

print(data.head())print(data.describe())这将显示数据集的前几行数据集的摘要(如平均值、标准差)。

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-leaderboard-2-0-asloaded{max-width:728px!important;max-height:400px!important;}}

步骤4:数据预处理

解释:

原始数据并不总是适合机器学习。预处理可以优化数据,使其更适合我们的模型。

consumption_data = data[“Electricity:Facility [kW](Hourly)”].values我们关注的列是“Electricity:Facility [kW](Hourly)”,它记录了每小时的用电量,是我们分析的关键因素。

归一化是将所有数据缩放到一个统一的范围,使计算更稳定的关键步骤:

mean = consumption_data.mean()std = consumption_data.std()consumption_data = (consumption_data – mean) / std

步骤5:构建Transformer模型

解释:

Transformer是在论文“Attention is All You Need”[1]中引入的一种处理序列数据的突破性模型。与传统的循环模型不同,Transformer可以选择性地“关注”输入数据的不同部分。

import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layers# 模型参数embedding_dim = 64num_heads = 4ff_dim = 32num_blocks = 2# Transformer blockdef transformer_encoder(inputs, head_size, num_heads, ff_dim, dropout=0):    x = layers.LayerNormalization(epsilon=1e-6)(inputs)    x = layers.MultiHeadAttention(        key_dim=head_size, num_heads=num_heads, dropout=dropout    )(x, x)    x = layers.Dropout(dropout)(x)    res = x + inputs    x = layers.LayerNormalization(epsilon=1e-6)(res)    x = layers.Conv1D(filters=ff_dim, kernel_size=1, activation=“relu”)(x)    x = layers.Dropout(dropout)(x)    return x + resinputs = layers.Input(shape=(None, embedding_dim))x = inputsfor _ in range(num_blocks):    x = transformer_encoder(x, embedding_dim, num_heads, ff_dim)x = layers.GlobalAveragePooling1D()(x)x = layers.Dense(30, activation=“relu”)(x)x = layers.Dense(1, activation=“linear”)(x)model = keras.Model(inputs=inputs, outputs=x)model.compile(    loss=“mean_squared_error”,    optimizer=keras.optimizers.Adam(learning_rate=1e-4),)

在这里,我们设置了一个Transformer模块,首先对输入数据进行归一化处理,然后应用多头注意力机制,并通过前馈网络进行处理。

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-1-0-asloaded{max-width:728px!important;max-height:400px!important;}}

步骤6:准备训练数据和模型训练

解释:

机器学习模型通过数据进行学习。这一步将我们预处理的数据输入模型,让它学习预测能源消耗模式。

X = []y = []for i in range(len(consumption_data) – 24):    X.append(consumption_data[i : i + 24])    y.append(consumption_data[i + 24])X = np.array(X)y = np.array(y)model.fit(X, y, epochs=10, validation_split=0.1)

这段代码将我们的时间序列数据分成24小时的序列,使得变压器更容易分析一天内的模式。

第7步:异常检测

解释:

异常是与正常情况相比的偏差。通过预测并与实际消耗进行比较,我们可以确定这些异常出现的位置。

predictions = model.predict(X)anomalies = np.where(np.abs(predictions – y) > 1)[0]print(f”异常索引:{anomalies}“)

训练后,我们的模型尝试预测时间序列中的下一个数据点。当它明显失败(归一化后的偏差超过1)时,我们可能已经检测到潜在的能源盗窃或其他异常情况。

替代检测方法:

变压器模型由Vaswani等人于2017年引入,确实在机器学习的许多领域,尤其是自然语言处理方面进行了革命性的改变。但在它的统治开始之前,甚至在某些领域现在仍然如此,一些模型和技术被用于序列数据和其他类型的应用。以下是一些替代方法:

循环神经网络(RNNs):

原始RNN:最初的RNN可以记住序列中的过去数据,主要用于序列数据。然而,它们面临着梯度消失的问题。

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-2-0-asloaded{max-width:336px!important;max-height:280px!important;}}

长短期记忆(LSTM):改进的RNN,设计用于长时间记住序列中的过去数据。它非常受欢迎,并在文本生成等任务中取得了成功。

门控循环单元(GRU):简化版的LSTM,性能类似但参数更少。

卷积神经网络(CNNs):

传统上用于图像数据,因为它们能够识别模式、纹理和形状。然而,通过应用1D卷积,它们也被用于序列数据。

径向基函数网络(RBFNs):

主要用于分类和回归任务,它们不一定适用于序列数据,但已在各种应用中使用。

隐马尔可夫模型(HMMs):

在深度学习模型占主导地位之前,它在语音识别和其他序列标记任务中特别受欢迎。

序列到序列模型:

最初设计用于像机器翻译这样的任务,其中输入序列应转换为输出序列。

注意力机制(无变压器):

注意力机制的开发允许模型,特别是在序列到序列任务中,集中关注输入的特定部分来生成输出。它是变压器的前身,但注意力机制可以在没有完整变压器架构的情况下使用。

前馈神经网络(FNNs)或多层感知器(MLPs):

这些是用于各种任务的标准神经网络,从分类到回归。

自编码器:

主要用于降维和异常检测,它们通过压缩然后重构输入数据来发现数据中的模式。

基于树的模型:

像随机森林、梯度提升树等模型可用于各种任务。它们不适用于序列数据,但在特定应用中可以作为强大的替代方案。

时间序列预测模型:

对于与时间序列预测相关的序列数据,传统模型如ARIMA、指数平滑状态空间模型(ETS)和Prophet可以很有效。

在这些选择中,取决于数据的性质和结构、特定应用和问题的要求。例如,如果序列的时间方面非常重要,像LSTM或GRU这样的模型可能更合适。另一方面,如果空间模式更关键(如图像),卷积神经网络(CNN)将是一个自然的选择。

虽然变压器模型在许多领域的盗窃检测中表现出色,但始终要考虑问题的具体情况,不要认为最新或最流行的模型就是最合适的选择。有时候,简单或旧的模型可以在数据集和问题约束下超越新的模型。

总结:

通过能源数据和先进的AI技术的结合,我们创建了一个能够发现异常能源消耗模式的基础侦探。虽然我们的模型很基础,但它为构建更复杂的盗窃检测系统奠定了基础。

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-3-0-asloaded{max-width:250px!important;max-height:250px!important;}}@media(min-width:0px){#div-gpt-ad-aitimejournal_com-leader-3-0_1-asloaded{max-width:250px!important;max-height:250px!important;}} .leader-3-multi-918{border:none !important;display:block !important;float:<invalid Value> !important;line-height:0px;margin-bottom:15px !important;margin-left:auto !important;margin-right:auto !important;margin-top:15px !important;max-width:100% !important;min-height:250px;min-width:250px;padding:0;text-align:center !important;}

参考文献:

数据:

Zidi, S., Mihoub, A., Qaisar, S. M., Krichen, M., & AbuAl-Haija, Q. (2022). Theft detection dataset for benchmarking and machine learning based classification in a smart grid environment. *Journal of King Saud University – Computer and Information Sciences*. Available at: [https://doi.org/10.1016/j.jksuci.2022.05.007](https://doi.org/10.1016/j.jksuci.2022.05.007) [Accessed 24 Jul 2023].

National Renewable Energy Laboratory. (2015). Smart Grid Data from the American Recovery and Reinvestment Act (ARRA) Projects [data set]. Available at: [https://data.openei.org/submissions/418](https://data.openei.org/submissions/418) [Accessed 24 Jul 2023].

@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-mobile-banner-2-0-asloaded{max-width:250px!important;max-height:250px!important;}}@media(min-width:0px){#div-gpt-ad-aitimejournal_com-large-mobile-banner-2-0_1-asloaded{max-width:250px!important;max-height:250px!important;}} .large-mobile-banner-2-multi-701{border:none !important;display:block !important;float:none !important;line-height:0px;margin-bottom:15px !important;margin-left:auto !important;margin-right:auto !important;margin-top:15px !important;max-width:100% !important;min-height:250px;min-width:250px;padding:0;text-align:center !important;width:100%;}

学术参考:

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., & Polosukhin, I. (2017). Attention is all you need. arXiv preprint arXiv:1706.03762v6. Available at: https://doi.org/10.48550/arXiv.1706.03762 [Accessed 24 Jul 2023].

Liu, H., Liang, J., Liu, Y., & Wu, H. (2023). 数据驱动的建筑能源预测综述. *建筑*, 13(2), 532. 可在[https://doi.org/10.3390/buildings13020532](https://doi.org/10.3390/buildings13020532) 访问。[访问日期:2023年7月24日]。