基于Apriori算法和主观逻辑的传感器网络异常事件检测
摘要
针对传感器网络中异常事件难以表征以及异构节点无法直接协作的挑战,本文提出了一种新的传感器网络异常检测方法。我们利用Apriori算法挖掘样本数据,发现事件到感知数据的映射关系,从而为检测提供规则支持。在检测过程中,节点首先发现可疑事件,然后相关节点协作进行验证。为了融合异构节点的检测结果,我们首先将检测结果映射为主观逻辑意见,并利用其融合规则生成合理且综合的结论。我们的分析表明,我们的解决方案能够细化节点检测事件的范围,提高检测效率,并合理生成检测结果。
CCS概念
- 安全与隐私 → 移动与无线安全
关键词
传感器网络;异常事件检测;Apriori;主观逻辑。
1. 引言
传感器网络已广泛应用于军事、能源、健康监测等领域[1‐2]。由于传感器节点通常部署在火山、战场等难以到达的区域,人们希望及时发现战场中是否发生未知物体入侵等敏感事件,从而实现早期预警并及时响应异常事件。为传感器网络部署异常事件检测机制是决定其能否被用户接受和使用的关键。
在构建传感器网络的异常检测方法时存在两个挑战。第一个挑战是如何识别异常事件。人们所关注的异常事件多种多样且复杂,难以通过单个传感器节点在一次感知时间内依赖单一维度来识别这些异常事件。例如,部署在森林中的传感器网络为了捕捉森林火灾,必须依赖多个节点进行连续采样,从温度、湿度、风和其他维度以获取森林火灾的本质特征。这引发了一个新问题:如何融合多个维度的检测结果。
为了解决这些挑战,我们提出了一种新颖的异常检测方法。为了识别异常事件,我们使用Apriori算法从样本数据中提取特定事件的痕迹。然后,我们找出这些事件在单个节点和单次采样周期内的感知数据规律。为了融合异构传感器节点的检测结果,我们将它们的结果转换为主观逻辑下的意见。此外,借助主观逻辑融合规则,合理地融合这些意见,以获得综合判断结果。
本文的结构如下。在第二部分,我们介绍了我们的解决方案的详细内容,包括基于Apriori算法识别异常事件的方法以及基于主观逻辑融合异构向量的方法。在第三部分,我们通过一个案例讨论了该方法的合理性。第4节介绍了本文的相关工作。最后对全文进行总结。
2. 我们的解决方案
2.1 概述
如图1所示,我们的解决方案分为两个阶段,包括训练阶段和检测阶段。在训练阶段,我们收集特定事件发生时传感器网络节点感知数据的变化,并利用数据挖掘方法获取事件痕迹,形成事件检测规则集。在检测阶段,检测分为两部分:事件预检测和事件重检测。在事件预检测中,当出现可疑事件时,会发送一个激活信号,相关节点全部参与事件检测,随后传感器网络进入事件重检测。在事件重检测中,相关节点协同工作,确定网络事件是否发生。
在训练阶段,关键问题是如何获取事件轨迹。我们采用Apriori算法来挖掘传感器网络在特定异常事件发生时收集的数据,并获得从异常事件到感知数据的映射。此外,根据传感节点和时间序列,将其细化为单节点检测规则。在检测阶段,核心问题是如何在事件重检测中融合多维检测结果。借助主观逻辑,我们首先将检测结果转换为主观逻辑意见,然后利用主观逻辑融合规则对其进行融合。我们将在下一小节中详细讨论这些问题。
2.2 训练阶段
在我们的研究中,事件轨迹被视为传感器节点中感知数据的变化轨迹。例如,打开门对于部署在门附近的温度传感器而言,意味着温度发生变化,因为在大多数情况下室内和室外的温度存在差异。因此,当门打开时温度发生变化的这些节点应参与开门事件的检测。此外,由于门和节点的位置及其他因素,这些节点在不同位置的温度变化也会有所不同。
我们关注两种事件轨迹:正常事件和异常事件。基于对这两类事件的识别,传感器网络能够检测真实异常事件。理想情况下,识别异常事件就足以发现异常事件。然而,某些异常事件在训练期间无法发生。例如,我们可以模拟用户开门,但无法模拟炸弹爆炸破门。对这两类事件的识别可以提高异常事件的检测准确率。
基于Apriori算法获取事件轨迹的过程包括数据收集、数据预处理和轨迹挖掘几个阶段。第一阶段是数据收集。数据收集是指在传感器网络中发生网络事件时,记录各个传感器节点的相关数据,从而获得原始数据集。为了提高事件轨迹挖掘的准确性,每个事件被多次采集,以形成足够数量的样本,从而获得原始数据集。为了确保事件轨迹挖掘的准确性并避免不同事件之间的干扰,每轮事件挖掘仅分析单一事件,以避免引入新的噪声。
第二阶段是数据预处理。数据预处理是在专家意见的指导下,将原始数据集转换为可供挖掘的数据集。首先,需要过滤明显的错误数据。由于内部原因或外部因素,感知数据可能会出现异常,这些明显的异常数据应当被排除。其次,需要根据专家意见对数据进行进一步的预处理。例如,在我们看来,为了检测门正在开启的事件,应更加关注温度的变化,而不是温度本身。
下一个阶段是在准备好的数据上进行事件轨迹挖掘,这是训练中的关键阶段。轨迹挖掘的目的是发现事件发生时哪些节点的感知数据发生了显著变化。仍以开门检测为例,当门被打开时,节点A感知到的温度首先上升;在第二个感知周期中,节点B和节点C感知到的温度也随之上升;在第四个感知周期中,节点A、B和C的温度上升到相同水平,之后不再进一步变化。这种规律性的变化有助于事件的检测。
我们首先给出事件轨迹的定义。事件轨迹是指当事件发生时,网络节点感知到的数据的规律性变化。它可以表示为{e: p1, p2,…, pn},其中p表示节点的事件轨迹。此处引入了节点的事件轨迹这一概念,它指的是当事件发生时,单个节点所感知数据的规律性变化。其可表示为(节点ID: x1, x2,…, xn)的形式,其中x1, x2,…, xn表示每个感知周期内数据的变化规律。若进一步分析发现某节点在各个感知周期内的数据变化不存在稳定规律,则对应感知周期的数据变化规律设为空,表示这些感知周期无统计规律。
使用Apriori算法挖掘事件轨迹分为两个步骤。首先,获取节点的事件轨迹。其次,获取整个传感器网络的事件轨迹。以下是使用Apriori算法挖掘事件轨迹的方法。
假设传感器网络由n个节点组成,事件表示为e。为了获得事件轨迹 s,我们进行以下操作。
(1) 遍历传感器节点 ai 的数据,找出所有频繁1项集,记为L1。实际上,频繁1项集表示一个感知周期内节点的变化。
(2) 从时间序列的角度来看,频繁1项集L1与下一个频繁1项集连接,生成候选2项集C2。
(3) 计算C2中每个候选2项集的支持度。如果支持度大于阈值 min_sup,则得到频繁2项集L2。
(4) L2继续与下一个对应的频繁1项集连接,生成候选3项集 C3。类似地,计算候选3项集的支持度。如果支持度大于 min_sup,则得到频繁3项集L3。
(5) 重复步骤1到4,直到无法生成新的更长的频繁项集为止。现有的频繁项集即为节点的事件轨迹,记为pi。
(6) 重复步骤1到5,直到获得所有节点的事件轨迹,并表示为 p = {p1, p2,…, pn}。
(7) 遍历 p,若某些频繁项集的长度小于预设阈值 min_len,则可能被删除。之后,我们得到事件轨迹 s={e: p’1, p’2,…, p’n}。
对于单个节点,其在一次感知周期内的数据变化可能与多个事件轨迹一致。例如,门的打开导致节点A的温度升高,但也可能被误认为是附近发生了火灾。因此,为了正确检测事件,必须结合其他节点的信息,并持续观察多个感知周期来进行进一步的事件识别。
2.3 检测阶段
检测分为两个子阶段,包括预检测和重检测。在预检测子阶段,节点独立进行检测。注意,节点不会检测所有事件,仅检测由该节点的事件轨迹所指示的事件。当某个节点认为可能发生事件时,它会发送一个信号以唤醒相关节点参与事件检测,然后进入事件重检测。在重检测子阶段,所有与该事件相关的节点都应参与检测,并协作完成对该事件的最终识别。
在预检测阶段,节点根据其事件轨迹来检测事件。对于单个节点而言,需要同时依据多个事件的轨迹来进行事件判定。存在节点在同一数据集上检测到多个事件的可能性。在这种情况下,节点不会区分这些情况,而是广播警报以触发其他节点共同进行事件检测。
通过由节点事件轨迹映射的多个节点协作,实现对某些事件的重检测。例如,当节点A触发事件e的重检测操作时,根据事件e的事件轨迹,我们可以知道哪些节点与事件e的检测相关,然后这些节点参与该事件的检测。这些参与节点完成检测后广播检测结果。一种可能是多个节点同时触发同一事件的重检测。如果这些重检测信号几乎在同一时间发出,则所有参与重检测的节点都将这些信号视为对同一事件的响应。在这种情况下,节点不会区分这些情况。
挑战在于网络中存在多种类型的传感器节点,这些异构节点的检测结果需要有效结合。我们采用主观逻辑来实现这些节点检测结果的合成。首先,根据事件轨迹的支持度,将节点检测结果转换为主观逻辑意见;然后,利用主观逻辑融合算子对意见进行融合。通过这种方式,可以避免异构节点对检测结果的影响。
重检测的详细过程如下。
(1) 每个节点首先进行预检测,并根据多个节点的事件痕迹发现疑似事件的发生。
(2) 每个节点根据消息检查其是否参与该事件的重检测。
(3) 每个节点在每轮收集数据后参与重检测,根据规则进行决策,并广播与相关异常事件的决策结果消息。例如:{事件 i, (节点类型 1, 支持度 1), 节点类型 1, 节点类型 2,… (节点类型 m, 支持度 n)}。
(4) 节点将支持度转换为主观逻辑观点。转换方法如下:假设支持度为b,则主观逻辑置信度为(b, 0, 1−b);
(5) 节点首先融合同一事件中相同类型节点的意见。融合方法如下:假设针对该事件的同类节点的意见为(b₁, 0, u₁), (b₂, 0, u₂)…(bₓ, 0, uₓ)。通过重复融合这些意见,直到只剩一个意见,得到最终意见。合并两个意见的规则如下:设 ωₐ 和 ωᵦ 分别为意见 (bₐ, 0, uₐ) 和 (bᵦ, 0, uᵦ),融合后的意见记为 (bₐ◇ᵦ, 0, uₐ◇ᵦ)。
$$
\begin{cases}
b_{A \diamond B} = \frac{b_A + b_B}{2} \
u_{A \diamond B} = \frac{u_A + u_B}{2}
\end{cases}
$$
(6) 节点收集某些事件上同类型节点的意见,并融合不同类型节点的意见。融合两个意见的规则如下:设 ωₐ 和 ωᵦ 分别为意见 (bₐ, 0, uₐ) 和 (bᵦ, 0, uᵦ),融合后的意见记为 (bₐ◇ᵦ, 0, uₐ◇ᵦ)。
$$
\begin{cases}
b_{A \diamond B} = \frac{u_B b_A + u_A b_B + u_A u_B}{u_A + u_B - u_A u_B} \
u_{A \diamond B} = \frac{2u_A u_B}{u_A + u_B - u_A u_B}
\end{cases}
$$
(7) 节点获得的消息为 (bₐ◇ᵦ, 0, uₐ◇ᵦ)。在此情况下,计算某一事件为异常的概率。
(8) 如果大于管理员默认阈值,则判定为异常事件发生。
3. 讨论
我们的异常事件检测方法概括为单节点发现和多节点协同验证。单节点发现是指单个节点基于自身的感知数据发现疑似事件。然而,事件的最终确认需要来自其他节点的更多感知数据。现有方法最直接的解决方案是寻求邻近节点的协作。在我们看来,这并非理想方案,因为它忽略了事件与节点之间的潜在关联,并非所有邻近节点都与目标事件相关。因此,我们采用Apriori算法来挖掘事件与节点之间的关系。通过这种方式,我们可以根据这些节点感知数据的变化推断事件的发生。
当多个节点参与异常事件检测时,如何融合这些节点的意见成为一个必须解决的新问题。现有方法通常采用多数投票,即节点认为事件发生时投正票,认为未发生时投负票,通过统计正票和负票的数量来判断事件是否发生。然而,这种方法忽略了意见的不确定性,节点很难完全确定地判断事件是否发生。我们提出使用主观逻辑来合理融合多个异构节点的意见,从而避免上述问题。此外,根据Apriori算法的结论,我们利用意见支持度实现向主观逻辑意见的转换,从而避免了节点判断结论与主观逻辑意见之间映射可能带来的错误,并确保了综合结论的合理性。
4. 相关工作
传感器网络异常事件检测可分为两类:单节点检测[3‐5]和多节点检测[6‐9]。单节点检测方法是指节点基于自身完成异常事件检测。由于簇头节点承担了收集簇内节点感知数据的任务,并能够获取多个节点的感知数据,因此通常由簇头节点完成异常事件的检测。单节点检测方法的主要问题是单个节点无法保证自身的安全性。由于传感器节点的成本限制和部署方式,攻击者通常可以直接控制少量节点。这样,一旦实现异常事件检测的节点出现安全问题,整个传感器网络的安全性将受到影响。
多节点检测方法能在一定程度上避免上述问题。由于多个节点参与异常事件检测,攻击者只有控制足够数量的节点才能破坏异常事件检测机制。然而,现有方法通常依赖邻近节点来实现检测。但邻近节点并不一定与待检测的异常事件相关。一些检测方法会预先分析节点与其邻近节点之间的关联性,以确保仅有相关邻近节点参与异常事件检测。在我们看来,需要进一步打破邻近节点的束缚。某些异常事件可能与部分邻近节点无关,却可能与其他非邻近节点相关。因此,我们采用Apriori算法挖掘整个网络中节点与事件之间的关系,从而解决这一问题。
另一项与本文相关的工作是主观逻辑理论和信任评估。主观逻辑 [10, 11] 由约桑提出,用于评估主体与客体之间的信任关系。我们之前的研究 [12] 将主观逻辑理论应用于同构传感器网络中的异常检测,能够量化节点数据的信任度,从而提高异常事件的检测率。针对传感器云系统提出了一种综合的可信数据收集方法 [13],定义了直接信任、间接信任和功能信任,以评估传感器和移动接收器的可靠性。然而,上述研究并未讨论如何在异构网络中检测异常事件,这也是本文要解决的内容之一。
5. 结论
本文提出了一种针对传感器网络的新型异常检测方法。该方法基于Apriori算法挖掘节点与异常事件之间的关联关系,从而根据节点感知数据的变化推断异常事件的发生。该方法突破了传统单节点异常检测和多节点异常检测的局限性,挖掘了传感器网络中异常事件的映射关系。为了提高异常检测的准确性,传感器网络需要部署异构节点。为了统计异构节点对异常事件的判断结论,我们采用主观逻辑来描述各个节点对异常事件的判断意见。进一步地,我们利用主观逻辑中的期望算子完成异构节点意见的融合,从而形成最终的综合结论。
1163

被折叠的 条评论
为什么被折叠?



