system: [SYSTEM]

user: 4. 实验及结果分析 4.1. 实验环境及数据集介绍 实验使用的是Windows10操作系统、CPU 2.9 GHz、内存16.0 GB的PC机。编程语言使用Python，版本为3.7.4。基于tensorflow、sklearn等开源库实现。数据集选用NSL-KDD数据集。此数据集在KDD-CUP1999数据集的基础上去除了大量冗余和重复的数据，并且包含了一些KDD-CUP1999中所没有的新的攻击类型。NSL-KDD数据集训练集和测试集样本数量适中，因此可以避免由于样本数过大、采样方法各不相同所造成的各类检测方法无法进行比较的问题。NSL-KDD每条样本包含了41个特征属性标签，分别由38个数值型特征和3个非数值型特征组成。 数据集中主要包含5种类别的数据包括正常数据和另外四种攻击数据。四种攻击分别为：端口监视或扫描(Probe)、拒绝服务攻击(denial of service， DoS)、未授权的本地超级用户特权访问(user to root， U2R)、来自远程主的未授权访问(remote to local， R2L)。四类攻击类型又可详细划分为39类具体攻击。数据集详细情况如表1所示。 我们使用KDDTrain+_20Percent.txt (包含了全部训练数据的20%)作为训练集，KDDTest+.txt作为测试集。训练集数据集本身极度不平衡，部分攻击类的样本远远少于正常数据。其中正常数据13，449条，Probe类2486条，DoS类9044条，U2R类24条，R2L类189条。本文攻击样本生成过程中，总计生成了42，053条数据。其中正常样本0条，Probe类10，963条，DoS类4405条，U2R类13，425，R2L类13，260条。使得所有类别样本数目相同。数据集详细情况如表1所示： Table 1 Sample category statistic 类别 攻击子类型 KDDTrain+_20Percent KDDTest+ Normal normal 13，449 9711 Probe ipsweep 710 141 nmap 301 73 portsweep 587 157 saint 0 319 satan 691 735 Dos apache2 0 737 back 196 359 land 1 7 mailbomb 0 293 neptune 8282 4657 pod 38 41 processtable 0 685 smurf 529 665 teardrop 188 12 udpstorm 0 2 U2R buffer_overflow 6 20 httptunnel 0 133 loadmodule 1 2 perl 0 2 ps 0 15 rootkit 4 13 sqlatack 0 2 xterm 0 13 R2L ftp_write 1 3 guess_passwd 10 1231 imap 5 1 multihop 2 18 named 0 17 phf 2 2 sendmail 0 14 snmpgetattack 0 178 snmpguess 0 331 spy 1 0 warezclient 181 0 warezmaster 7 944 worm 0 2 xlock 0 9 xsnoop 0 4 数据集样本总数 25，192 22，544 表1. 样本类别统计 4.2. 评价标准 我们使用混淆矩阵常见的5种常见的度量指标，分别为：准确率(accuracy)、精准率(precision)、召回率(recall)、FPR (false positive rate)以及F1-score。二分类混淆矩阵如表2所示，将样本分为true positive (TP)，true negative (TN)，false positive (FP)，and false negative (FN)。TP表示正类样本被正确分类、TN表示负类样本被正确分类、FP表示正类样本被错误的分为负类、FN表示负类样本被错误的分为正类。 Table 2 Confusion matri 预测正类 Recall 实际正类 TP FN 实际负类 FP TN 表2. 混淆矩阵 在这些度量之中，召回率是覆盖面的度量，度量有多个正例被分为正例。FPR表示预测为正例但真实情况为反例的，占所有真实情况中反例的比率。F1-score是精确率和召回率的调和平均数。精准率与召回率是衡量分类性能最基本的两个评价标准，F1-score则兼顾了两者。对于非平衡数据集来说F1-score用来评估模型效果好坏是更加准确的。这些指标定义如下： Accuracy = TP + TN TP + TN + FP + FN (7) Precision = TP TP + FP (8) Recall = TP TP + FN (9) FPR = FP FP + TN (10) F1-score = 2 TP 2 TP + FP + FN (11) 4.3. 实验结果与分析 本文实验主要分为三个部分。第一部分比较了进行过采样和不进行过采样的性能，第二部分比较不同过采样方法的性能，第三部分进行本文入侵检测方法与其他相关方法的对比实验。 由表3可知，本文所使用的方法相较于传统的机器学习方法，在各项指标上均获得了更好的结果。在同样使用DBN分类的情况下，在经过IDCVAE进行过采样后，准确率和提升了接近10%，同时保证了FPR的下降。表4中，SVM和GBDT虽然能在Normal等大类上取得较好的分类效果，然而其在R2L这种少数类上标签上的表现却差强人意，尤其是在U2R上两个方法的准确率都为0。直接采用DBN进行分类后，对少数类检测准确率提升也非常有限。仅仅只有不到3%。而应用了IDCVAE进行数据增强后，少数类的检测准确率相较于DBN得到了不小的提升。其中R2L提升了24.17%，U2R提升了12.4%。由此可见使用IDCVAE进行过采样后，对总体以及少数类检测率的提升是非常有效的。 Table 3 Classification results of oversampling methods and normal methods (% 分类方法 Accuracy Recall Precision F1-Score FPR SVM 70.33 54.75 88.52 67.66 7.46 GBDT 69.01 46.32 91.38 61.48 6.22 DBN 73.82 59.19 95.89 73.20 3.14 IDCVAE-DBN 82.36 75.34 97.21 84.89 2.81 表3. 采用过采样和不采用过采样方法分类效果(%) Table 4 Subclass detection rate of oversampling methods and normal methods (% 分类方法 Normal Probe DoS R2L U2R SVM 92.34 75.45 43.77 6.87 0.00 GBDT 89.32 72.10 47.36 8.25 0.00 DBN 90.81 72.42 56.78 11.46 2.10 IDCVAE-DBN 96.82 86.36 72.53 35.63 14.50 表4. 采用过采样和不采用过采样方法子类检测率对比(%) 如表5和表6所示，在同样使用DBN作为分类器时，通过三种过采样方法使得识别的整体准确率都得到了一定程度的提升。充分证明了过采样方法对少数类检测率提升的有效性。其中IDCVAE相较于其他两种机器学习过采样方法对于各项指标的提升是最为显著的。其中相比于SMOTE，R2L的检测准确率提高了26.3%。相比于ADASYN，U2R的检测准确率提高了6.43%。 我们也与其他表现较好的方法进行了比较。结果如表7所示。实验结果表明在准确率、召回率以及FPR上IDCVAE-DBN均优于其他方法。由此可见，IDCVAE-DBN在不平衡数据的入侵检测问题中，整体效果符合预期，有着更好的检测性能。 Table 5 Classification results of different oversampling methods (% 分类方法 Accuracy Recall Precision F1-Score FPR SMOTE-DBN 80.15 65.13 94.50 77.11 3.55 ADASYN-DBN 80.33 64.27 95.12 76.71 3.79 IDCVAE-DBN 82.36 75.34 97.21 84.89 2.81 表5. 不同过采样方法分类效果(%) Table 6 Results compared with other methods (% 分类方法 Normal Probe DoS R2L U2R SMOTE-DBN 92.63 66.99 58.15 9.33 8.00 ADASYN-DBN 91.42 59.21 56.23 8.77 8.07 IDCVAE-DBN 96.82 86.36 72.53 35.63 14.50 表6. 其他方法对比结果(%) Table 7 Results compared with other methods (% 分类方法 Accuracy Recall FPR 1改进SMOTE + DBN + GBDT [ 16 ] 73.29 53.65 10.23 OCL [ 17 ] 481.25 / / SCDNN [ 18 ] 72.64 57.48 / IDCVAE-DBN 82.36 75.34 2.81 表7. 其他方法对比结果(%)