一种基于服务捕获传感器异常事件的声明性方法*
2023-05-12赵新宇
李 惠 刘 晨 赵新宇
(北方工业大学大规模流数据集成与分析技术北京市重点实验室 北京 100144)
1 引言
在物联网高速发展的现代社会中,各领域行业尤其是工业设备中,都部署了大量传感器设备,用于检测异常事件。
异常事件的传感器流源对不同的干扰是可变化的。如图1 中所示,很明显,单个传感器流具有相对较低的值密度,一个事件通常涉及多个传感器流。图1 中字母标识的位置显示了多个传感器流之间的延迟相关性的一些例子,流4 和流5 的改变频率大致相似,但是存在一定延迟相关性。而不同传感器流中的数据记录的频率和时间戳也普遍不同。
图1 干扰对不同传感器流的影响
在本文中,我们解决了以下两个问题:一是如何选择合适的传感器流来定位不同的干扰源;二是根据传感器流的模式特性来提高捕捉异常事件的精度。
2 相关工作
利用传感器网络来进行异常事件检测主要有两方式,一种是基于学习的方法,使用各种分类模型对历史传感器数据进行建模,比如神经网络[1]、支持向量机、马尔可夫随机场等,然后对实时传感器数据进行分类。另外一种是利用传感器的时空关系,把各类异常抽象成不同的事件模式,从而将异常检测问题转化为模式匹配问题。模式匹配的基本方法是基于领域专家[2]定义的预设阈值来检测事件。毛等[3]利用贝叶斯网络和马尔可夫链对传感器之间的时空相关性进行建模。大多数现有的基于服务的方法都需要预先定义服务组合或协作目标,并且不支持自适应协作。因此,它们不能用于增加不确定的传感器流的值密度。
在本文中,我们将现有的封装传感器数据的方法称为服务,并提出了一种基于服务的声明性方法来支持来自不确定流源的自适应异常事件捕获。
3 声明性抽象服务
3.1 前期准备
首先我们对传感器流做如下定义:
定义1(传感器流):一个传感器流可以被表示为SS,A,DR,SS 是带有id 的流源,A 是属性集,DR={dr1,dr2,…,dri,…},是一个无线序列的数据记录,这是一组带有时间戳的键值对,。
图2 显示了以前的服务抽象中的核心工件和重要术语。传感器流由流源发出,例如传感器、生产者、发布者、发射器等,并被客户机(例如用户或应用程序)消费。
图2 本文核心工件和重要术语
3.2 流数据模型
我们的流数据服务可以定义如下:
定义2(流数据服务):一个流数据服务形式化为〈pdsid,SS,eventin,eventout,DR,EP,hyperlinks〉,pdsid是唯一标识符,eventin表示输入事件流,eventout表示EP 产生的输出事件流,SS是可能的数据流源集,DR是声明性规则,EP 是指事件处理函数,它包括两个本文提出的算法和之前实现的操作,hyperlinks 为一个指示服务事件目标的可选参数。
考虑到滞后相关分析问题,以寻找时滞向量来最大化PCC,并在我们的服务抽象中提出了一种基于动态时间扭曲的事件捕获算法。
4 服务抽象
4.1 设定声明性规则
声明性规则和事件捕获算法是我们的服务抽象中的关键。在本小节中,将介绍如何设置声明性规则。
由外部干扰引起的事件通常会持续一段时间,声明性规则中触发的操作需要是一个具有端点的连续过程。因此,我们利用ECA 规则的增强来表示声明性规则。声明性规则的概括性规则为在一定时间段内,特定条件下,某一事件流上的预定义规则。
由某一来源产生的干扰可以形成一个事件流。该条件是可选的,表示对某种干扰的约束。操作表示流源和相应的处理行为。一段时间表示操作持续的时间。我们设计并实现了几种操作,这些操作可分为三类:转换、聚合和融合[9]。
这样流数据服务仅通过访问和处理相对传感器流,就可以自适应地映射各种外部干扰。
4.2 基于动态时间扭曲的事件捕获算法
动态时间扭曲算法[10]是一种用于测量时间序列相似度的鲁棒方法,它可以对时间序列进行位移和扭曲,从而忽略了时间轴的缩放和位移的问题。以下是动态时间扭曲算法的形式化描述。
假设有两个含时间戳的传感器序列C 和Q,长流:
为了对齐两个序列,算法构造了一个m×n的矩阵,矩阵的位置(i,j)用于存储ci与qj的距离(通常为欧式距离,。动态时间扭曲算法的目的就是找出一条从(1,1)到(m,n)开销最下的一条路径。
定义γ(i,j)表示(1,1)到(i,j)点的最小累加距离,则动态时间扭曲算法所求得最小路径可形式化表示为
本文采用基于动态时间扭曲的算法求出两个传感器数据序列的时滞向量。
4.3 延迟相关性
为了获得精度相关性,我们的目标是找到时滞向量来修正PCC,并将滞后相关分析问题形式化如下。
定义3(延迟相关性):在一个滑动窗口中给定两个传感器数据集Di和Dj。
假设:
有,F≥δcor。
我们就认为Di和Dj是相关的,其中δcor是给定的阈值。
以上定义中滞后向量即某特定时间下引发的另一传感器相关事件的一个滞后特性,cor(Fi,Fj,Δ)为传感器数据集在存在一定滞后性情况下的相关性的计算方式。
为了分析两个传感器数据之间的相关性,我们首先可以得到一个使MAX(cor(Fi,Fj,Δ))产生的时滞向量,然后通过比较给定的阈值来证明是否存在延迟相关性。期望最大化(EM)算法[7]可用于计算滞后向量。然而,时间复杂度依赖于数据记录和迭代的数量,并呈指数级增长。因此,我们根据以下定理变换了计算时滞向量的函数模型。
定理1:当归一化级数的欧几里得距离下降时,皮尔逊相关系数上升。
证明:
第一个式子描述了PPC的计算公式,第二个式子描述了余弦相似度的计算公式。据此,可以明显看出,PPC等价于集中余弦相似度。
上式显示了欧式距离与余弦相似度的关系,当欧氏距离下降时PPC 上升。根据定理1,可以计算出使归一化级数的欧氏距离最小的时滞向量,然后根据时滞向量计算出原始级数的PCC。
我们将事件捕获算法集成到服务抽象中,并基于它在声明性规则中设置操作。这样,当接收到一定的干扰时,就可以访问相对的传感器流,这样就可以执行事件捕获算法,一旦相关性发生改变,就可以捕获事件。图3 显示了一个事件检测服务的事件捕获的执行过程。除了事件检测服务外,还有两个干扰服务,它们不断地向它发送服务事件。
图3 事件检测服务
5 实验
5.1 实验准备
我们将流数据服务中设置的流源数设置为不同梯度,并对比是否有声明性规则的每个服务的CPU负载和执行时间。
我们用Ed来表示检测到的事件列表,Et为实际的事件列表,准确性评估方式按照的精度和查全率以及F(1)值三两个方面计算,以下是计算方式:
我们实验中使用的数据集来自国家智能电网的真实传感器数据,严格符合实际时间戳。
5.2 结果及分析
图4 显示了服务抽象的系统负载。很明显,具有声明性规则的服务抽象值要低得多,这是因为在我们的服务抽象中需要处理的传感器流要少得多。
图4 不同服务抽象的CPU负载
另外如表1 在执行时间上我们的服务抽象也表现优异。
表1 事件执行时间
为了评估我们的服务抽象的有效性,通过计算基于动态时间扭曲的算法和正态相关性分析算法捕获的事件的精度和查全率来评估事件捕获算法。
我们将不同流源下不同事件捕获算法的平均精度和F(1)值在图5、图6中做了展示。很明显,我们的事件捕获算法具有更高的精度。这是因为我们的事件捕获算法采用了基于动态时间扭曲的相关性分析算法,并考虑了传感器流的不同频率和相关性的位移。
图5 不同事件捕获算法的准确度
图6 不同事件捕获算法的F(1)值
在未来,我们的目标是基于实时分析和学习来更新运行时的声明性规则,并通过考虑事件之间的动态和时变相关性来进一步提高准确性。
6 结语
在本文中,我们的目标是提出一种基于服务的声明性方法,通过改进我们以前的服务抽象,来从不确定的传感器流中捕获事件。我们利用声明性规则来处理不确定的流源,并利用相关性分析方法来捕获事件作为相关性的变化。通过预定义的声明性规则,我们的服务抽象可以自适应地访问和处理相对的传感器流,以反映外部干扰。面对不一致的相关频率和位移,我们提出了一种基于动态时间扭曲(动态时间扭曲)的算法,通过分析所选传感器流的延迟相关性来捕获事件。在真实传感器数据的基础上,一系列实验表明,该方法比现有方法效率高,具有较高的精度。
今后的目标是应用更多的时间序列分析方法来捕获各种事件,如频繁的共现事件和基于形状的事件,并通过基于实时分析或学习在运行时更新声明性规则来进一步改进我们的方法。