基于广义神经网络的网络入侵检测Matlab代码

1.案例背景

1.1 FCM 聚类算法

        聚类方法是数据挖掘中经常使用的方法,它将物理的或抽象的对象分为几个种群,每个种群内部个体间具有较高的相似性,不同群体内部间个体相似性较低。模糊c均值聚类算法(Fuzzy C- Mean, FCM)是用隶属度确定每个元素属于某个类别程度的一种聚类算法,FCM算法把n个数据向量xk,分为c个模糊类,并求每类的聚类中心,从而使模糊目标函数最小,模糊聚类目标函数为

        FCM聚类算法迭代过程如下:
        步骤1:给定类别数c,模糊权重指数m。步骤2:初始聚类中心v。
        步骤3:根据式(34-2)计算模糊隶属度矩阵u。

        步骤4:根据式(34-3)计算每类中心v。
        步骤5:根据式(34-1)计算模糊聚类目标值,判断是否满足结束条件,满足则算法终止,否则返回步骤3。
        FCM算法最终得到了模糊隶属度矩阵u,个体根据隶属度矩阵每列最大元素位置判断个体所属类别。

1.2 广义神经网络

        广义回归神经网络是径向基函数神经网络的一 个分支,是一种基于非线性回归理论的前馈式神经网络,广义神经网络的详细介绍参见第8章。

1.3 网络入侵检测

        网络入侵是指试图破坏计算机和网络系统资源完整性、机密性或可用性的行为。其中,完整性是指数据未经授权不能改变的特性;机密性是指信息不泄露给非授权用户、实体或过程,或供其利用的特性;可用性是可被授权实体访问并按要求使用的特性。入侵检测是通过计算机网络或计算机系统中的若干关键点搜集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为或人侵现象。
        常规的入侵检测方法可以按检测对象、检测方法和实时性等方面进行分类。其中,按检测对象可以分为基于主机的入侵检测系统、基于网络的入侵检测系统和混合型人侵检测系统;按检测方法可以分为误用检测和异常检测;按定时性可以分为定时系统和实时系统。近年来,研究人员又提出了一些新的人侵检测方法,比如基于归纳学习的入侵检测方法、基于数据挖掘的人侵检测方法、基于神经网络的人侵检测方法、基于免疫机理的入侵检测方法和基于代理的入侵检测方法等。其中,基于数据挖掘的入侵检测方法是采用数据挖掘中的关联分析,序列模式分析、分类分析或聚类分析来处理数据,从中抽取大量隐藏安全信息,抽象出用于判断和比较的模型,然后利用模式识别入侵行为。

2.模型建立

        模糊聚类虽然能够对数据聚类挖掘,但是由于网络入侵特征数据维数较多,不同入侵类别间的数据差别较小,不少入侵模式不能被准确分类。本案例采用结合模糊聚类和广义神经网络回归的聚类算法对入侵数据进行分类,算法的流程如图34-1所示。

 

        算法流程中各个模块的作用如下:
        模糊聚类模块用模糊聚类算法把人侵数据分为n类,并得到每类的聚类中心和个体模糊隶属度矩阵u。
        网络训练初始数据选择模块根据模糊聚类的结果选择最靠近每类中心的样本作为广义神经网络聚类训练样本。首先求每类的类内均值mean_i(i=1,2…,n),然后求解每类中所有样本X到中心值mean_i(i=1,2,…,n)的距离矩阵ecent_i(i=1,2,…,n),从距离矩阵ecent_i(i=1,2,…,n)中选择距离最小的m个样本作为一组,设定其对应的网络输出为i。这样就得到了nXm组训练数据,其输入数据为网络人侵特征数据,输出数据为该人侵行为所属入侵类别。
        广义神经网络训练模块用训练数据训练广义神经网络。
        广义神经网络预测模块用训练好的网络预测所有输入样本数据X的输出序列Y。
        网络训练数据选择模块根据预测输出把入侵数据重新分为n类,并从中找出最靠近每类中心值的样本作为训练样本。首先按照网络预测输出序列Y把样本数据X分为n类,然后求出每类内所有样本平均值mean_i(i=1,2,…,n),求解出所有样本X到中心值mean_i(i=l,2,…,n)的距离矩阵ecent_i(i=1,2,…,n),从距离矩阵ecent_i(i=1,2,…,n)选择距离最小的m个样本作为一组,设定其对应的网络输出为i。这样再次得到了n×m组网络训练数据,其输人数据为网络入侵提取数据,输出数据为该个体所属入侵类别。
        本案例的数据来自5种网络入侵数据,算法的目的是能够对这5种人侵数据进行有效聚类。

