使用语言:R

背景介绍:

ISCX2012数据集是目前使用比较广泛的入侵检测数据集,较于KDD99,该数据集的内容更新,数据样本量更大。本次实验中,我们将使用数据挖掘课程中介绍的知识,对ISCX2012数据集进行分析。

题目说明:

1)已知ISCX数据集中,Jun14这天发生了DoS攻击,现要求使用决策树方法对该天的数据进行处理,并验证决策树模型的准确率、精度和召回率

由于XML文档不方便数据处理,将其导入为excel数据表

数据库 数据挖掘 数据挖掘数据集_数据库 数据挖掘

将该数据表导入到Rstudio中

1 install.packages("openxlsx")
2 library(openxlsx)
3 x<-read.xlsx("F:\\Testbed.xlsx")

得到结果

数据库 数据挖掘 数据挖掘数据集_数据库 数据挖掘_02

由于要处理的数据集中,只有totalSourceBytes,totalDestinationBytes,totalDestinationPackets,totalSourcePackets这四个列的对象为数据格式,因此把这四个数据作为分类标准,使用R语言中自带的决策树函数rpart对数据集进行分类,首先为了分类方便,将原数据集的上述属性列及label列提取出来到一个新矩阵s,对s进行操作:

数据库 数据挖掘 数据挖掘数据集_数据_03

1 library(rpart)
2 s_tree = rpart(V5 ~ ., data = s)
3 print(s_tree)
4 plot(s_tree)
5 text(s_tree)

所得结果如下:

数据库 数据挖掘 数据挖掘数据集_数据库 数据挖掘_04

数据库 数据挖掘 数据挖掘数据集_数据库 数据挖掘_05

 

 

由于画出的树状图过于密集,我们对print产生的节点文本信息进行分析。产生的结果中,以405) totalSourcePackets< 2.5  204  19 Normal (0.0931372549 0.9068627451) *节点为例,totalSourcePackets< 2.5为分类标准,204为该节点的总数据量,19为该分类标准下判断错误的数据个数,Normal为决策树建模完成后该节点值被认为的label,(0.0931372549 0.9068627451)分别为误判率与准确率。下面计算该决策树模型的准率率,精度和召回率。以下计算中以Normal类为正类,由上述决策树模型获取数据TP(正类判断正确)=166765,TN(负类判断正确)=2862,FP(负类误判为正类)=914,FN(正类误判为负类)=839

根据准确率公式Accuracy=(TP+TN)/(TP+TN+FP+FN)计算准确率为98.977%

根据精度公式Precision=TP/(TP+FP)计算精度为99.455%

根据召回率公式Recall=TP/(TP+FN)计算召回率为99.500%

2)实际数据集中,由于其具有的样本量很大和高维特性,我们在处理时需要先对数据进行处理,现要求对于ISCX数据集中Jun14这一天的数据,使用数据预处理方法,达到该目的。需要明确使用方法前后数据体量的变化,并分析通过预处理后的数据在使用决策树方法进行训练时,对模型准确率的影响。

首先使用数据降维预处理方式对数据集进行处理。(以下使用PCR方法)

先对四个列做主成分分析:

1 s.pr<-princomp(~totalSourceBytes+totalDestinationPackets+totalDestinationBytes+totalSourcePackets, data=s, cor=T)
2 summary(s.pr, loadings=TRUE)

数据库 数据挖掘 数据挖掘数据集_数据_06

 

 

由于Comp.1+Comp.2对主成分的差异比例贡献超过99%,因此可以用Comp.1,Comp.2两个维度的数据来表示原始数据,可得公式

Comp.1=-0.507*totalSourceBytes-0.571*totalDestinationPackets-0.307*totalDestinationBytes-0.568*totalSourcePackets      ①

Comp.2=0.475*totalSourceBytes-0.107*totalDestinationPackets-0.861*totalDestinationBytes+0.148* totalSourcePackets      ②

将公式①,②带入原数据表,进行计算并生成新的数据表,原数据表的四维数据降维成二维数据,代码如下:

1 Comp.1=-0.507*s$totalSourceBytes-0.571*s$totalDestinationPackets-0.307*s$totalDestinationBytes-0.568*s$totalSourcePackets
2 Comp.2=0.475*s$totalSourceBytes-0.107*s$totalDestinationPackets-0.861*s$totalDestinationBytes+0.148*s$totalSourcePackets
3 q=s[,1:3]
4 q[,1]=Comp.1
5 q[,2]=Comp.2
6 q[,3]=s[,5]
7 colnames(q) <- c("Comp.1","Comp.2","Label")

生成新表

数据库 数据挖掘 数据挖掘数据集_数据_07

 

在数据降维后形成的数据表q上建立新的树模型:

1 q_tree = rpart(Label ~ ., data = q)
2 print(q_tree)
3 plot(q_tree)
4 text(q_tree)

数据库 数据挖掘 数据挖掘数据集_数据集_08

 

 

数据库 数据挖掘 数据挖掘数据集_数据_09

按照1中的方法,计算准确率,新的决策树模型中各参数指标为:

TP=167006,TN=2091,FP=1685,FN=598

根据准确率公式Accuracy=(TP+TN)/(TP+TN+FP+FN)计算准确率为98.668%

1中计算准确率为98.977%,本决策树模型中,在原始数据降维之后,准确率几乎没有影响。