学习目标
一种基于Spark深度随机森林的网络入侵检测模型
学习内容
(1)提出了一种随机森林的深度级联结构,将每一层并行化以提高准确性和可扩展性,以适应检测任务中的海量数据。可以对各种类型的攻击进行分类。
(2)引入滑动窗口将高维特征分割成小尺寸特征向量进行训练,可以减少每次计算的计算量,保持原始信息的完整性。
(3)与Spark中经典的并行随机森林相比,该方法通过效率排序和分区完整性检查优化了对内存中加载的RDD的替换,可以提高集群任务的执行效率。
目前存在的不足
模型通常具有良好的性能,但它有太多复杂的超参数需要调整。在大多数情况下,似乎很难以较低的复杂性获得良好的性能。
为了解决这个问题
提出的模型在随机森林中引入了滑动窗口和深度结构,以增强决策树的多样性,从而提高集成学习的泛化能力和网络入侵检测的准确性,同时参数也少得多。同时,我们的方法优化了Spark集群上RDD的数据缓存替换,减少了检测任务的执行时间。
第一阶段使用滑动窗口将原始特征分割成许多小块,然后训练随机森林生成连接的类向量作为表示。
该向量将用于在第二阶段训练多级级联并行随机森林。
最后通过最后一层级联后的投票策略确定原始数据的分类。同时,将该模型部署在Spark环境中,通过效率排序和分区完整性检查,优化RDD的缓存替换策略。
特征分片
模型的第一阶段通过使用滑动窗口将特征分割成许多相同大小的特征向量。每个特征向量的数据维数小于原始特征,减少了随机森林中每次计算的计算量。假设一个长度为n的线性特征向量,一个特征切片的窗口长度为m,每滑动1个单位长度,就会产生n - m + 1m维的特征向量。假设有一个检测任务,包含c个类别,经过特征处理,得到一个长度为线性的特征向量n将生成一个长度为c ( n − m + 1) 的新特征向量。例如,有一个包含40个特征的入侵样本数据,攻击分为DOS(拒绝服务)、R2L(远程到本地)、U2R(用户到root)、PROBE(监视和探测)四种类型的攻击. 并且切片窗口大小设置为 10。那么,总共将有 31 个特征向量,每个特征向量都是 10 维的。
原始特征将被这部分降维的滑动窗口分割成许多相同大小的特征向量。
之后,将每个特征向量依次放入单层随机森林,然后生成类概率向量。
左边的矩形代表输入特征向量的一个实例,黄色叶子是每个独立决策树的概率分布。
特征向量的熵将由节点分裂前的基尼指数计算。基尼指数是用于计算以下等式中定义的熵的模型。
Gini(t)=1−k=1∑K[p(Ck∣t)]2
其中t是目标分裂节点,表示节点t属于类C_t的概率。p(C_k|t)
类概率来源于最终落在叶子节点上的一组值,然后对森林中所有决策树的预测进行平均,得到输出类向量。之前的 31 个特征向量将转换为 31 个类向量,每个类向量都是 4 维的。最后,如图2所示,所有类向量将连接起来形成一个重新表示的特征向量,作为与原始数据特征对应的增强表示。并且新特征将作为输入在下一阶段训练级联随机森林。
深度并行随机森林Deep Parallel Random Forest(DPRF)
DPRF 的架构,即层数,是根据计算出的性能增益自动确定的,如果改进低于阈值,则终止训练过程。
并行随机森林(PRF)通过级联堆叠形成深层森林结构。级联结构中的每个新层将表示的特征向量和前一层的类向量连接起来作为输入。级联PRF的每一层都会统计所有决策树对输入样本的预测结果,生成不同类分布的概率,作为类向量。随后,类概率向量将与特征分割形成的变换特征连接起来训练下一层。
投票策略
对于实际的异常值检测任务,可以简化为异常分类任务,通过投票策略识别异常值。级联PRF中最后一层的预测是统计最后一层所有决策树的输出类,然后根据概率分布采用投票策略进行决策的最终结果。多数投票用于可靠性要求高的异常检测任务。如果一个样本获得超过一半的选票,则将其预测为异常值,否则将其拒绝。
其中hi代表决策树i,T代表森林中决策树的数量。N是概率向量的维数。c j是集合 { c 1 , c 2 , c 3 …c N } 中的类标签之一。基本学习器h i将做出属于类别标签集合 { c 1 , c 2 , c 3 …c N } 的预测,以及h i在样本x上的概率分布是一个N维向量,其中是h i在类标签c j上的概率输出。
Spark 上的并行化
高复用缓存
首先,Spark 的缓存机制为每个 worker 分配一个缓存管理器来管理 RDD 并计算缓存大小。RDD 数据大小需要不大于剩余内存的存储空间。否则,将实施更换。
RDD 分区之间的计算成本是另一个非常重要的因素
计算每个RDD的权重
RDD的执行时间可以用RDD大小占Spark集群环境内存大小的百分比来表示。
RDD的执行效率可以量化为RDD的权重值与执行时间的比值,用ε ( R i )来表示每个RDD的执行效率,定义如下:
ϵ(Ri)=T(Ri)W(Ri)
分层替换
分层替换是并行优化的第二步。它在替换之前对 RDD 目标进行分类,优先考虑不完整的 RDD。如图5所示,我们设计了 IntegrityCheck 函数来验证 RDD,该函数将检查分区并在标志记录分区状态的集合中标记完整性。如果 RDD 的分区不完整,将被标记为 FALSE 并被替换;否则,它将被标记为 TRUE。然后根据 Map cacheList (rdd i , ε )替换效率较低的 RDD
模型评估
将 FS-DPRF 与并行随机森林 (PRF)、DSSVM 和 A-DNN 进行比较。
FS-DPRF在不同节点规模下的平均执行时间。
当节点数从 1 增加到 25 时,每个数据集的加速比都呈规律性增长,并且随着节点数从 25 增加到 50 时趋于减慢。结果表明该模型具有良好的加速性能在不同体积和维度的数据集中。但是,它并没有像上面的定义那样呈现完美的线性增长,可以理解为随着集群规模的增加,通信开销和任务调度成本会变大
局限性
该研究的局限性在于模型会消耗大量内存,因此要获得训练有素的入侵检测模型需要强大的计算设备。虽然本文提出的模型在 Spark 分布式环境下通过 CPU 训练取得了不错的效果,但遗憾的是,目前的结构自然不适用于 GPU。这使得模型暂时无法像深度神经网络一样在 GPU 上得到更好的加速。
参考论文
Zhenpeng Liu, Nan Su, Yiwen Qin, Jiahuan Lu, Xiaofei Li, “A Deep Random Forest Model on Spark for Network Intrusion Detection”, Mobile Information systems, vol. 2020, Article ID 6633252, 16 pages, 2020. https://doi.org/10.1155/2020/6633252
S. V. Siva reddy and S. Saravanan, “Performance Evaluation of Classification Algorithms in the Design of Apache Spark based Intrusion Detection System,” 2020 5th International Conference on Communication and Electronics Systems (ICCES), 2020, pp. 443-447, doi: 10.1109/ICCES48766.2020.9138066.
M. Haggag, M. M. Tantawy and M. M. S. El-Soudani, “Implementing a Deep Learning Model for Intrusion Detection on Apache Spark Platform,” in IEEE Access, vol. 8, pp. 163660-163672, 2020, doi: 10.1109/ACCESS.2020.3019931.
–end–