基于区块链动态规划的序列情节关联规则挖掘方法与流程

文档序号:15462455发布日期:2018-09-18 18:29阅读:446来源:国知局

本发明涉及一种基于区块链动态规划的序列情节关联规则挖掘方法。



背景技术:

二十世纪末,“信息革命”引发了全球范围的深刻变革。随着电脑和互联网的广泛应用,使得网络安全问题逐渐开始显现的重要起来。当计算机通过Internet联接到一起时,信息安全的内涵也就发生了根本的变化。它不仅从一般性的防卫变成了一种普便的防范,而且还从一种专门的领域扩展到无处不在。为了从总体上认知网络安全的动态变化,同时也为了适应对网络安全研究更高的实际需求,网络安全态势研究逐渐成为了网络安全领域的研究热点之一。

网络安全感知主要是通过分析近期网络攻击数据,利用多种预测方法对系统未来可能发生的攻击概率进行预测。而对网络安全的感知和评估非常重要的一个手段就是对告警序列进行序列事件发现的分析方法。序列事件关联分析是对事件之间的发生顺序进行关联分析,找出具有相同模式且频繁发生的事件序列,进行序列关联挖掘分析能进一步的发现网络安全事件的发生模式,因此有助于发现潜在的攻击模式。对于一个攻击行为来说,其可能对应着的是一系列的相关的安全事件序列,这些事件在时间上有可能是连续的,也有可能隐藏在其它事件流里面,序列关联规则挖掘的目的就是找出这些具有离散性和满足一定频率特征的事件序列。



技术实现要素:

本发明的目的在于提供一种基于区块链动态规划的序列情节关联规则挖掘方法,可以有效的发现新出现的频繁序列模式,这些模式即为可能的异常可疑模式。

实现本发明目的的技术解决方案为:一种基于区块链动态规划的序列情节关联规则挖掘方法,包括以下几个步骤:

步骤1,初始化,定义序列S,最小支持数minSupport,窗口大小window_size和规则长度ruleLen;

步骤2,扫描一遍原始序列S,用哈希表保存各个序列元素的出现在序列中的位置索引,key为该元素符号,值为按序列出现顺序的key的索引列表;

步骤3,遍历哈希表,过滤索引数量(支持数)低于minSupport的表项;

步骤4,遍历哈希表中剩余的项;

步骤5,将每项I中的索引进行两两组合,记其分别记为Ia,Ib,根据Ia,Ib索引在原始序列S中从该位置开始,截取长度为window_size大小的子序列,记为Sa,Sb,利用动态规划求出Sa,Sb的所有的公共序列,记为集合Scommon,遍历集合Scommon中的每一个元素s,如果s的长度大于等于ruleLen,则将s和Ia,Ib参数带入,调用trie树的插入方法;

步骤6,遍历trie树,结点计数值count大于minSupport的结点其为所有相关结点,输出从根结点到该结点的序列,该序列即为频繁出现的序列。

进一步地,步骤5所述调用trie树的插入方法,具体如下:

步骤1,初始化一个root根节点,序列串Scommon,匹配位置索引Ia和Ib;

步骤2,记迭代指针iter指向根结点root,进行以下操作;

步骤3,依次取出Scommon中的每个元素s,如果iter的子结点为空,转到步骤4,否则转到步骤5;

步骤4,新产生一个结点node,并将其对应的count值设置为2,将结点名字设置为Scommon的当前元素s,将Ia,Ib加入索引集合。将node设置为iter的子结点,将iter指针指向新产生的子结点node,转到步骤3;

步骤5,从iter指向的结点根据s索引子结点node,如果该子结点为空,转到步骤4,否则转到步骤6;

步骤6,如果node结点的索引集合不同时包含Ia,Ib,则将node的count值自增1;

步骤7,将Ia,Ib加入node结点的索引集合。将iter指向node节点,转到步骤3。

本发明与现有技术相比,其显著优点为:(1)结合了网络安全事件的具体背景,只需要求解出频繁出现的长序列事件,不需要进行序列增长的过程,直接就能得到完全的较长序列情节;(2)得到的序列情节规则比传统方法数量更少,但保证挖掘出的规则的完备性,对安全威胁事件的分析将更加简洁,更容易对威胁的本质事件进行分析。

附图说明

图1为本发明基于区块链动态规划的序列情节关联规则挖掘方法的流程示意图。

图2为本发明基于区块链动态规划的序列情节关联规则挖掘方法的动态规划求最长公共子序列滑动窗口示例图。

图3为本发明基于区块链动态规划的序列情节关联规则挖掘方法的trie树示例图。

具体实施方式

本发明基于区块链动态规划的序列情节关联规则挖掘方法,包括以下几个步骤:

步骤1,初始化,定义序列S,最小支持数minSupport,窗口大小window_size和规则长度ruleLen;

步骤2,扫描一遍原始序列S,用哈希表保存各个序列元素的出现在序列中的位置索引,key为该元素符号,值为按序列出现顺序的key的索引列表;

步骤3,遍历哈希表,过滤索引数量(支持数)低于minSupport的表项;

步骤4,遍历哈希表中剩余的项;

