一.周计划
二.本周内容
1.KDD99数据集再分析
KDD99数据集包含了4种攻击类型:DOS,U2R,R2L,PROBE,具体如下:
其中DOS攻击中的Neptune将在之后数据分块中发挥很大作用。
对于每一条记录来说,都包括了四种属性集:基本属性集、内容属性集、流量属性集和主机属性集,囊括了全部41个特征(包括7个离散型变量与34个连续性数字变量)。具体每个属性集包括的具体内容此处不再具体列出,第二周时已经了解过。在消除属性时(包括上周主成分分析)会用到这一分类。
2.数据分块预处理
对于属性中非数值类型的属性(如攻击类型和flag等)上周已经做了处理说明。原始数据如图:
处理之后的原始数据如图:
这周做的数据预处理是数据分块。在分块之前,先将属性取值完全相同和属性取值情况极少的数据去掉(这一步我参考了资料的结果),例如land属性的land攻击,urgent属性,su_attempted属性和num_shells属性。这些属性数据量很少,在四十多万条数据中起不到明显的影响效果,可以删除补不计。
第一步删除的数据量极少,此时来做第二步,数据库分块。我选择的是根据属性service作为分块标准,先从数据记录入手——即二维矩阵的行——来进行分类。
现在共有66种service类型,即初始时我分成了66块数据块。接下来考虑另一属性:攻击类型。在刚刚的第一步里已经对攻击类型做了分类,其中,有42种网络服务(service)类型都对应着DOS攻击中的neptune攻击类型。此处不再把42中service属性一一列出,包括sudup,whois等等。另外还有7中服务类型对应着normal一种决策类型。
对于上述42+7共49种服务类型来说,特殊情况不多,所占比例极少,它们的数据子集几乎只对应一种攻击类型(Neptune),对整体的决策不会产生太大影响,因此,可以将这49种服务类型(即我分成的49块数据)作为一类,建立一个共同的决策规则。这样一来,数据块就从66块降至17块。
由此一步,所要考虑的数据大大降低,相当于将数据分成了17类。
第三步,对每一种剩余的服务类型列表作分析,分析每一类有多少条数据、多少决策变量和多少特征数,表格如下:
注意到其中ecr_i一个服务类型就占据了大部分的数据量,但是只有6个决策类型,此时再进行二次删除,它的 特征属性也只有13个而已。对于pm_dump这个极端数据,数据记录少但特征属性很多,通过查阅资料发现,其中的count属性对于pm_dump这个服务类型影响很大,因此可以选择这一属性作为此块数据的主属性。
这样分块处理数据之后,既在横向上减少了数据量,又在纵向上减少或合并了特征值,这样一来二维数组将大大减少。
3.标准化处理
对数据进行标准化处理,目的是将原始数据集中每个不具备直接可比性的元素按照特定的运算法则把它变成一个直接可比的新值。标准化处理算法伪代码截图如下:
标准化处理对于后续的聚类算法分析会有很大帮助。我在进行标准差计算时没有仅仅用了绝对值而不是平方,这样异常数据的作用也会被降低,对于离散化数据有很大的帮助。
4.处理之后的数据
处理之后的数据留下了类别及对应的属性,具体的分类就是上述第三步的表格(每一个具体的决策和特征没有具体列出)
三.本周心得
本周用了分块的方法去进行了数据预处理。这种算法没有具体的公式运行,和传统的直接进行数据挖掘的策略不同,它主要是人为进行分析和归类,既减少了数据量,也找到了代表特征,将二维数组从行列两方面进行了简化。
之后的思路是用Kmeans聚类算法处理,按照k=4和k=5来聚类(初步设想),根绝攻击类别来分析数据,找到每个攻击类型的数据量。
另外,这次任务书的表格全部是在Excel中写好之后复制过来的,结果不能在随笔中修改。
四.参考文献
1吴建胜 张文鹏 KDDCUP99数据集的数据分析研究 辽宁科技大学软件学院 2014.11
2.冯超 K-means聚类算法的研究 大连理工大学 2007.11