数据挖掘项目总结文档

1、文档概述

1.1 编写目的

记录本次实验思路及流程,备忘用。

1.2 适用对象

个人学习总结,描述有偏差之处陆续更进。

2、业务理解与分析定义

2.1 需求概述

针对传统网络入侵检测系统存在的误判以及漏检情况,采用数据挖掘的指导思想,通过大量的攻击样本数据进行知识发现,本次实验采用的kdd99数据集,其中包含了大量的模拟攻击行为。

1998年美国国防部高级规划署(DARPA)在MI T林肯实验室进行了一项入侵检测评估项目。林肯实验
室建立了模拟美国空军局域网的一个网络环境,收集了9周时间的 TCPdump() 网络连接和系统审计数
据,仿真各种用户类型、各种不同的网络流量和攻击手段,使它就像一个真实的网络环境。这些
TCPdump采集的原始数据被分为两个部分:7周时间的训练数据 (*) 大概包含5,000,000多个网络连接
记录,剩下的2周时间的测试数据大概包含2,000,000个网络连接记录。 ——kdd数据集背景介绍

值得注意的是随着互联网的飞速发展,各种新的攻击手段以及工具不断涌现,而用这份98年生成的测试数据集来作基线检测缺乏一定的实效性,而今市面上也无任何组织或者团体公布出新的检测标准,学术上也一直沿用这份数据集合来度量入侵检测算法的优劣。

2.2 分析目标定义
2.3 模型定义

3、数据准备与数据探索

3.1 数据准备

本文档采用的数据为kdd99数据集,进行分析探索。数据集合说明参照kdd99数据集整理-by dcy。

3.2 数据分析和探索

具体分析方法可以参照另外一个文档Weka快速入门-v1.0

3.3 数据处理流程图

数据处理流程图

4、模型构建

4.1 分析思路

参考论文《基于数据挖掘的入侵检测模型研究_王超峰》的分析思路。论文将关联规则挖掘算法和基于最小相异度的聚类算法应用于入侵检测,从而设计了一个基于数据挖掘的入侵检测模型,该模型的主要思想是:通过关联规则挖掘算法建立误用信息库并进行误用检测,能快速的检测出已知的入侵行为,但是容易产生漏报,需要进行二次检测;采用最小相异度的聚类算法建立聚类信息库,并进行二次检测,检测出漏报的和未知的入侵行为。 基于数据挖掘的入侵检测模型的关键在于误用信息库和聚类信息库的建立、更新、误用检测和聚类检测几个部分。模型框架如下图所示:

4.2 建模工具
  • weka
  • scikit-learing
  • spss
4.3 建模流程

由于获取到的kdd99数据集已经经过整理成结构话的数据,每条记录包含41个特征属性以及一个分类标签,一共42个字段使用逗号分隔符进行分割。

示例数据如下所示

0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,9,9,1.00,0.00,0.11,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,239,486,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,19,19,1.00,0.00,0.05,0.00,0.00,0.00,0.00,0.00,normal.

将其转化为weka内置arff格式。其中有些属性有所省略,这里只做大概理解,详细格式信息参见Weka学习总结-v1.0。

@relation attr@attribute duration numeric
@attribute protocol_type {tcp,udp,icmp}
@attribute service {http,smtp,finger,domain_u,auth,telnet,ftp,eco_i,ntp_u,ecr_i,other,private,pop_3,ftp_data,rje,time,mtp,link,remote_job,gopher,ssh,name,whois,domain,login,imap4,daytime,ctf,nntp,shell,IRC,nnsp,http_443,exec,printer,efs,courier,uucp,klogin,kshell,echo,discard,systat,supdup,iso_tsap,hostnames,csnet_ns,pop_2,sunrpc,uucp_path,netbios_ns,netbios_ssn,netbios_dgm,sql_net,vmnet,bgp,Z39_50,ldap,netstat,urh_i,X11,urp_i,pm_dump,tftp_u,tim_i,red_i}
@attribute flag {SF,S1,REJ,S2,S0,S3,RSTO,RSTR,RSTOS0,OTH,SH}
@attribute src_bytes numeric
@attribute dst_bytes numeric
......
......
@attribute dst_host_rerror_rate numeric
@attribute dst_host_srv_rerror_rate numeric
@attribute lable {normal.,buffer_overflow.,loadmodule.,perl.,neptune.,smurf.,guess_passwd.,pod.,teardrop.,portsweep.,ipsweep.,land.,ftp_write.,back.,imap.,satan.,phf.,nmap.,multihop.,warezmaster.,warezclient.,spy.,rootkit.}@data
0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,1,0,0,9,9,1,0,0.11,0,0,0,0,0,normal.
0,tcp,http,SF,239,486,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,1,0,0,19,19,1,0,0.05,0,0,0,0,0,normal.
0,tcp,http,SF,235,1337,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,1,0,0,29,29,1,0,0.03,0,0,0,0,0,normal.

