无监督异常检测之LSTM组成的AE

我本来就是处理时间序列异常检测的,之前用了全连接层以及CNN层组成的AE去拟合原始时间序列,发现效果不佳。当利用LSTM组成AE去拟合时间序列时发现,拟合的效果很好。但是,利用重构误差去做异常检测这条路依旧不通,因为发现异常曲线的拟合效果也很好……算了,这次先不打算做时间序列异常检测了。在这里把“基于LSTM的auto-encoder”的代码分享出来。

代码参考了Jason Brownlee大佬修改的:具体链接我找不到了,当他的博客我还能找到,感兴趣自己翻一翻,记得在LSTM网络那一章

https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/

from keras.layers import Input, Dense, LSTM
from keras.models import Model
from keras import backend as K
import numpy as np
from pandas import read_csv
from matplotlib import pyplot
import numpy

from numpy import array
from keras.models import Sequential
from keras.layers import RepeatVector
from keras.layers import TimeDistributed
from keras.utils import plot_model

#导入数据,前8000个正常样本,剩下的样本包括正常和异常时间序列,每个样本是1行48列
dataset = read_csv(‘randperm_zerone_Dataset.csv‘)
values = dataset.values
XY= values
n_train_hours1 =7000
n_train_hours3 =8000
trainX=XY[:n_train_hours1,:]
validX =XY[n_train_hours1:n_train_hours3, :]
testX =XY[n_train_hours3:, :]
train3DX = trainX.reshape((trainX.shape[0], trainX.shape[1],1))
valid3DX =validX.reshape((validX.shape[0], validX.shape[1],1))
test3DX = testX.reshape((testX.shape[0],testX.shape[1],1))
# 编码器
sequence = train3DX
# reshape input into [samples, timesteps, features]
n_in = 48
# define model
model = Sequential()
model.add(LSTM(100, activation=‘relu‘, input_shape=(n_in,1)))
model.add(RepeatVector(n_in))
model.add(LSTM(100, activation=‘relu‘, return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(optimizer=‘adam‘, loss=‘mse‘)
model.summary()
# fit model
history=model.fit(train3DX, train3DX, shuffle=True,epochs=300,validation_data=(valid3DX, valid3DX))
pyplot.plot(history.history[‘loss‘], label=‘train‘)
pyplot.plot(history.history[‘val_loss‘], label=‘valid‘)
pyplot.legend()
pyplot.show()
# demonstrate recreation
yhat = model.predict(sequence)
ReconstructedData=yhat.reshape((yhat.shape[0], -1))
numpy.savetxt("ReconstructedData.csv", ReconstructedData, delimiter=‘,‘)

原文地址:https://www.cnblogs.com/nanhaijindiao/p/11588278.html

时间: 2024-10-14 13:05:16

无监督异常检测之LSTM组成的AE的相关文章

无监督异常检测之卷积AE和卷积VAE

尝试用卷积AE和卷积VAE做无监督检测,思路如下: 1.先用正常样本训练AE或VAE 2.输入测试集给AE或VAE,获得重构的测试集数据. 3.计算重构的数据和原始数据的误差,如果误差大于某一个阈值,则此测试样本为一样. 对于数据集的描述如下: 本数据集一共有10100个样本,每个样本是1行48列的向量,为了让它变成矩阵,自己在末尾补了一个0,将其转变成7*7的矩阵.前8000个是正常样本.后2100个中,前300个是正常样本,之后的1800个中包括6种异常时间序列,每种异常时间序列包括300个

异常检测及欺诈

一.无监督异常检测模型   1.在线流数据异常检测(iforest隔离森林算法) 该方法的主要思想是,通过随机选定样本属性及其值将样本空间进行随机划分,分割的过程可以看成类似于随机森林中树建立的过程,对于新的样本,基于建立的隔离树求其分割深度,深度值越小,表明越容易被隔离,也就意味着异常的概率越大:反之则为正常样本.该方法是基于异常数据"少且不同"的特征,来采用随机隔离的思想设计异常检查. 该方法的主要优点是,在构建初始模型时不需要任何实际的数据,从而能快速构建初始探测模型,它符合数据

异常检测 | 使用孤立森林 sklearn.ensemble.IsolationForest 分析异常流量

孤立森林 Isolation Forest(sklearn.ensemble.IsolationForest):一种适用于 连续数据 的 无监督 异常检测方法.与随机森林类似,都是高效的集成算法,相较于LOF,K-means等传统算法,该算法鲁棒性高且对数据集的分布无假设. Isolation Forest算法做非监督式的异常点检测分析,对数据特征的要求宽松: 该算法对特征的要求低,不需要做离散化,不需要数值标准化 不需要考虑特征间的关系(例如共线性)等,不需要额外做特征过滤和筛选 附:SKle

# URL异常检测

(Isolation Forest无监督)这个算法是随机森林的推广. iTree树构造:随机选一个属性,再随机选该特征的一个值,对样本进行二叉划分,重复以上操作. iTree构建好了后,就可以对数据进行预测啦,预测的过程就是把测试记录在iTree上走一下,看测试记录落在哪个叶子节点.iTree能有效检测异常的假设是:异常点一般都是非常稀有的,在iTree中会很快被划分到叶子节点,因此可以用叶子节点到根节点的路径h(x)长度来判断一条记录x是否是异常点. 越接近1表示是异常点的可能性高: 越接近0

基于机器学习的web异常检测

基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活的黑客面前,很容易被绕过,且基于以往知识的规则集难以应对0day攻击:另一方面,攻防对抗水涨船高,防守方规则的构造和维护门槛高.成本大. 基于机器学习技术的新一代web入侵检测技术有望弥补传统规则集方法的不足,为web对抗的防守端带来新的发展和突破.机器学习方法能够基于大量数据进行

Andrew Ng-ML-第十六章-异常检测

1.问题动机 图1.飞机发动机检测例子 对飞机引擎的例子,如果选取了两个特征x1热量产生度,x2震动强度.并得到如下的图,如果有一个新的引擎来检测其是否正常,x_test,那么此时如果点落在和其他点正常内,那么就显示是正常,不需要进一步的检测,但是如果在右下角绿色的,那么就是异常的,需要进一步地检测. 图1.密度检测 更一般地建立模型,当x_test输入时,若概率<阈值ε,那么就被设置为异常:否则设置为正常.如图来看,中心部分的概率大,四周部分概率小. 图2.异常检测的应用 异常检测最常见的应用

Auto Encoder用于异常检测

对基于深度神经网络的Auto Encoder用于异常检测的一些思考 from:https://my.oschina.net/u/1778239/blog/1861724 一.前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景.举几个场景:网络流量是正常流量还是攻击流量.视频中的人的行为是否正常.运维中服务器状态是否异常等等.有监督学习的做法是给样本标出label,那么标label的过程肯定是基于某一些规则(图片除外),既然有了规则

异常检测综述

原文地址:http://www.cs.umn.edu/sites/cs.umn.edu/files/tech_reports/07-017.pdf 摘要 这篇文章对常见的异常检测算法进行了分类,在每一类中,给出了这一类问题的基本假设(什么是正常,什么是异常),针对该类问题的基础方法,以及对基础方法的扩展.最后给出了关于计算复杂度的讨论. 1. 引言 异常检测应用广泛.本文给出的方法,有些只适用于某些场景,但有些方法有很强的普适性.本文的目标是给出一个结构性的关于异常检测方法的介绍. 1.1 异常

无监督算法

无监督算法: KMeans算法: 1. 随机初始化数据集簇的中心,一般从数据集中选择 2. 外循环: 内循环:计算各个数值点到中心的距离,进行聚类 计算每个聚类的平局值,移动聚类中心 PCA算法: 目标:数据压缩和可视化 1. 对样本数据进行去均值和归一化 2. 组建sigma矩阵,然后进行奇异值分解,求的压缩和的结果Z 异常检测算法: 1. 选择可能适应于异常样本的特征 2. 根据样本得到高斯分布的均值和方差 3. 对给定的样本计算其是否为异常样本 异常检测与监督学习: 异常检测:正样本数量较