当前位置: 首页 > news >正文

[网络入侵AI检测] docs | 任务二分类与多分类

链接:https://github.com/vinayakumarr/Network-Intrusion-Detection

docs:网络入侵检测

本项目专注于构建和评估多种机器学习模型用于网络入侵检测

它处理原始网络流量数据,训练深度学习架构(如CNN、LSTM及其混合模型)以及传统算法,并严格评估其性能以识别恶意活动

该系统设计用于处理二分类(攻击/正常)和多分类入侵场景。

可视化在这里插入图片描述

章节

  1. 分类任务配置(二分类vs多分类)
  2. 数据加载与预处理
  3. 传统机器学习模型
  4. 深度前馈神经网络(DNN)模型
  5. 纯卷积神经网络(CNN)模型
  6. 循环神经网络(RNN)模型(LSTM/GRU/SimpleRNN)
  7. CNN-LSTM混合模型
  8. 模型训练生命周期(Keras)
  9. 性能评估与报告

第一章:分类任务配置(二分类与多分类)

欢迎来到网络入侵检测(NID)

想象我们是繁忙数字城市的安保人员,职责是识别试图入侵的可疑或危险行为。但在抓捕入侵者之前,我们需要明确要检测的威胁类型

本章将教会我们的"安保"模型理解需要回答的问题类型:是简单的"是/否,攻击与否?"问题,还是更复杂的"这是哪种攻击?"多选题?这一选择从根本上改变了模型最终决策过程的设计方式。

什么是分类任务?

在网络入侵检测中,我们的目标通常是对网络活动进行分类。这意味着接收输入数据(如网络流量特征)并将其分配到特定类别或"类"。例如,我们可能希望将网络连接分类为:

  • 正常(一切正常)
  • 攻击(存在恶意行为)

或者更具体地分类为:

  • 正常
  • DoS(拒绝服务攻击)
  • Probe(漏洞扫描)
  • R2L(远程到本地攻击)
  • U2R(用户到root攻击)

模型处理这些不同类型问题的方式就是"分类任务配置"。

二分类:是非题

二分类是最简单的分类类型,只有两种可能的结果或类别。可以理解为"真"或"假"的问题。在我们的NID项目中,通常意味着区分正常流量和攻击流量。

二分类配置方法

构建神经网络(我们将大量使用的模型类型)时,需要告诉其最后一层如何进行这种二元决策。

  1. 输出层神经元数量:由于只有两种结果,最后一层只需要一个神经元,输出单个值。
  2. 激活函数:该神经元使用sigmoid函数,将任意数值压缩到0到1之间,可解释为输入属于"正类"(如"攻击")的概率。例如输出0.8表示80%可能是攻击。
  3. 损失函数:训练时,模型需要衡量预测的"错误"程度。二分类使用binary_crossentropy,完美比较预测概率(0到1)与实际标签(0或1)。

二分类代码示例

以下是Keras(流行深度学习库)中的简化配置示例,类似配置可见于KDDCup 99/CNN-LSTM/binary/cnn1.py等文件。

from keras.models import Sequential
from keras.layers import Dense, Activationmodel = Sequential()
# ...(其他网络层)...# 二分类关键输出层:
model.add(Dense(1, activation="sigmoid"))# 编译模型,指定二分类损失函数:
model.compile(loss="binary_crossentropy",optimizer="adam",metrics=['accuracy'])

说明

  • Dense(1, activation="sigmoid"):创建具有1个神经元和sigmoid激活函数的输出层
  • loss="binary_crossentropy":使用二分类交叉熵计算训练效果

多分类:多选题

多分类指超过两种可能结果或类别的情况。如同多选题有多个选项(A、B、C、D、E)。在我们的NID项目中,可能将流量分为正常DoSProbeR2LU2R共五类。

多分类配置方法

多分类模型需要对数据准备和输出层设计进行调整。

1. 数据准备:独热编码

多分类模型的标签需要转换为独热编码格式,因为输出层将单独预测每个类的概率。

例如原始数字标签:0=正常,1=DoS,2=Probe等。独热编码将其转换为0和1的列表:

  • 正常0)→ [1, 0, 0, 0, 0]
  • DoS1)→ [0, 1, 0, 0, 0]
  • Probe2)→ [0, 0, 1, 0, 0]

数字1的位置表示类别。

使用Keras的to_categorical示例:

from keras.utils.np_utils import to_categorical
import numpy as npraw_labels = np.array([0, 1, 4, 0, 2]) # 0=正常,1=DoS,4=U2R
num_classes = 5 # 总类别数(正常+4种攻击)one_hot_labels = to_categorical(raw_labels, num_classes=num_classes)
print("原始标签:", raw_labels)
print("独热编码标签:")
print(one_hot_labels)

输出

原始标签: [0 1 4 0 2]
独热编码标签:
[[1. 0. 0. 0. 0.][0. 1. 0. 0. 0.][0. 0. 0. 0. 1.][1. 0. 0. 0. 0.][0. 0. 1. 0. 0.]]
2. 多分类模型配置

与二分类类似,输出层和损失函数需要调整。

  1. 输出层神经元数量:需要N个神经元,N为总类别数(如5类)。每个神经元对应一个类别。
  2. 激活函数:使用softmax函数,将所有N个神经元的输出转换为概率分布(总和为1)。例如五类输出可能是[0.1, 0.7, 0.05, 0.05, 0.1],表示第二类(DoS)概率70%。
  3. 损失函数:使用categorical_crossentropy,专为多分类概率分布设计。