特征抽取

根据 Kayacik H G等人在Selecting features for intrusion detection这篇文章中所使用的信息增益的方法来选择特征,一方面减少冗余特征、另一方面也可以提高学习速度。
借助开源软件Weka,我们可以很容易的在数据集合上选择出相应的和分类标签最相关的特征用来学习,由于我们直接采用kdd提供的10%小数据集合(近400w条连接记录)作为训练集,没有单独提出测试集合,故采用10折交叉验证的方式进行特征选择。

关联分析模块
生成关联规则
十则交叉验证整个数据集合得到每个特征对于分类属性的一个信息熵,我们设定阈值为0.5,选出大于0.5以上的特征属性进行降为学习。

我们发现剩下17个特征以及一个类标签:

下面进行关联规则的生成。选择Apriori算法,由于该算法针对是离散型变量,故我们需要再对数据进行离散化处理。完了之后调整Apriori算法相关参数导出关联规则。

图中的蕴含关系则为推导出的强关联规则

生成关联规则之后,进行误用检测的流程图

聚类分析模块

按照分类属性,使用简单聚类方式将数据集分成4个聚类。

图中勾出了四个中心点。得到结果仅供演示使用,为了提高速度只选取了1%的数据(49402条记录)。不能代表全局,要定义的中心点的个数也可以另外指定,不断的实验对比,从而确定最优的个数。

4.4 模型结果

5、模型评估

5.1 模型评估方法

使用分类的正确率来度量。

5.2 评估结果

简单采用分类树进行模拟发现,在对经过提取特征的数据进行分类训练,这里采用在原来的训练集合上采用十折交叉验证方式进行评估,分类正确率99.8% ,存在着过拟合现象,由于缺乏测试集合的类标签,无法进行模型的泛化能力(对原数据集合中不曾出现过的类别)检测。总体说来,这些数据集经过非常精细的整理并除去了一些冗余的信息,而且本身包含大量的攻击行为。这是分类正确率如此之高的原因,具体应用的场景能达到一个怎么样的水平以及如何提高分类模型的准确率,还的经过真实数据的检验。

评估结果

混淆矩阵

7、参考资料

  • Kayacik H G, Zincir-Heywood A N, Heywood M I. Selecting features for intrusion detection: A feature relevance analysis on KDD 99 intrusion detection datasets[C]//Proceedings of the third annual conference on privacy, security and trust. 2005.
  • 王超峰. 基于数据挖掘的入侵检测模型研究[D].青岛理工大学,2010.
  • weka快速入门-v1.0
  • kdd99数据集整理-by dcy
