system: [SYSTEM]

user: 5. 实验 5.1. 实验环境和数据源 本实验采用NSL-KDD入侵检测数据集，NSL-KDD数据集是在KDD CUP99数据集的基础上再次优化得到的。和KDD CUP99相比，主要有以下几点改进： 1) 训练集中不存在冗余记录； 2) 数据集中每个复杂等级的记录数量和原数据集中记录所占的百分比成反比； 3) 训练集和测试集的数量设置更加合理； 在NSL-KDD数据集中，每行代表一条记录，每条记录包含了从一条连接中提取的41个特征和攻击类型，如下所示为一条记录，记录的每个特征之间用逗号隔开。 0，tcp，private，S0，0，0，0，0，0，0，0，0，0，0，0，0，0，0，0，0，0，0，123，6，1.00，1.00，0.00，0.00，0.05， 0.07，0.00，255，26，0.10，0.05，0.00，0.00，1.00，1.00，0.00，0.00，neptune，19 其中“neptune”表示攻击类型，neptune攻击是一种拒绝服务攻击，发生该攻击时目标主机会收到大量的SYN报文，进而影响目标主机的正常运行。最后一列的19表示复杂等级，一般在检测过程中不使用。41个特征按照内容可以分为4大类，分别是： 1) TCP连接基本特征(共9种) duration、protocol_type、service、flag、src_bytes、dst_bytes、land、wrong_fragment、urgentl； 2) TCP连接的内容特征(共13种) hot、num_failed_logins、logged_in、num_compromised、root_shell、su_attempted、num_root、num_file_creations、num_shells、num_access_files、num_outbound_cmds、is_hot_login、is_guest_login； 3) 基于时间的网络流量特征统计(共9种) count、srv_count、serror_rate、srv_serror_rate、rerror_rate、srv_rerror_rate、same_srv_rate、diff_srv_rate、srv_diff_host_rate； 4) 基于主机的网络流量特征统计(共10种) dst_host_count、dst_host_srv_count、dst_host_same_srv_rate、dst_host_diff_srv_rate、dst_host_same_src_port_rate、dst_host_srv_diff_host_rate、dst_host_serror_rate、dst_host_srv_serror_rate、dst_host_rerror_rate、dst_host_srv_rerror_rate； 本文实验的硬件环境：windows 7操作系统，Intel i3 2.1 GHz双核CPU，10 GB内存。软件环境：Java jdk8.0。 5.2. 数据预处理 1) 数值化：数据集中存在协议类型和服务类型等字符型特征，需要先转化为数值，采用的方法为整数映射。 2) 归一化：由于不同的特征值，采用的度量单位不同，数值差异较大，为了消除这种数值差异巨大带来的不利因素，需要进行归一化处理，采用的方法为改进后的[0， 1]归一化，如上4.3所述。 5.3. 实验流程 实验主要分为两步：一是使用训练数据对深度置信网络训练的过程，主要是对网络中的各个参数进行更新，二是利用步骤一得到的训练好的网络，对测试数据进行预测，并把预测值和测试数据期望的真实值进行对比，统计出预测结果。实验流程图如图4所示。 5.4. 实验结果分析 本文实验采用国际上通用的入侵检测评价指标：包括检测准确率(简称准确率)，误报率和漏报率 [ 21 ] ，对实验进行有效性评价。定义TN为数据集中被正确识别出的正常数据数量，TP为数据集中被正确识别出的入侵数据数量，FN为数据集中入侵被识别为正常数据的数量，FP为数据集中正常数据被识别为入侵的数量，则有： 检测准确率(Dectection Precision Rate) = (TN + TP)/(TN + TP + FN + FP) × 100%； 误报率(False Positive Rate) = FP/(TN + FP) × 100%； 漏报率(Flase Negative Rate) = FN/(TP + FN) × 100%； 为了寻找深度置信网络在入侵检测数据集上的最佳效果，分别作了以下实验： 1) 为了寻找无监督学习迭代次数对检测结果的影响，采用3隐含层结构，即RBM栈的结构数目分别为{41， 32， 23， 14， 5}，无监督学习迭代次数N分别取(5， 10， 30， 50， 70， 90)，有监督学习的迭代次数固定为30次，对比检测后的准确率如表3和图5所示。由此可以看出：随着无监督迭代次数的增加，准确率呈现出先上升后下降的趋势，当无监督学习迭代次数较少时特征提取不明显，随着迭代次数的增加特征 图4. 入侵检测实验流程 提取效果提高，准确率上升，当迭代次数超过一定的值时，准确率反而下降，可能原因是特征提取过度而导致了丢失了某些特征信息。 2) 为了寻找有监督学习迭代次数对检测结果的影响，仍然采用3隐含层结构，RBM栈的结构依然为{41， 32， 23， 14， 5}，无监督学习迭代的次数N固定为50，有监督学习迭代次数n取值分别为(5， 10，30， 50， 70， 90)，统计检测准确率如表4和图6所示。由此可以看出，随着有监督学习迭代次数的增加，准确率呈上升趋势，且在迭代次数较低时，上升速度较快，随着迭代次数的增多，上升逐渐趋于平缓。 3) 由1)和2)两个实验的结果，可以看出在无监督学习迭代次数和有监督学习迭代次数分别为50、50时，深度置信网络模型能取得很好的效果，为了寻找DBN的最佳结构，将无监督和有监督迭代次数固定为(50， 50)，同时将DBN的结构分别置为{41， 32， 23， 14， 5}和{41， 70， 100， 80， 60， 40， 20， 5}进行实验，统计准确率如表5所示。 为了验证本文提出算法在入侵检测上的效果，将深度置信网络的网络结构定为{41， 32， 23， 14， 5}，无监督和有监督学习均定为50次，与常见的入侵检测方法KNN，SVM，BP神经网络算法 [ 22 ] - [ 27 ] 进行了对比实验。实验结果如表6和图7所示。 由以上结果可以看出，基于深度置信网络(DBN)的入侵检测方法在准确率、误报和漏报方面都明显 Table 3 Unsupervised iteration number and accurac 迭代数N 准确率 迭代数N 准确率 5 97.71% 50 97.94% 10 97.84% 70 97.83% 30 97.88% 90 97.81% 表3. 无监督迭代次数与准确率 图5. 入侵检测实验流程 Table 4 Supervised iteration number and accurac 迭代数n 准确率 迭代数n 准确率 5 95.62% 50 98.19% 10 97.50% 70 98.39% 30 97.94% 90 98.44% 表4. 有监督迭代次数与准确率 Table 5 Network structure and accurac 网络结构 准确率 {41， 32， 23， 14， 5} 98.19% {41， 36， 31， 26， 21， 16， 11， 5} 90.68% 表5. 网络结构和准确率 图6. 入侵检测实验流程 优于KNN和BP网络，在误报率上和SVM相差不大，但准确率和漏报率也优于SVM方法。 为了验证本文提出的参数训练方法的有效性，将本文的方法同未改进的深度置信网络方法进行了对比实验，将两种深度置信网络的网络结构均设置为{41， 32， 23， 14， 5}，无监督学习和有监督学习次数均设置为(10， 10)，(20， 20)，(30， 30)，(40， 40)，(50， 50)时，对比两种方法的准确率。实验结果如表7和图8所示。 由以上结果可以看出，本文的参数训练方法在无监督和有监督学习迭代次数较低时就可以到达较好的准确率，比未改进的DBN参数训练方法有较大的优势。 Table 6 Comparison of the results of several detection algorithm 模型 准确率 误报率 漏报率 KNN 76.74% 0.021 0.218 SVM 96.30% 0.004 0.071 BP 85.93% 0.015 0.202 DBN 98.19% 0.004 0.033 表6. 几种检测算法的结果对比 Table 7 Result contrast between DBN in this article and the unimproved DB 迭代次数(N，n) 本文方法准确率 未改进DBN方法准确率 (10， 10) 97.01% 91.76% (20， 20) 97.43% 93.25% (30， 30) 97.70% 93.96% (40， 40) 97.85% 94.23% (50， 50) 98.19% 94.77% 表7. 本文DBN和未改进DBN的结果对比 图7. 几种检测算法的结果对比 图8. 入侵检测实验流程