3.编程实现

        根据FCM聚类算法和广义神经网络原理,在MATLAB中编程实现基于神经网络的聚类算法,用神经网络对5种网络入侵数据进行聚类,以达到分类5种网络入侵数据的目的。

        本案例中使用了模糊聚类函数fcm()、广义神经网络训练函数newgrnn()和预测函数sim(),这3个函数的介绍如下。
        1. fcm:模糊聚类函数
        函数功能:对数据进行模糊聚类。
        函数形式:[CENTER,U,OBJ_FCN] = fcm(DATA,N_CLUSTER)
其中,DATA指待聚类数据;N_CLUSTER 指聚类类别数目;CENTER 指聚类中心;U指样本隶属度矩阵;OBJ_FCN指聚类目标函数值。
        2. newgrnn:广义神经网络训练函数
        函数功能:用训练数据训练广义神经网络。

        函数形式:net = newgrnn(P,T,SPREAD)
其中,P指训练输人数据;T指训练输出数据;SPREAD指网络节点密度;net 指训练好的广义神经网络。
        3.sim:广义神经网络预测函数
        函数功能:用训练好的广义神经网络预测输出。

        函数形式:Y= sim(net,P)
其中,net 指训练好的网络;P指网络输人;Y指预测输出。

        完整Matlab代码如下:

%% 该代码为基于FCM-GRNN的聚类算法%% 清空环境文件
clear all;
clc;%% 提取攻击数据%攻击样本数据
load netattack;
P1=netattack;
T1=P1(:,39)';
P1(:,39)=[];%数据大小
[R1,C1]=size(P1);
csum=20;  %提取训练数据多少%% 模糊聚类
data=P1;
[center,U,obj_fcn] = fcm(data,5);    
for i=1:R1[value,idx]=max(U(:,i));a1(i)=idx;
end%% 模糊聚类结果分析
Confusion_Matrix_FCM=zeros(6,6);
Confusion_Matrix_FCM(1,:)=[0:5];
Confusion_Matrix_FCM(:,1)=[0:5]';
for nf=1:5for nc=1:5Confusion_Matrix_FCM(nf+1,nc+1)=length(find(a1(find(T1==nf))==nc));end
end%% 网络训练样本提取
cent1=P1(find(a1==1),:);cent1=mean(cent1);
cent2=P1(find(a1==2),:);cent2=mean(cent2);
cent3=P1(find(a1==3),:);cent3=mean(cent3);
cent4=P1(find(a1==4),:);cent4=mean(cent4);
cent5=P1(find(a1==5),:);cent5=mean(cent5);%提取范数最小为训练样本
for n=1:R1;ecent1(n)=norm(P1(n,:)-cent1);ecent2(n)=norm(P1(n,:)-cent2);ecent3(n)=norm(P1(n,:)-cent3);ecent4(n)=norm(P1(n,:)-cent4);ecent5(n)=norm(P1(n,:)-cent5);
end
for n=1:csum[va me1]=min(ecent1);[va me2]=min(ecent2);[va me3]=min(ecent3);[va me4]=min(ecent4);[va me5]=min(ecent5);ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tcl(n)=1;ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;
end
P2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tcl,tc2,tc3,tc4,tc5];
k=0;%% 迭代计算
for nit=1:10%开始迭代%% 广义神经网络聚类net = newgrnn(P2',T2,50);   %训练广义网络a2=sim(net,P1') ;  %预测结果%输出标准化(根据输出来分类)a2(find(a2<=1.5))=1;a2(find(a2>1.5&a2<=2.5))=2;a2(find(a2>2.5&a2<=3.5))=3;a2(find(a2>3.5&a2<=4.5))=4;a2(find(a2>4.5))=5;%% 网络训练数据再次提取cent1=P1(find(a2==1),:);cent1=mean(cent1);cent2=P1(find(a2==2),:);cent2=mean(cent2);cent3=P1(find(a2==3),:);cent3=mean(cent3);cent4=P1(find(a2==4),:);cent4=mean(cent4);cent5=P1(find(a2==5),:);cent5=mean(cent5);for n=1:R1%计算样本到各个中心的距离ecent1(n)=norm(P1(n,:)-cent1);ecent2(n)=norm(P1(n,:)-cent2);ecent3(n)=norm(P1(n,:)-cent3);ecent4(n)=norm(P1(n,:)-cent4);ecent5(n)=norm(P1(n,:)-cent5);end%选择离每类中心最近的csum个样本for n=1:csum[va me1]=min(ecent1);[va me2]=min(ecent2);[va me3]=min(ecent3);[va me4]=min(ecent4);[va me5]=min(ecent5);ecnt1(n,:)=P1(me1(1),:);ecent1(me1(1))=[];tc1(n)=1;ecnt2(n,:)=P1(me2(1),:);ecent2(me2(1))=[];tc2(n)=2;ecnt3(n,:)=P1(me3(1),:);ecent3(me3(1))=[];tc3(n)=3;ecnt4(n,:)=P1(me4(1),:);ecent4(me4(1))=[];tc4(n)=4;ecnt5(n,:)=P1(me5(1),:);ecent5(me5(1))=[];tc5(n)=5;endp2=[ecnt1;ecnt2;ecnt3;ecnt4;ecnt5];T2=[tc1,tc2,tc3,tc4,tc5];%统计分类结果Confusion_Matrix_GRNN=zeros(6,6);Confusion_Matrix_GRNN(1,:)=[0:5];Confusion_Matrix_GRNN(:,1)=[0:5]';for nf=1:5for nc=1:5Confusion_Matrix_GRNN(nf+1,nc+1)=length(find(a2(find(T1==nf))==nc));endendpre2=0;for n=2:6;pre2=pre2+max(Confusion_Matrix_GRNN(n,:));endpre2=pre2/R1*100;end%% 结果显示
Confusion_Matrix_FCMConfusion_Matrix_GRNN

        算法反复计算10次,最后得到的聚类结果及两种聚类方法的比较如表34-1所列。其中,每一行均表示聚类算法得到每类样本在实际各入侵类别中的分布数量。

        从表34-1中可以看出,对于网络入侵数据,模糊聚类没有实现对数据的有效分类,聚类结果没有把类别2到类别5的样本区分开来,广义神经网络模糊聚类有效分类了类别1和类别2的样本,类别3到类别5没有有效分类,但是同模糊聚类相比,聚类结果有所改善。

