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

news2024/12/23 10:53:28

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:5
    for nc=1:5
        Confusion_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;
    end
    
    p2=[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:5
        for nc=1:5
            Confusion_Matrix_GRNN(nf+1,nc+1)=length(find(a2(find(T1==nf))==nc));
        end
    end
    
    pre2=0;
    
    for n=2:6;
        pre2=pre2+max(Confusion_Matrix_GRNN(n,:));
    end
    
    pre2=pre2/R1*100;

end

%% 结果显示
Confusion_Matrix_FCM

Confusion_Matrix_GRNN

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

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

4.案例扩展

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

5.完整代码和数据文件

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[管理与领导-49]:IT基层管理者 - 8项核心技能 - 4 - 团队激励

目录 前言&#xff1a; 一、什么是团队激励 二、为什么需要激励 三、激励的误区 3.1 常见误区 3.2 以下是一些常见的激励错误做法&#xff1a; 四、如何正确地激励 五、关于激励的一些理念 六、常见障碍 前言&#xff1a; 管理者存在的价值就是制定目标&#xff0c;即…

用户端Web自动化测试_L4

目录&#xff1a; selenium多浏览器处理执行 javascript 脚本headless无头浏览器使用capability配置参数解析企业微信实战cypress测试框架介绍Playwright测试框架介绍 1.selenium多浏览器处理 多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何…

*如何筛选关键词*

*第一步&#xff1a;打开百度&#xff0c;搜索百度指数* *第二步 输入所选择产品的品类* *第三步 找到搜索热度的关键词* *第四步 第一个需要统计的关键词&#xff0c;搜索热度前五的关键词* 建立EXCEL表&#xff0c;写好日期&#xff0c;格式按照 20230206 那一天写得按照这个…

【算法专题突破】双指针 - 复写零(2)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;1089. 复写零 - 力扣&#xff08;Leetcode&#xff09; 我先来读题&#xff0c; 题目的意思非常的简单&#xff0c;其实就是&#xff0c; 遇到 0 就复制一个写进数组&a…

mongodb 添加加点 stateStr 停在 STARTUP

解决办法 PRIMARY 节点是的host 是否是内网IP&#xff0c;如果是内网IP 需要切换成外网IP 即可&#xff1b;

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的&#xff1a;实现KEY1/LEY2/KE3三个按键&#xff0c;中断触发打印一句话&#xff0c;并且灯的状态取反&#xff1b; key1 ----> LED3灯状态取反&#xff1b; key2 ----> LED2灯状态取反&#xff1b; key3 ----> LED1灯状态取反&#xff1b; 2.分析框图: …

STL-常用容器-Vector容器(数组)

1 vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a; 不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a; 并不是在原空间之后续接新空间&#xff0c;而是找更大…

谷歌面试-扔鸡蛋

今天想跟大家分享一个有意思的面试题&#xff0c;这让我再一次感叹思维的奇妙&#xff0c;接下来我们一起看看吧~ 首先来看看题目&#xff1a; 你有2颗鸡蛋&#xff0c;需要以最少的尝试次数来判断在100层的高楼上&#xff0c;哪一层楼是鸡蛋的安全层。 换句话说&#xff0c…

如何在地图上寻找最密集点的位置?

最近我在工作中遇到了一个小的需求点&#xff0c;大概是需要在地图上展示出一堆点中的点密度最密集的位置。最开始没想到好的方法&#xff0c;就使用了一个非常简单的策略——所有点的坐标求平均值&#xff0c;这个方法大部分的时候好用&#xff0c;因为大部分城市所有点位基本…

深度学习6:自然语言处理-Natural language processing | NLP

目录 NLP 为什么重要&#xff1f; 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 NLP 为什么重要&#xff1f; “语言…

React入门 组件学习笔记

项目页面以组件形式层层搭起来&#xff0c;组件提高复用性&#xff0c;可维护性 目录 一、函数组件 二、类组件 三、 组件的事件绑定 四、获取事件对象 五、事件绑定传递额外参数 六、组件状态 初始化状态 读取状态 修改状态 七、组件-状态修改counter案例 八、this问…

4.16 TCP 协议有什么缺陷?

目录 升级 TCP 的工作很困难 TCP 建立连接的延迟 TCP 存在队头阻塞问题 网络迁移需要重新建立 TCP 连接 升级 TCP 的工作很困难&#xff1b;TCP 建立连接的延迟&#xff1b;TCP 存在队头阻塞问题&#xff1b;网络迁移需要重新建立 TCP 连接&#xff1b; 升级 TCP 的工作很…

Docker(md版)

Docker 一、Docker二、更换apt源三、docker搭建四、停启管理五、配置加速器5.1、方法一5.2、方法二 六、使用docker运行漏洞靶场1、拉取tomcat8镜像2、拉取成功3、开启服务4、查看kali的IP地址5、访问靶场6、关闭漏洞靶场 七、vulapps靶场搭建 一、Docker Docker是一个开源的应…

Pushmall 推熵共享电商平台 - 共享链盟

Pushmall 推熵共享电商平台 - 共享链盟以 Pushmall 推熵 B2B/B2C 批零采销订货商城系统为基础&#xff0c;以‘平台自营、供应商入驻、商家自营 商圈链盟 共享会员制&#xff0c;实现 S2B2B2C 商业模式’&#xff0c;是一款为实体商家服务的电商营销推广平台。以 “共创、共生…

算法笔记:球树

1 KD树的问题 算法笔记&#xff1a;KD树_UQI-LIUWJ的博客-CSDN博客 在kd树中&#xff0c;导致性能下降的最核心因素是因为kd-tree中被分割的子空间是一个个的超方体&#xff0c;而求最近邻时使用的是欧式距离&#xff08;超球&#xff09;。超方体与超球体相交的可能性是极高…

MTK6833_MT6833核心板_天玑700安卓5G核心板规格性能介绍

MTK6833安卓核心板采用台积电 7nm 制程的5G SoC&#xff0c;2*Cortex-A766*Cortex-A55架构&#xff0c;搭载Android12.0操作系统&#xff0c;主频最高达2.2GHz 。内置 5G 双载波聚合技术&#xff08;2CC&#xff09;及双 5G SIM 卡功能&#xff0c;实现优异的功耗表现及实时连网…

基于MATLAB的径向基函数插值(RBF插值)(一维、二维、三维)

基于MATLAB的径向基函数插值&#xff08;RBF插值&#xff09;&#xff08;一维、二维、三维&#xff09; 0 前言1 RBF思路2 1维RBF函数2.1 参数说明2.1.1 核函数选择2.1.2 作用半径2.1.3 多项式拟合2.1.4 误差项&#xff08;光滑项&#xff09; 3 2维RBF函数4 3维RBF函数 惯例声…

【头歌】构建哈夫曼树及编码

构建哈夫曼树及编码 第1关:构建哈夫曼树 任务描述 本关任务:构建哈夫曼树,从键盘读入字符个数n及这n个字符出现的频率即权值,构造带权路径最短的最优二叉树(哈夫曼树)。 相关知识 哈夫曼树的定义 设二叉树具有n个带权值的叶子结点{w1,w2,...,wn},从根结点到每个叶…

解决MyBatis不能将表中含有下划线的字段映射到实体属性的两种方案

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 问题描述 MyBatis不能准确地将表中含有下划线的字段映射到实体属性。例如&#xff1a;表中的列名为&#xff1a;user_name&#xff0c;实体类中的属性为&#xff1a;userNa…

深度学习5:长短期记忆网络 – Long short-term memory | LSTM

目录 什么是 LSTM&#xff1f; LSTM的核心思路 什么是 LSTM&#xff1f; 长短期记忆网络——通常被称为 LSTM&#xff0c;是一种特殊的RNN&#xff0c;能够学习长期依赖性。由 Hochreiter 和 Schmidhuber&#xff08;1997&#xff09;提出的&#xff0c;并且在接下来的工作中…