Predix平台上通过分类器实现时间序列的实时异常检测

Author: Alex Zhang,Data Scientist,GE Digital

内容简介
    本文提供了在Predix上进行数据分析的实例 。该实例 通过AnalyticFramework定时调用分类器对Timeseris 数据库中的数据进行实时读取、分析,并将结果写回Timeseries中存储。若读者已经注册Predix帐号,可根据本文中的操作步骤表进行实际操作。
主要步骤:

1.   数据准备:训练数据的准备;测试数据导入到Timeseries;
2.   建立分类器用于Anomaly Detection(以Python为例);
3.   将分类器和在线分类打包上传到Analytic catalog;
4.   在Analytic Framework上配置Analytic的输入输出;
5.   用Analytic Framework的jobscheduler实时调用分类算法并将结果写回Timeseries。 

1.  数据准备
    通过随机数发生器产生一段随机数,以10000个点为例,并在此基础上做基于移动平均的平滑,以窗口大小为100为例,可以产生一段数据。并在随机的时间点产生幅度较大的随机数,如下图中的红点所示。在我们的例子中,我们将分类黑线中的sample,并通过一个分类器来判断其是否为异常点(即红点)。

    在我们的例子中,我们将黑线数据分成长度相等的两部份,一部份用于分类器的训练,另一部份用于仿真实时数据的得到和分类。我们将每二部份数据导入到预先建好的时间序列数据库中,每五秒钟存一个数据点。过程请参考:http://blog.youkuaiyun.com/predixcn/article/details/70227396

2.  训练分类器
    在这一步,我们要训练一个分类器来判断黑线中的样本点是否为异常数据。在此,我们用sklearn.discriminant_analysis中的QuadraticDiscriminantAnalysis方法,即QuadraticDiscriminant Analysis方法。该方法假设每一类数据均符合高斯分布,每个类所属高斯函数有不同的协方差矩阵。我们将训练中的正常数据标为0,异常数据标为1,并对分类器进行训练:

qda =QuadraticDiscriminantAnalysis(store_covariances=False, priors=(0.9, 0.1))
qda.fit(X, label)

    其中X为黑线的sample数据,label为类标,即0或1。由于数据中大部份为正常数据,所以我们可以调整先验概率大部份为正常样本(0.9)。之 后,我们将模型序列化并存储:

output = open('qda.pkl', 'wb')
pickle.dump(qda, output)
output.close()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值