4.案例扩展

        本案例结合了模糊聚类的无导师聚类和广义神经网络的有导师学习功能完成了对未知网络入侵数据的聚类,广义神经网络所起的作用为训练后分类所有入侵样本。
        除了广义神经网络以外,还可以选择BP神经网络、RBF神经网络等。虽然两种方法结合的分类效果比模糊聚类要好,但是还应该看到,该方法没有实现对所有样本有效分类,在第38章中将继续探讨网络人侵聚类问题。

5.完整代码和数据文件

基于广义神经网络的网络入侵检测Matlab代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/106785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录 5、卷积神经网络5.10、⭐批量归一化5.10.1、理论部分5.10.2、代码部分 5.11、⭐残差网络&#xff08;ResNet&#xff09;5.11.1、理论部分5.11.2、代码部分 话题闲谈 5、卷积神经网络 5.10、⭐批量归一化 5.10.1、理论部分 批量归一化可以解决深层网络中梯度消失和…

深度学习经典检测方法的概述

深度学习经典的检测方法 two-stage&#xff08;两阶段&#xff09;&#xff1a;Faster-rcnn Mask-Rcnn系列 两阶段&#xff08;two-stage&#xff09;是指先通过一个区域提取网络&#xff08;region proposal network&#xff0c;RPN&#xff09;生成候选框&#xff0c;再通过…

k8s 常用命令(四)

12、删除pod中的nginx服务及service [rootmaster ~]# kubectl delete deployment nginx -n kube-public [rootmaster ~]# kubectl delete svc -n kube-public nginx-service 13、查看endpoint的信息 [rootmaster ~]# kubectl get endpoints 14、修改/更新&#xff08;镜像、…

react18+antd5.x(1):Notification组件的二次封装

antdesign已经给我们提供了很好的组件使用体验,但是我们还需要根据自己的项目业务进行更好的封装,减少我们的代码量,提升开发体验 效果展示 开起来和官网的使用没什么区别,但是我们在使用的时候,进行了二次封装,更利于我们进行开发 MyNotification.jsx,是我们的业务页面…

百度23Q2财报最新发布:营收利润加速增长,AI+生态战略渐显规模

百度集团-SW(9888.HK)Q2财报已于2023/08/22(美东)盘前发布&#xff0c;二季度百度集团整体收入实现341亿元&#xff0c;同比增长15%;归属百度的净利润(non-GAAP)达到80亿元&#xff0c;同比增长44%。营收和利润双双实现大幅增长&#xff0c;超市场预期。其中&#xff0c;百度核…

队列(Queue):先进先出的数据结构队列

栈与队列https://blog.csdn.net/qq_45467165/article/details/127958960?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127958960%22%2C%22source%22%3A%22qq_45467165%22%7D 队列&#xff08;Queue&#xff09;是一种常见的线…

CV:边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。

