theano - 如何在我的时间序列数据上使用 Theanets LSTM RNN?

标签 theano lstm recurrent-neural-network

我有一个由一列组成的简单数据框。该列中有 10320 个观测值(数值)。我正在通过将数据插入到一个带有 200 个观察值的窗口的图中来模拟时间序列数据。这是绘图的代码。

import matplotlib.pyplot as plt
from IPython import display
fig_size = plt.rcParams["figure.figsize"]
import time
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
fig, axes = plt.subplots(1,1, figsize=(19,5))
df = dframe.set_index(arange(0,len(dframe)))
std = dframe[0].std() * 6
window = 200
iterations = int(len(dframe)/window)
i = 0
dframe = dframe.set_index(arange(0,len(dframe)))
while i< iterations:
    frm = window*i
    if i == iterations:
        to = len(dframe)
    else:
        to = frm+window
    df = dframe[frm : to]
    if len(df) > 100:
        df = df.set_index(arange(0,len(df)))
        plt.gca().cla() 
        plt.plot(df.index, df[0])
        plt.axhline(y=std, xmin=0, xmax=len(df[0]),c='gray',linestyle='--',lw = 2, hold=None)
        plt.axhline(y=-std , xmin=0, xmax=len(df[0]),c='gray',linestyle='--', lw = 2, hold=None)
        plt.ylim(min(dframe[0])- 0.5 , max(dframe[0]) )
        plt.xlim(-50,window+50)
        display.clear_output(wait=True)
        display.display(plt.gcf()) 
        canvas = FigureCanvas(fig)
        canvas.print_figure('fig.png', dpi=72, bbox_inches='tight')
    i += 1
plt.close()

这模拟了实时数据流并将其可视化。我想要的是将 theanet RNN LSTM 应用于数据以检测无监督的异常。因为我是在无人监督的情况下进行的,所以我认为不需要将数据拆分为训练集和测试集。到目前为止,我还没有找到任何对我有意义的东西,并且已经在谷歌上搜索了大约 2 个小时。只是希望你们能帮上忙。我想将 RNN 的预测输出也放在图上并定义一个阈值,如果误差太大,这些值将被识别为异常。如果您需要更多信息,请发表评论并告诉我。谢谢!

最佳答案

阅读

  • 像神经元一样,LSTM 网络是由相互连接的 LSTM Blocks 构建的他的训练是通过 BackPropogation Through Time 完成的.
  • 使用时间序列的经典异常检测需要预测 future (在一个或多个点)的时间序列输出,并使用真实值在这些点上找到错误。 预测误差 高于阈值将反射(reflect)和amomly

  • 解决方案

    说了这些
  • 您必须训练网络,因此您需要训练集和测试集
  • 使用 N 个输入来预测 M 个输出(通过实验决定 N 和 M - 训练误差较低的值)
  • 滚动输入数据中 (N+M) 个元素的窗口,并使用这个 (N+M) 个项目的数据数组,也称为框架来训练或测试网络。
  • 通常,我们将 90% 的起始序列用于训练,10% 用于测试。

  • 这个方案会失败,好像训练不正确会有错误的预测错误,这些错误不是异常 .因此,请确保提供足够的训练和最重要的 shuffle 训练框架,并考虑所有变化。

    关于theano - 如何在我的时间序列数据上使用 Theanets LSTM RNN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066617/

    相关文章:

    python - Theano 中每个时间步具有动态输入的 RNN

    python - LSTM - 一段时间后预测相同的常数值

    machine-learning - 在长序列上训练 RNN

    python - Theano 教程中的说明

    python - 如何在theano中保存/序列化训练好的模型?

    python - 从 PyTorch 中的 BiLSTM (BiGRU) 获取最后一个状态

    tensorflow - keras 学习的 LSTM 网络中的前向传递

    python - 如何更新 keras LSTM 权重以避免概念漂移

    neural-network - Tensorflow 中 GRU 单元的解释?

    python - Theano:对稀疏矩阵的非零元素进行运算