本博客文章除特别声明,全部都是原创! 尊重原创,转载请注明: 转载自thinkml(http://www.cnblogs.com/thinkml) 访问更多内容 请访问个人博客 http://me.needpp.com

数据挖掘项目总结文档相关推荐

  1. Django+Linux+Uwsgi+Nginx项目部署文档

    Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...

  2. xxx征集系统项目目标文档

    问题 每四人一组,讨论结束后,每人根据课堂讨论结果提交一份系统利益相关者案例.撰写撰写项目目标文档(目标,好处,度量标准.) 项目目标文档 目标: (1)需求填报 (2)需求查询 (3)需求审核 (4 ...

  3. django+nginx+uwsgi项目部署文档整理

    django+nginx+uwsgi项目部署文档整理 参考文章:https://blog.csdn.net/qq_42314550/article/details/81805328 一.python安 ...

  4. 《重大技术需求征集系统》项目目标文档

    分组:每四人一组 主题:xxx征集系统 成果: 讨论结束后,每组提交一份课堂讨论记录(电子版发表到博客上,纸质版小组成员签名,下节课提交). 每人根据课堂讨论结果提交一份系统利益相关者描述案例.撰写项 ...

  5. 2021-09-10 转载: 软件开发类项目关键文档

    软件开发计划 需求规格说明书 软件概要设计说明 数据库设计说明 软件详细设计说明 可执行程序生成说明 软件测试计划 软件测试说明 软件测试报告 安装部署手册 源代码交付说明 上线部署方案 上线部署实施 ...

  6. 开发人员,请不要抱怨项目没有文档

    每当我们切入一个新项目时,我们发现项目中的文档总是少的可怜,而且里面的设计与当前的系统设计严重不符,有些甚至在架构上出现了严重的偏离.于是我们问待交接人,为什么项目中只有这么点文档,而且文档的内容也不 ...

  7. OpenCV实践小项目(二) -文档ocr扫描识别

    1. 写在前面 今天整理OpenCV入门的第二个实战小项目, 前一篇文章是信用卡数字识别, 主要运用了OpenCV基础图像处理操作里面的轮廓检测, 边缘检测,形态学操作, 今天的这个项目叫做文档ocr ...

  8. postman项目接口文档和登录步骤原理

    培训内容 实训项目:非常果岭-发现模块接口测试,单接口.流程脚本编写: 使用工具:postman 培训方式 1)postman使用说明 2)项目接口文档和登录步骤原理 一.首先了解postman使用 ...

  9. [团队项目]用户需求文档发布!

    用Github浏览更好:Phylab-Web项目用户需求文档 团队主页链接:http://www.cnblogs.com/buaase 用户需求分析文档 版本号:v1.0.2 修订历史: 版本号 修改 ...

最新文章

  1. 在线作图丨数据降维方法⑤——t-SNE(t-Distributed Stochastic Neighbor Embedding)
  2. [翻译]Chameleon介绍(3) : 列表控件
  3. 为什么标准C++中两个直接字符串常量不能相加
  4. print2flashwindows7旗舰版下载哪一个_JUJUMAO_MSDN原版 win 7 二合一 旗舰版32位 64位原版ISO镜像...
  5. Visual Basic .NET处理Excle表格全接触
  6. SIP 中的Dialog,call,session 和 transaction .
  7. 预训练语言模型真的是世界模型?
  8. Linux中 C++ main函数参数argc和argv含义及用法
  9. Android 多级树形菜单
  10. java数组、集合和数据结构知识*
  11. ASP.NET:关于.net中的runat
  12. Widows Live Writer
  13. 【廖雪峰官方网站/Java教程】多线程(1)
  14. uni app 调用网络打印机_一套代码,七端运行-uni-app
  15. redis各项功能解决了什么问题
  16. 阿里云的这群“疯子”
  17. translation exercise 3
  18. 盘点世界最牛的90后黑客,厉害到你无法想象的程度
  19. npm 同时安装同一个包的不同版本(npm@6.9 alias)
  20. Java中setyear和getyear_java时间类Calander,Date等的问题

热门文章

  1. 解决IDEA和输入法切换快捷键Ctrl+Space(空格)冲突导致无法显示代码提示
  2. #!/bin/bash
  3. plsql developer文件编码格式设置
  4. 常用CSS实现DIV文本内容水平垂直居中
  5. iAno超级钢琴模拟器的软件使用教程
  6. 只需1步,图片转换成字体图标iconfont
  7. 爱奇艺轮播图简单实现
  8. cssbefore图片大小_::before如何使用?
  9. 4种方式实现鼠标放上图片变大效果
  10. 我从王阳明身上学到,比别人快 10 倍的成长秘诀