【问题标题】:Autoencoder using MLP for anomaly detection in multivariate timeseries使用 MLP 的自动编码器在多变量时间序列中进行异常检测
【发布时间】:2021-04-12 15:02:59
【问题描述】:

我正在开发一个使用 MLP 来检测多元时间序列中的异常的自动编码器。为了简化问题,我开始只使用一个系列变量。

单变量案例

我应用它的方式是将时间序列分解成片段,然后将这些片段呈现给网络。例如,我的系列由 1000 个点组成,我将其分成 50 个长度为 20 的子系列。每个子系列都成为学习网络的示例。

DAE input_shape 应该是什么?我看到shape=(20, )shape=(20,1) 是有区别的。我把我一直在处理的 DAE 代码留在下面。以及DAE最后一层的格式应该是怎样的?当我使用只有 1 个神经元的输出层时,模型可以正常工作,为什么?

model = keras.Sequential([

        ### ENCODING ###
        layers.Input(shape=(df_train.shape[1], df_train.shape[2])),
       # or ?
       #layers.Input(shape=(df_train.shape[1],)),

        layers.Dense(16, activation='sigmoid'),
        layers.Dropout(rate=0.1),                     
        layers.Dense(8, activation='sigmoid'),

        ### LATENT SPACE
        layers.Dense(4, activation='sigmoid'),

        ### DECODING ###
        layers.Dense(8, activation='sigmoid'),
        layers.Dropout(rate=0.1),               
        layers.Dense(16, activation='sigmoid'),
     
        layers.Dense(1, activation='sigmoid')

]) 

多变量案例

考虑多变量情况,我有 16 个时间序列。输入形状和输出层看起来如何?

【问题讨论】:

    标签: python neural-network time-series autoencoder anomaly-detection


    【解决方案1】:

    密集层(MPL 的构建块)仅采用单一维度。因此,您必须将 2D 矢量展平为 1D。向量的形状为(width*height,)

    另一种方法是使用卷积或循环自动编码器 (LSTM/GRU)。使用卷积自动编码器,大多数层将是 Conv2d 或 Conv1d。然后,您将使用单个 Dense 层作为压缩瓶颈。卷积层接受形状(宽度、高度、通道)的输入 - 如果没有第三维度,则通道可以为 1。

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 2019-04-26
      • 2020-09-04
      • 2018-11-25
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多