目录 1. 边缘检测&#xff08;Prewitt&#xff09; 2. 边缘检测&#xff08;Sobel&#xff09; 3. 边缘检测&#xff08;Laplacian&#xff09; 3. 边缘检测&#xff08;Canny&#xff09; 边缘检测的算法包含 Prewitt、Sobel、Laplacian 和 Canny。 人在图像识别上具有难…

yolov3加上迁移学习和适度的数据增强形成的网络应用在输电线异物检测

Neural Detection of Foreign Objects for Transmission Lines in Power Systems Abstract. 输电线路为电能从一个地方输送到另一个地方提供了一条路径&#xff0c;确保输电线路的正常运行是向城市和企业供电的先决条件。主要威胁来自外来物&#xff0c;可能导致电力传输中断。…

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比

多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 模型…

亚马逊云科技 云技能孵化营 初识机器学习

目录 前言 一、课程介绍 二、什么是机器学习 三、机器学习算法进阶过程 四、亚马逊云科技能给我们什么 总结 前言 近期参加了“亚马逊云科技 云技能孵化营”&#xff0c;该孵化营的亚马逊云科技培训与认证团队为开发者准备了云从业者的精要知识及入门课程&#xff0c;帮助…

[PyTorch][chapter 51][Auto-Encoder -1]

目录&#xff1a; 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介&#xff1a; 自动编码器是一种神经网络&#xff0c;用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务&#xff1a; 1&#xff1a; 输入数据 …

一分钟学会用pygame制作棋盘背景

一分钟一个Pygame案例&#xff0c;这一集我们来学习一下如何生成一个视频中的棋盘背景效果&#xff0c;非常非常简单。 视频教程链接&#xff1a;https://www.bilibili.com/video/BV17G411d7Ah/ 当然我们这里是用来做页面的背景&#xff0c;你也可以拿来做别的效果&#xff0…

测试框架pytest教程(10)自定义命令行-pytest_addoption

pytest_addoption pytest_addoption是pytest插件系统中的一个钩子函数&#xff0c;用于向pytest添加自定义命令行选项。 在pytest中&#xff0c;可以使用命令行选项来控制测试的行为和配置。pytest_addoption钩子函数允许您在运行pytest时添加自定义的命令行选项&#xff0c;…

知识储备--基础算法篇-动态规划

1.前言 第一次接触动态规划&#xff0c;不知道具体什么意思&#xff0c;做了题才发现动态规划就是把大问题变成小问题&#xff0c;并解决了小问题重复计算的方法称为动态规划。比如上楼梯&#xff0c;一次上一阶或二阶&#xff0c;求有多少种算法&#xff0c;就可以拆成最后一…

使用Pytorch和OpenCV实现视频人脸替换

“DeepFaceLab”项目已经发布了很长时间了&#xff0c;作为研究的目的&#xff0c;本文将介绍他的原理&#xff0c;并使用Pytorch和OpenCV创建一个简化版本。 本文将分成3个部分&#xff0c;第一部分从两个视频中提取人脸并构建标准人脸数据集。第二部分使用数据集与神经网络一…

【C++】stack和queue

stack和queue 1. stack1.1 简单了解stack1.2 stack的常见接口1.3 练习1.4 模拟实现stack 2. queue2.1 简单了解queue2.2 queue的常见接口2.3 练习2.4 模拟实现queue 3. deque&#xff08;了解&#xff09;4. priority_queue4.1 优先级队列的介绍4.2 priority_queue的常见接口4.…

【80天学习完《深入理解计算机系统》】第十天 3.3 条件码寄存器【CF ZF SF OF】【set】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

Python Scrapy网络爬虫框架从入门到实战

Python Scrapy是一个强大的网络爬虫框架&#xff0c;它提供了丰富的功能和灵活的扩展性&#xff0c;使得爬取网页数据变得简单高效。本文将介绍Scrapy框架的基本概念、用法和实际案例&#xff0c;帮助你快速上手和应用Scrapy进行数据抓取。 Scrapy是一个基于Python的开源网络爬…

如何进行微服务的集成测试

集成测试的概念 说到集成测试&#xff0c;相信每个测试工程师并不陌生&#xff0c;它不是一个崭新的概念&#xff0c;通过维基百科定义可以知道它在传统软件测试中的含义。 Integration testing (sometimes called integration and testing, abbreviated I&T) is the pha…

Git 版本控制系统

git相关代码 0、清屏幕&#xff1a;clear 1、查看版本号 git -v2、暂存、更改、提交 3、当前项目下暂存区中有哪些文件 git ls-files4、查看文件状态 git status -s5、暂时存储&#xff0c;可以临时恢复代码内容 git restore 目标文件 //&#xff08;注意&#xff1a;完全…