# #前言
目前,大量的物联网设备和云服务端直接暴露在互联网上,这些设备和云服务端存在的漏洞例如心脏滴血、破壳等漏洞)一旦被利用,设备的管理、用户隐私的泄露, 为了促进物联网领域的安全研究,研究人员制作了UNSW-NB15数据集。 这是一组基于物联网的网络流量数据集,将常规活动和恶意攻击行为分为不同的类别。 在该数据集的基础上,应用决策树、随机森林、物流回归、多层感知器等AI领域的典型技术进行检测,师傅们从其中发现了数据预处理、数据转换、交叉验证等AI技术是安全领域
# #数据集
这次使用的数据集是UNSW-NB15。 这是一组基于物联网的网络流量数据,由新南威尔士大学堪培拉网络靶场实验室的IXIA PerfectStorm工具制作,是用于合成实际现代正常活动和现代攻击行为的混合数据使用tcpdump工具捕获100 GB的原始通信,如Pcap文件。
这个数据集有Fuzzers、Analysis、Backdoors、DoS、Exploits、通用、Reconnaissance、Shellcode、Worms九种攻击,当然大家都有
如果您想详细了解此数据集的信息,请参见[2][3][4]论文
此数据集的一部分将用作培训集和测试集,即UNSW_NB15_training-set.csv和UNSW_NB15_testing-set.csv。 训练集的记录数为175,341条记录,测试集的记录数为82,332条记录,分别来自不同的攻击类型、恶意、正常的数据。
# #数据预处理
导入所需的库文件
数据集中的数据包括九种攻击类型: Fuzzers、Analysis、后台、DoS、企业、通用、电信、Shellcode和Worms csv文件的最后一列是标签,0表示郑,1表示攻击
加载培训数据UNSW_NB15_training.csv并检查前五行
可以看出前五行的记录都是正常的
加载数据后,首先检测是否有缺少的值
如果有缺少的值,最简单的方法是直接启用包含缺少值的整行和整列
然后,看看数据是否平衡。 另一方面,让我们来看看9种攻击类型是否平滑。 y1是指这方面的标签。 另一方面,让我们来看看正常和恶意数据量是否平衡。 y2是指这方面的标签。
结果如下
数据集不平滑,但不严重。 继续分析
虽然必须手动划分训练集和测试集,但UNSW_NB15是按7:3的比例划分的
培训集和测试集分别位于UNSW_NB15_traini上
ng-set.csv 和 UNSW_NB15_testing-set.csv
如果需要手动拆分的话,使用下面的代码就可以了
我们加载测试集供后续使用
#数据转换
接下来需要转换数据
首先需要确定哪些列是分类数据(categorical),哪些列是数值数据numerical)(分类数据也叫qualitative data或是Yes/No data,是定性的,而数值数据是定量的)
分别将其打印
对于分类数据应用OneHotEncoder,将其编码为独热数值数组
对于数值数据应用StandardScaler,通过去除均值和缩放到单位方差来标准化
构造ColumnTransformer对象,在X_train上进行fit即可
每个transformer分别转换x,将结果拼接起来
对测试集也进行同样的处理
转换后的数据不再是dataframe结构,而是类似于数组的结构
我们同样还需要转换y1,y1中一共有9类
我们直接用LabelEncoder就可以了,其用于规范化标签,使处理对象仅包含0和类别数-1 之间的值
截止目前,数据部分已经处理完成了,接下来就是训练模型了
#交叉验证
我们训练模型后,会使用5折交叉验证(cross validation,CV)进行验证,评估模型的指标包括准确率、准确率、召回率、F1 分数、ROC 的 AUC 值;然后使用测试集评估模型看看效果如何
我们以逻辑回归分类器为例
查看交叉验证结果
因为是5折交叉验证,所以每个指标都有5组数据,基本上我们会使用平均值来衡量校验验证的评估结果
比如打印出平均的准确率
#模型测试
在测试集上进行测试
结果如下
precision是精确率,也称作查全率,等于tp/tp+fp);这是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本
recall是查准率,也称召回率,等于tp/tp+fn);这是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了
从计算公式可以看出,其实就是分母不同,一个分母是预测为正的样本数,另一个是原来样本中所有的正样本数
如果看单个指标都过于片面,可以通过f1分数来评估模型性能,f1是recall和precision的加权平均,在上面可以看到在0.64左右
#其他机器学习方法
在sklearn已经实现了很多机器学习模型,我们只需要一条代码就可以换模型,除了逻辑回归之外,还可以试试决策树和随机森林
打印出模型的超参数
然后重复之前的步骤,来看看结果如何
可以看到,随机森林的效果是相对而言比较好的
#多层感知器
以上三个分类器都属于传统的机器学习方法,那么接着我们试试MLP,这是一种前向结构的神经网络。
结果如下
把这四种分类器放在一起看看哪种效果更好
可以看到随机森林的效果还是最好的。这也给我们一个提示,虽然现在深度学习、神经网络
是AI的最火热的技术,但是这并不意味着在所有任务上都是万能的,它们更大的优势是在处理海量数据、复杂任务上,对于一些基础的任务,可能传统的机器学习方法会有更好的效果。
相关实验:实验:机器学习之RF合天网安实验室)
#参考
1.https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/
2.UNSW-NB15: a comprehensive data set for network intrusion detection systems UNSW-NB15 network data set).
3.The evaluation of Network Anomaly Detection Systems: Statistical analysis of the UNSW-NB15 dataset and the comparison with the KDD99 dataset
4.Novel geometric area analysis technique for anomaly detection using trapezoidal area estimation on large-scale networks
5.http://www.caict.ac.cn/kxyj/qwfb/bps/201809/P020180919390470911802.pdf
6.《机器学习》