多分类代码示例

配置可见于KDDCup 99/CNN-LSTM/multiclass/cnn1.py等文件。

from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.utils.np_utils import to_categoricalnum_classes = 5 # 示例:正常,DoS,Probe,R2L,U2Rmodel = Sequential()
# ...(其他网络层)...# 多分类关键输出层:
model.add(Dense(num_classes, activation="softmax"))# 编译模型,指定多分类损失函数:
model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=['accuracy'])

说明

  • Dense(num_classes, activation="softmax"):输出层有N个神经元,softmax确保输出为概率分布
  • loss="categorical_crossentropy":适用于比较预测概率分布与独热编码标签

二分类与多分类配置对比

关键差异总结:

特性二分类(如正常/攻击)多分类(如正常,DoS,Probe…)
问题类型两个明确类别超过两个明确类别
输出层神经元1N(类别数量)
输出层激活函数sigmoidsoftmax
损失函数binary_crossentropycategorical_crossentropy
标签编码01(单值)独热编码(如[0,1,0,0,0]
类比是非题多选题

技术实现:Keras如何应用配置

在Keras中定义和编译模型时,实质上是指导库如何设置神经网络的最后部分及评估性能。

在这里插入图片描述

结论

理解二分类与多分类的区别是构建有效NID模型的基础第一步。我们已学会根据问题是两种还是多种结果来配置模型的输出层和选择合适的损失函数,也了解了如何使用独热编码准备多分类任务的标签。

现在我们知道如何定义模型要回答的"问题类型",下一步是准备实际训练数据。下一章将深入探讨如何为这些分类任务加载和准备网络流量数据。

第二章:数据加载与预处理


文章转载自:

http://1rpfkPHj.bxgpy.cn
http://4jAYvaBR.bxgpy.cn
http://qIHQS3GZ.bxgpy.cn
http://njBpbc2b.bxgpy.cn
http://JVcx1DzA.bxgpy.cn
http://EgNj3QyO.bxgpy.cn
http://OCWekYFj.bxgpy.cn
http://5TORE173.bxgpy.cn
http://7l0dI79p.bxgpy.cn
http://ta8riVpX.bxgpy.cn
http://Ag3e5bB7.bxgpy.cn
http://EBcB6SIm.bxgpy.cn
http://fB2hEpiS.bxgpy.cn
http://oYS0bG2s.bxgpy.cn
http://vS5AMReY.bxgpy.cn
http://HZBlT6GZ.bxgpy.cn
http://DqNMSUyW.bxgpy.cn
http://J1UnUVXz.bxgpy.cn
http://4j2O54Yw.bxgpy.cn
http://X3nPvlsr.bxgpy.cn
http://l9W4DiUP.bxgpy.cn
http://lpoOEClS.bxgpy.cn
http://ZfyjdBIy.bxgpy.cn
http://HnLxI9Ij.bxgpy.cn
http://NNQIJr3j.bxgpy.cn
http://HjZRbgqZ.bxgpy.cn
http://E69Vu5Ma.bxgpy.cn
http://TMvEXCZr.bxgpy.cn
http://n3lUYYEM.bxgpy.cn
http://6LGvfGZC.bxgpy.cn
http://www.dtcms.com/a/370429.html

相关文章:

  • Browser Use:打造你的浏览器自动化助手
  • 全维度质量保障:捷多邦厚铜板控制方法详解
  • PDF文件基础-计算机字体
  • Python 制作的一个小说在线阅读工具
  • 携程社招前端面经
  • 基于扰动观察法(PO)的光伏最大跟踪策略Simulink
  • 提示语规则引擎:spring-ai整合liteflow
  • 少儿舞蹈小程序(9)校区信息展示
  • EG2103 SOP-8 内置600V功率MOS管 栅极驱动芯片
  • 【目录-判断】鸿蒙HarmonyOS开发者基础
  • 实体商业创新观察:AI 驱动的本地生活服务新模式解析
  • ThinkPHP 6框架常见错误:htmlentities()函数参数类型问题解决
  • 【Big Data】Apache Kafka 分布式流处理平台的实时处理实践与洞察
  • 大模型服务之下的新旧政务智能系统比较
  • 贪心算法应用:流行病干预策略问题详解
  • 雪球科技Java开发工程师笔试题
  • 【pyhton】函数
  • 进阶向:密码生成与管理工具
  • SWEET:大语言模型的选择性水印
  • 基于Transformer的交通流预测和拥堵识别模型
  • STM32——Flash闪存
  • 【ComfyUI】深度 ControlNet 深度信息引导生成
  • 444444
  • 固定资产管理系统(vue+Springboot+mybatis)
  • 永磁同步电机 FOC 控制中 d、q 轴杂谈与角度偏移影响
  • 网络编程(5)Modbus
  • 蓓韵安禧DHA纯植物藻油纯净安全零添加守护母婴健康
  • SAP二次开发指南:个性化与稳定性的平衡技巧
  • MAZANOKE与cpolar:打造安全可控的照片云端管理系统
  • 【YOLOv11】2.安装Anaconda3