【DDoS攻击检测】基于改进的非洲秃鹫优化算法和一种新的DDoS攻击检测传递函数的特征选择方法(Matlab代码实现)

简介: 【DDoS攻击检测】基于改进的非洲秃鹫优化算法和一种新的DDoS攻击检测传递函数的特征选择方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥


🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


⛳️座右铭:行百里者,半于九十。


📋📋📋本文目录如下:🎁🎁🎁


目录


💥1 概述


📚2 运行结果



🎉3 参考文献


🌈4 Matlab代码实现


💥1 概述

物联网 (IoT) 服务和设备带来了许多挑战,例如连接性、计算性和安全性。因此,网络应提供并保持优质服务。如今,根据最近的研究,分布式拒绝服务(DDoS)攻击是最重要的网络攻击。在各种DDoS检测方法中,机器学习(ML)算法吸引了研究人员。在 ML 中,选择最佳特征子集对于提高分类率具有重要作用。这个问题称为特征选择问题属于NP难题,精确的算法无法在可接受的时间内获得最佳结果。因此,采用元启发式算法等近似算法来解决问题。由于这些算法不会搜索所有解空间,因此它们属于局部最优并提供过早的收敛率。到目前为止,已经引入了几种方法来应对这些挑战,但研究人员试图找到提高方法性能的新策略。该文提出一种二进制改进的非洲秃鹫优化算法(Sin-Cos-bIAVOA)来选择DDoS攻击的有效特征。该方法应用了一种新的化合物传递函数(Sin-Cos)来增加探索。为了选择要素的最佳子集,该方法中采用重力固定半径最近邻 (GFRNN) 作为分类器。此外,AVOA在勘探、平衡勘探和开发以及开发阶段三个阶段进行了改进。因此,Sin-Cos-bIAVOA探索有希望的领域,以实现最佳解决方案并避免局部最优陷阱。


📚2 运行结果


e26cc2a6d2c04c268c34741b36e260d7.png

b9cc25076a284498965a2ca50324ac35.png

f3f5344a08234f69861a844d0dcecc37.png

5a069a09397144a683fd7d78ca62743e.png

7c13b05c7b0d4b3daf0add2564df807b.png

743b1058c6fd42d290784f0673a85858.png

b2d30f873c2a43beaed03653170bb2c0.png


部分代码:

function [Best_vulture1_F,Best_vulture1_X]=sin_cos_bIAVOA(pop_size,max_iter,dim,fobj)
lower_bound=-6;upper_bound=6;
% initialize Best_vulture1, Best_vulture2
Best_vulture1_X=zeros(1,dim);
Best_vulture1_F=inf;
Best_vulture2_X=zeros(1,dim);
Best_vulture2_F=inf;
%Initialize the first random population of vultures
X=double(initialization(pop_size,dim,1,0)>0.5);
%%  Controlling parameter
p1=0.6;
p2=0.4;
p3=0.6;
alpha=0.8;
betha=0.2;
gamma=2.5;
%%Main loop
current_iter=0; % Loop counter
while current_iter < max_iter
    for i=1:size(X,1)
        S1=cos(X(i,:))/2+0.5;
        X1=rand(1,dim)<S1;
        ObjVal1=feval(fobj,X1);
        S2=sin(X(i,:))/2+0.5;
        X2=rand(1,dim)<S2;
        ObjVal2=feval(fobj,X2);
        XX=[X1;X2];
        fiti=[ObjVal1;ObjVal2];
        [~,ind]=min(fiti(:,1));
        X(i,:)=XX(ind,:);
        current_vulture_X = X(i,:);
        current_vulture_F=fiti(ind,:);
        fit(i,:)=fiti(ind,:);
        % Update the first best two vultures if needed and Calculate the fitness of the population
        if current_vulture_F(1)<Best_vulture1_F(1)
            Best_vulture1_F=current_vulture_F; % Update the first best bulture
            Best_vulture1_X=current_vulture_X;
        end
        if current_vulture_F(1)>Best_vulture1_F(1) && ...
                current_vulture_F(1)<Best_vulture2_F(1)
            Best_vulture2_F=current_vulture_F; % Update the second best bulture
            Best_vulture2_X=current_vulture_X;
        end
    end
    worst=max(fit(:,1));
    a=unifrnd(-2,2,1,1)*((sin((pi/2)*(current_iter/max_iter))^gamma)+cos((pi/2)*(current_iter/max_iter))-1);
    P1=(2*rand+1)*(1-(current_iter/max_iter))+a;
    % Update the location
    for i=1:size(X,1)
        current_vulture_X = X(i,:);  % pick the current vulture back to the population
        F=P1*(2*rand()-1);
        random_vulture_X=random_select(Best_vulture1_X,Best_vulture2_X,alpha,betha);
        if (current_iter<=(1/3*max_iter))
            current_vulture_X = exploration(current_vulture_X, random_vulture_X, F, p1, upper_bound, lower_bound);
            % Exploitation:
        elseif (current_iter>(1/3*max_iter)&&  (current_iter<=(2/3*max_iter)))
            prob=(fit(i)-worst)/(Best_vulture1_F(1)-worst);
            if (prob>0.4)
                current_vulture_X= exploitation(current_vulture_X, Best_vulture1_X, Best_vulture2_X, random_vulture_X, F, p2, p3, dim, upper_bound, lower_bound);
            else
                current_vulture_X = exploration(current_vulture_X, random_vulture_X, F, p1, upper_bound, lower_bound);
            end
        else
            current_vulture_X = exploration(current_vulture_X, random_vulture_X, F, p1, upper_bound, lower_bound);
        end
        X(i,:) = current_vulture_X; % place the current vulture back into the population
    end
    current_iter=current_iter+1;
    X = boundaryCheck(X, lower_bound, upper_bound);
    fprintf('Iteration=%d Best_Fitness(Fitness Function,Accuracy,Precision,Recall,Specificity)=%f,%f,%f,%f,%f\n', current_iter,Best_vulture1_F );
end
end


🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。


[1]Zakieh Sharifian, Behrang Barekatain, Alfonso Ariza Quintana, Zahra Beheshti, Faramarz Safi-Esfahani (2023), Sin-Cos-bIAVOA: A new feature selection method based on improved African vulture optimization algorithm and a novel transfer function to DDoS attack detection, Expert System with Application, https://doi.org/10.1016/j.eswa.2023.120404


🌈4 Matlab代码实现


相关文章
|
1月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
81 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
6月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
339 6
|
7月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
112 3
|
4月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
737 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
6月前
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
155 1
|
6月前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
235 0
|
7月前
|
算法 索引
HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导
HashMap在扩容时,会创建一个新数组,并将旧数组中的数据迁移过去。通过(e.hash & oldCap)是否等于0,数据被巧妙地分为两类:一类保持原有索引位置,另一类索引位置增加旧数组长度。此过程确保了数据均匀分布,提高了查询效率。
114 2
|
7月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
202 9
|
7月前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
454 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
7月前
|
机器学习/深度学习 人工智能 开发框架
【AI系统】AI 学习方法与算法现状
在人工智能的历史长河中,我们见证了从规则驱动系统到现代机器学习模型的转变。AI的学习方法基于深度神经网络,通过前向传播、反向传播和梯度更新不断优化权重,实现从训练到推理的过程。当前,AI算法如CNN、RNN、GNN和GAN等在各自领域取得突破,推动技术进步的同时也带来了更大的挑战,要求算法工程师与系统设计师紧密合作,共同拓展AI技术的边界。
309 1