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

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

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

  1. from keras.layers import Input, Dense, LSTM
  2. from keras.models import Model
  3. from keras import backend as K
  4. import numpy as np
  5. from pandas import read_csv
  6. from matplotlib import pyplot
  7. import numpy
  8.  
  9. from numpy import array
  10. from keras.models import Sequential
  11. from keras.layers import RepeatVector
  12. from keras.layers import TimeDistributed
  13. from keras.utils import plot_model
  14.  
  15. #导入数据,前8000个正常样本,剩下的样本包括正常和异常时间序列,每个样本是1行48列
  16. dataset = read_csv('randperm_zerone_Dataset.csv')
  17. values = dataset.values
  18. XY= values
  19. n_train_hours1 =7000
  20. n_train_hours3 =8000
  21. trainX=XY[:n_train_hours1,:]
  22. validX =XY[n_train_hours1:n_train_hours3, :]
  23. testX =XY[n_train_hours3:, :]
  24. train3DX = trainX.reshape((trainX.shape[0], trainX.shape[1],1))
  25. valid3DX =validX.reshape((validX.shape[0], validX.shape[1],1))
  26. test3DX = testX.reshape((testX.shape[0],testX.shape[1],1))
  27. # 编码器
  28. sequence = train3DX
  29. # reshape input into [samples, timesteps, features]
  30. n_in = 48
  31. # define model
  32. model = Sequential()
  33. model.add(LSTM(100, activation='relu', input_shape=(n_in,1)))
  34. model.add(RepeatVector(n_in))
  35. model.add(LSTM(100, activation='relu', return_sequences=True))
  36. model.add(TimeDistributed(Dense(1)))
  37. model.compile(optimizer='adam', loss='mse')
  38. model.summary()
  39. # fit model
  40. history=model.fit(train3DX, train3DX, shuffle=True,epochs=300,validation_data=(valid3DX, valid3DX))
  41. pyplot.plot(history.history['loss'], label='train')
  42. pyplot.plot(history.history['val_loss'], label='valid')
  43. pyplot.legend()
  44. pyplot.show()
  45. # demonstrate recreation
  46. yhat = model.predict(sequence)
  47. ReconstructedData=yhat.reshape((yhat.shape[0], -1))
  48. numpy.savetxt("ReconstructedData.csv", ReconstructedData, delimiter=',')

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

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

    尝试用卷积AE和卷积VAE做无监督检测,思路如下: 1.先用正常样本训练AE或VAE 2.输入测试集给AE或VAE,获得重构的测试集数据. 3.计算重构的数据和原始数据的误差,如果误差大于某一个阈值, ...

  2. 无监督︱异常、离群点检测 一分类——OneClassSVM

    OneClassSVM两个功能:异常值检测.解决极度不平衡数据 因为之前一直在做非平衡样本分类的问题,其中如果有一类比例严重失调,就可以直接用这个方式来做:OneClassSVM:OneClassSV ...

  3. 从时序异常检测(Time series anomaly detection algorithm)算法原理讨论到时序异常检测应用的思考

    1. 主要观点总结 0x1:什么场景下应用时序算法有效 历史数据可以被用来预测未来数据,对于一些周期性或者趋势性较强的时间序列领域问题,时序分解和时序预测算法可以发挥较好的作用,例如: 四季与天气的关 ...

  4. AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测

    AIOps探索:基于VAE模型的周期性KPI异常检测方法 from:jinjinlin.com   作者:林锦进 前言 在智能运维领域中,由于缺少异常样本,有监督方法的使用场景受限.因此,如何利用无监 ...

  5. Abnormal Detection(异常检测)和 Supervised Learning(有监督训练)在异常检测上的应用初探

    1. 异常检测 VS 监督学习 0x1:异常检测算法和监督学习算法的对比 总结来讲: . 在异常检测中,异常点是少之又少,大部分是正常样本,异常只是相对小概率事件 . 异常点的特征表现非常不集中,即异 ...

  6. 杜伦大学提出GANomaly:无需负例样本实现异常检测

    杜伦大学提出GANomaly:无需负例样本实现异常检测 本期推荐的论文笔记来自 PaperWeekly 社区用户 @TwistedW.在异常检测模块下,如果没有异常(负例样本)来训练模型,应该如何实现 ...

  7. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  8. 使用GAN进行异常检测——可以进行网络流量的自学习哇,哥哥,人家是半监督,无监督的话,还是要VAE,SAE。

    实验了效果,下面的还是图像的异常检测居多. https://github.com/LeeDoYup/AnoGAN https://github.com/tkwoo/anogan-keras 看了下,本 ...

  9. UEBA 学术界研究现状——用户行为异常检测思路:序列挖掘prefixspan,HMM,LSTM/CNN,SVM异常检测,聚类CURE算法

    论文 技术分析<关于网络分层信息泄漏点快速检测仿真> "1.基于动态阈值的泄露点快速检测方法,采样Mallat算法对网络分层信息的离散采样数据进行离散小波变换;利用滑动窗口对该尺 ...

随机推荐

  1. Java笔记(基础第一篇)

    一.初识java 1.Java是一种可以编写跨平台的.面向对象的程序设计语言. Java开发分成以下3个方向: (1). java SE:主要用于桌面程序的开发.是java EE和java ME的基础 ...

  2. 2-删除IPC$的方式

    一.使用命令临时删除IPC$的方式 1.查看IPC$是否启用 命令:net share 2.删除IPC$功能 命令:net share ipc$ /delete 注:使用命令删除后,重启服务器后,IP ...

  3. C# ado.net DataSet使用(五)

    一.填充dataset class Program { private static string constr = "server=.;database=northwnd;integrat ...

  4. HDU 6071 - Lazy Running | 2017 Multi-University Training Contest 4

    /* HDU 6071 - Lazy Running [ 建模,最短路 ] | 2017 Multi-University Training Contest 4 题意: 四个点的环,给定相邻两点距离, ...

  5. Codeforces Round #455 (Div. 2) 909E. Coprocessor

    题 OvO http://codeforces.com/contest/909/problem/E CF455 div2 E CF 909E 解 类似于拓扑排序地进行贪心, 对于 Ei=0 并且入度为 ...

  6. asp.net上传大文件的解决方案

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  7. more/less

    more less

  8. 【csp模拟赛2】黑莲花--数据结构+数论

    没有什么能够阻挡,你对被阿的向往.天天 AK 的生涯,你的心了无牵挂. 虐过大佬的比赛,也曾装弱装逼.当你低头的瞬间,才发现旁边的人. 把你的四肢抬起来,使劲地往门上撞.盛开着永不凋零,黑莲花. —— ...

  9. django-配置相关

    1 自己配置一个静态文件夹 settings.py中 # 用户上传的文件配置 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'me ...

  10. 【CUDA 基础】5.6 线程束洗牌指令

    title: [CUDA 基础]5.6 线程束洗牌指令 categories: - CUDA - Freshman tags: - 线程束洗牌指令 toc: true date: 2018-06-06 ...