Autoencoder para anomalias

Marcado: 

Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #29006
    Jones Granatyr
    Moderador

      Boa noite.

      Para a criação de um autoencoder para detecção de anomalias, basicamente quais seriam as diferenças em relação aos vídeos disponíveis nesse curso?

      Obrigado.

      #29008
      Jones Granatyr
      Moderador

        Essa construção que fiz estaria correta para a detecção de anomalias com o autoencoder usando tensorflow/keras?

        ————————————————

        # Preparação para autoencoder

        tamanho = treino.shape[1]
        tamanho

        # Construção das camadas

        input = layers.Input(shape=(tamanho, ))

        encoder = layers.Dense(int(tamanho/2), activation=”relu”)(input)
        encoder = layers.Dense(int(tamanho/5), activation=”relu”)(encoder)
        encoder = layers.Dense(int(tamanho/9), activation=”relu”)(encoder)

        latent = layers.Dense(int(tamanho/12), activation=”relu”)(encoder)

        decoder = layers.Dense(int(tamanho/9), activation=”relu”)(latent)
        decoder = layers.Dense(int(tamanho/5), activation=”relu”)(decoder)
        decoder = layers.Dense(int(tamanho/2), activation=”relu”)(decoder)

        output = layers.Dense(int(tamanho), activation=”sigmoid”)(decoder)

         

        # Criação do modelo

        autoencoder = Model(input, output)
        autoencoder.compile(optimizer=”adam”, loss=”mse”)       ################# usar o MSE seria adequado?

         

        # Treinamento do modelo

        treinamento = autoencoder.fit(treino, treino, epochs=100, batch_size=256, verbose=False, validation_split=0.15)

         

        # Reconstrução da base

        reconstrucao = autoencoder.predict(treino)
        train_loss = tf.keras.losses.mse(reconstrucao, treino)
        plt.hist(train_loss, bins=50)

         

        # Determinação do threshold para identificação de anomalias

        threshold = np.mean(train_loss) + np.std(train_loss)
        threshold

         

        # Atribuição da perda MSE

        dados[“MSE”] = tf.keras.losses.mse(reconstrucao, treino)

         

        # Classificação do outlier

        dados[“Outlier”] = 0
        dados.loc[dados[“MSE”] > threshold, “Outlier”] = 1

        <hr />

         

        Obrigado !

        #29032
        Fábio Spak
        Participante

          Olá bom dia, infelizmente não conseguimos dar suporte ou ajudar detalhadamente com implementações personalizadas 🙁 Como a demanda no fórum é muito grande, não nos sobra tempo para avaliar/implementar/testar códigos personalizados que fogem das implementações disponíveis no curso. O que podemos fazer é dar algumas dicas e direcionamento de implementações como mostram os links abaixo:

          https://towardsdatascience.com/anomaly-detection-using-autoencoders-5b032178a1ea

          https://keras.io/examples/timeseries/timeseries_anomaly_detection/

          https://www.kaggle.com/robinteuwens/anomaly-detection-with-auto-encoders

          Fabio

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.