步骤5,将每项I中的索引进行两两组合,记其分别记为Ia,Ib,根据Ia,Ib索引在原始序列S中从该位置开始,截取长度为window_size大小的子序列,记为Sa,Sb,利用动态规划求出Sa,Sb的所有的公共序列,记为集合Scommon,遍历集合Scommon中的每一个元素s,如果s的长度大于等于ruleLen,则将s和Ia,Ib参数带入,调用trie树的插入方法;

步骤6,遍历trie树,结点计数值count大于minSupport的结点其为所有相关结点,输出从根结点到该结点的序列,该序列即为频繁出现的序列。

进一步地,步骤5所述调用trie树的插入方法,具体如下:

步骤1,初始化一个root根节点,序列串Scommon,匹配位置索引Ia和Ib;

步骤2,记迭代指针iter指向根结点root,进行以下操作;

步骤3,依次取出Scommon中的每个元素s,如果iter的子结点为空,转到步骤4,否则转到步骤5;

步骤4,新产生一个结点node,并将其对应的count值设置为2,将结点名字设置为Scommon的当前元素s,将Ia,Ib加入索引集合。将node设置为iter的子结点,将iter指针指向新产生的子结点node,转到步骤3;

步骤5,从iter指向的结点根据s索引子结点node,如果该子结点为空,转到步骤4,否则转到步骤6;

步骤6,如果node结点的索引集合不同时包含Ia,Ib,则将node的count值自增1;

步骤7,将Ia,Ib加入node结点的索引集合。将iter指向node节点,转到步骤3。

下面结合附图和具体实施例对本发明的技术方案做进一步的详细说明:

实施例1

本发明基于区块链动态规划的序列情节关联规则挖掘方法,该方法可分为两大步,第一步为求得所有相关的子序列模式;第二步为给这些序列模式计数,过滤出满足支持数的模式。针对第一步,可以采用动态规划的思想求得两个序列的公共子序列,可以使用两个滑动窗口来处理,求出两个滑动窗口的公共子序列模式;针对第二步,使用Trie树(前缀树)来进行保存模式和计数。

本发明基于区块链动态规划的序列情节关联规则挖掘方法,包括以下几个步骤:

步骤1,初始化,定义序列S,最小支持数minSupport,窗口大小window_size和规则长度ruleLen;

步骤2,扫描一遍原始序列S,用哈希表保存各个序列元素的出现在序列中的位置索引,key为该元素符号,值为按序列出现顺序的key的索引列表;

步骤3,遍历哈希表,过滤索引数量(支持数)低于minSupport的表项;

步骤4,遍历哈希表中剩余的项;

步骤5,将每项I中的索引进行两两组合,记其分别记为Ia,Ib,根据Ia,Ib索引在原始序列S中从该位置开始,截取长度为window_size大小的子序列,记为Sa,Sb,利用动态规划求出Sa,Sb的所有的公共序列,记为集合Scommon,遍历集合Scommon中的每一个元素s,如果s的长度大于等于ruleLen,则将s和Ia,Ib参数带入,调用trie树的插入方法;

步骤6,遍历trie树,结点计数值count大于minSupport的结点其为所有相关结点,输出从根结点到该结点的序列,该序列即为频繁出现的序列。

如图1所示,给出了基于区块链动态规划的序列情节关联规则挖掘方法的动态规划求最长公共子序列滑动窗口示例,其具体如下:

定义滑动窗口window_size大小设置为4,规则ruleLen长度为3,支持数minSupport为3。先扫描一遍原始序列,并记录下单个项的位置索引,然后过滤掉索引数量少于minSupport的项,图1中过滤掉的项是A,因为A只有两个位置索引,表示A在序列中只出现了两次,小于给定的minSupport=3。接下来对第一个项B进行处理,利用B项索引定位所有的B,然后在序列的长度范围内,找出这些以B开始,长度为window_size的子序列,然后对所有这些子序列求最长公共子序列,如图1,第一个窗口和第二个窗口分别以1,6开始,取后面连续4个项的长度,组成两个子序列,求得的结果记为BCDE(1,6),表示两个子序列的最长公共子序列为BCDE,两个子序列分别在原始序列中的位置是1和6,所有求得的B开始的公共子序列如图1。

如图2所示,给出了基于区块链动态规划的序列情节关联规则挖掘方法的trie树示例,其具体如下:

步骤1,初始化一个root根节点,序列串Scommon,匹配位置索引Ia和Ib;

步骤2,记迭代指针iter指向根结点root,进行以下操作;

步骤3,依次取出Scommon中的每个元素s,如果iter的子结点为空,转到步骤4,否则转到步骤5;

步骤4,新产生一个结点node,并将其对应的count值设置为2,将结点名字设置为Scommon的当前元素s,将Ia,Ib加入索引集合。将node设置为iter的子结点,将iter指针指向新产生的子结点node,转到步骤3;

步骤5,从iter指向的结点根据s索引子结点node,如果该子结点为空,转到步骤4,否则转到步骤6;

步骤6,如果node结点的索引集合不同时包含Ia,Ib,则将node的count值自增1;

步骤7,将Ia,Ib加入node结点的索引集合。将iter指向node节点,转到步骤3。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1