news 2026/4/26 17:23:25

基于多维度融合的半监督异常流量检测模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于多维度融合的半监督异常流量检测模型

基于多维度融合的半监督异常流量检测模型

第1页:封面页

各位老师、同学,大家好!

今天我们小组汇报的主题是**"基于多维度融合的半监督异常流量检测模型"**,主要面向Bot攻击流量的检测实验。

接下来,我将从研究背景、数据集介绍、技术框架、实验设计与结果分析等方面,为大家详细讲解本次实验的内容。

第2页:研究背景 - 网络安全的严峻挑战

首先,让我们来了解一下本次实验的研究背景。

当前网络安全面临着三个关键挑战:

第一,网络攻击常态化——Bot攻击的威胁。
Bot攻击是指利用自动化程序(俗称"僵尸网络")发起的网络攻击。这类攻击具有三个特点:隐蔽性强——攻击者可以控制大量被感染的设备,从全球各地发起攻击,难以追踪源头;传播速度快——一旦漏洞被发现,Bot程序可以在短时间内感染成千上万台设备;突破传统防御——传统的防火墙、入侵检测系统往往难以识别这类分布式、低频的攻击行为。根据统计,目前互联网上超过40%的流量来自Bot,其中相当一部分是恶意Bot。

第二,传统检测技术的局限性。
传统的入侵检测系统(IDS)主要采用基于特征库的检测方法。这种方法的工作原理是:预先收集已知攻击的特征签名(如特定的数据包模式、端口号、字符串序列等),然后实时匹配网络流量。但这种方法有两个致命弱点:

  • 需要频繁更新规则库——每当出现新的攻击类型,安全专家必须手动编写新的规则,维护成本极高;
  • 对未知攻击检测能力不足——面对零日攻击(Zero-day)或变种攻击,由于规则库中没有对应的特征签名,系统完全无法识别。

第三,半监督学习在异常检测上的优势。
针对上述问题,机器学习提供了一种新的解决思路。半监督学习介于无监督和全监督之间:

  • 无监督方法(如聚类、隔离森林):完全不需要标注数据,但对噪声敏感,容易产生高误报率;
  • 全监督方法(如深度神经网络):需要大量精确标注的攻击样本,但在网络安全领域,获取高质量的攻击标注数据非常困难且昂贵;
  • 半监督方法的优势在于:只需少量标注数据(主要是正常样本),让模型在大量正常数据上学习正常行为模式,任何显著偏离该模式的行为就被判定为异常。这种方法既解决了无监督方法对噪声敏感的问题,也降低了对大规模标注数据的依赖。

第3页:本次实验核心目标

基于上述背景,本次实验设定了四个核心目标:

目标一:构建DAE无监督模型。
DAE即Denoising Autoencoder(降噪自编码器),是一种深度学习模型。我们的目标是基于这种模型,建立一个网络流量异常检测的基准模型。选择DAE的原因是:它能够从带噪声的输入中学习重建原始数据的能力,这种特性使模型对噪声更加鲁棒,非常适合异常检测场景。

目标二:Bot流量精准检测。
我们选择CSE-CIC-IDS2018数据集进行实验验证。这是一个被学术界广泛认可的网络入侵检测数据集,包含真实的网络攻击流量。我们的目标是在这个数据集上实现较高精度、低误报率的Bot攻击识别。

目标三:多维度异常评估。
单一指标往往存在局限性。我们创新性地提出了三维度融合策略

  • 重构误差:衡量自编码器重建原始数据的能力;
  • 马氏距离:衡量样本在特征空间中与正常样本分布中心的距离;
  • LOF(局部离群因子):衡量样本的局部密度异常。

通过加权融合这三个维度,提升检测的准确性与鲁棒性。

目标四:性能优化与全面验证。
我们将通过阈值寻优来平衡精确率和召回率,最大化F1分数;同时使用混淆矩阵、ROC曲线、AUC等多种指标对模型进行全面评估。

第4页:实验数据集 - CSE-CIC-IDS2018

接下来介绍我们使用的实验数据集。

数据集来源:
CSE-CIC-IDS2018由**加拿大网络安全研究所(CIC)**发布,是网络入侵检测领域公认的标准公开数据集。CIC是一家专注于网络安全研究的权威机构,他们发布的数据集被全球众多高校和研究机构用于入侵检测算法的评测。

数据特性:
该数据集具有以下特点:

  • 真实性:记录的是真实网络环境下的完整流量,而非模拟生成的数据;
  • 高维性:原始特征维度超过80维,包含数据包大小、流量持续时间、TCP标志位、端口信息等丰富的网络流量特征;
  • 多样性:包含多种攻击类型,如DDoS、Bot、暴力破解、Web攻击等;
  • 大规模:总样本量超过100万条记录。

核心子集:
我们选取了包含Bot攻击的"Friday-02-03-2018"流量文件进行实验。经过预处理后:

  • 特征维度从80+维降到了30维(通过PCA降维);
  • 总样本数量:1,044,525条
  • 正常流量(Benign):758,334条,占比72.6%;
  • Bot攻击流量:286,191条,占比27.4%。

这里需要说明的是,虽然数据集中有标注,但我们的训练过程只使用正常样本,攻击样本仅用于测试评估——这正是半监督学习的典型设定。

第5页:数据预处理

在进行模型训练之前,我们需要对原始数据进行预处理。数据预处理是机器学习流程中至关重要的一环,直接影响模型的训练效果。

第一步:数据清洗。
原始数据中存在一些干扰特征和异常值:

  • 剔除非数值干扰特征:如时间戳(Timestamp)、流量ID(Flow ID)、源IP地址、目的IP地址、源端口、目的端口等。这些特征要么是标识符(如IP地址),要么是时间信息,它们与攻击行为的本质特征关联不大,反而可能引入噪声或导致模型过拟合。
  • 处理缺失值和无穷值:网络流量数据中可能存在计算错误导致的无穷值(如除以零),我们将其替换为NaN后删除包含缺失值的行。

第二步:标签处理。
原始数据集中标签有多种类型(Benign、Bot等),我们将标签二值化

  • 正常流量(Benign)→ 标签0
  • 其他所有攻击类型 → 标签1

第三步:特征归一化。
归一化的目的是将不同量纲的特征缩放到同一范围,避免数值大的特征主导模型训练。我们采用了两阶段归一化

  1. RobustScaler:使用第5和第95百分位数进行缩放,对异常值更加鲁棒;
  2. StandardScaler:进行标准化处理,使特征均值为0、标准差为1;
  3. 最后对极端值进行裁剪(Clip),将数值限制在[-5, 5]范围内,防止极端异常值影响模型。

第四步:PCA降维。
主成分分析(PCA)是一种线性降维技术,其核心思想是:找到数据方差最大的方向(主成分),将高维数据投影到低维空间,同时尽可能保留原始信息。

我们选择降到30维,原因有三:

  • 降低计算复杂度:减少模型参数量和训练时间;
  • 去除冗余特征:原始特征间可能存在高度相关性,PCA可以消除这种冗余;
  • 降噪:方差较小的特征往往包含较多噪声,PCA通过保留主成分实现降噪。

降维后,再次使用StandardScaler进行归一化,确保输入模型的数据分布均匀。

第6页:模型构建与训练 - 对称自编码器架构

现在进入模型构建部分。我们设计的核心模型是对称自编码器(Symmetric Autoencoder)

什么是自编码器?
自编码器是一种无监督学习的神经网络,其核心思想是:让网络学习如何将输入数据压缩成一个低维的"编码",然后再从编码重建出原始输入。训练目标是让重建的数据尽可能接近原始输入。

对称架构设计:
我们采用对称结构,即编码器和解码器层数相同、结构镜像:

编码器部分(4层):

  • 输入层:30维(降维后的特征维度)
  • 隐藏层1:128个神经元
  • 隐藏层2:64个神经元
  • 隐藏层3:32个神经元
  • 潜在空间(编码层):8维

解码器部分(4层):

  • 潜在空间:8维
  • 隐藏层4:32个神经元
  • 隐藏层5:64个神经元
  • 隐藏层6:128个神经元
  • 输出层:30维(重建结果)

为什么这样设计?

  1. 逐层压缩:编码器从30维逐步压缩到8维,每一层都在提取更抽象、更本质的特征。这类似于人类理解事物的过程——从表面细节到核心本质。

  2. 潜在空间的作用:8维的潜在空间是模型的"记忆核心",它存储了正常流量数据的最本质特征。如果模型能从8维向量准确重建30维输入,说明它真正学会了正常流量的"模式"。

  3. 对称结构的优势:解码器是编码器的逆过程,对称设计使模型更容易学习,梯度传播更稳定。

  4. 激活函数:隐藏层使用ReLU激活函数,它具有计算简单、缓解梯度消失问题的优点;输出层使用Sigmoid或线性激活函数。

第7页:核心算法 - 降噪自编码器(DAE)

接下来详细介绍我们使用的核心算法——降噪自编码器。

一、工作原理(Mechanism)

降噪自编码器由两部分组成:

编码器(Encoder):将高维输入压缩为低维潜在向量。
数学表示为:z = f(x),其中x是输入,z是潜在向量,f是编码函数(由多层神经网络实现)。

具体过程:

  • 输入30维特征向量
  • 经过4层神经网络逐层变换
  • 输出8维潜在向量

解码器(Decoder):将潜在向量重建为原始维度。
数学表示为:x̂ = g(z),其中z是潜在向量,x̂是重建结果,g是解码函数。

具体过程:

  • 输入8维潜在向量
  • 经过4层神经网络逐层变换
  • 输出30维重建向量

二、训练目标(Objective)

模型训练的目标是最小化重构误差。我们使用**均方误差(MSE)**作为损失函数:

L = ||x - x̂||² = Σ(xᵢ - x̂ᵢ)²

训练过程:

  1. 输入一个正常流量样本x
  2. 编码器将其压缩为潜在向量z
  3. 解码器将z重建为x̂
  4. 计算x和x̂之间的MSE
  5. 反向传播更新网络参数

经过训练,模型能够精准重建正常流量数据。

三、异常检测逻辑(Detection Logic)

这是DAE用于异常检测的核心原理:

正常流量

  • 模型在训练时见过大量正常流量
  • 正常流量具有规律的模式
  • 模型学会了这些模式,能够准确重建
  • 重构误差小(接近训练时的误差水平)

攻击流量(Bot)

  • 模型训练时从未见过攻击流量
  • 攻击流量的特征分布与正常流量不同
  • 模型无法准确重建,因为攻击模式不在其"知识范围"内
  • 重构误差大(显著高于正常流量的误差)

直观类比
想象你是一个专门临摹梵高画作的画家。你临摹过无数次梵高的画,已经非常熟练。但如果让你临摹一幅毕加索的画,你会画得很别扭——因为你的大脑已经"过拟合"了梵高的风格。

同样地,DAE在训练时"过拟合"了正常流量的模式,面对异常流量时就会"不知所措",表现为重建误差增大。

第8页:半监督训练机制

接下来介绍模型的训练策略。

为什么采用半监督训练?

在真实的网络安全场景中:

  • 正常流量数据大量存在容易获取
  • 攻击流量数据稀少标注成本高(需要安全专家分析);
  • 攻击类型不断变异和进化,今天的攻击特征可能不适用于明天。

因此,我们采用仅使用正常样本训练的策略,这正是半监督学习的典型应用。

训练数据准备:

plaintext

X_normal = X_pca[y == 0] # 只取正常样本 sample_size = min(200000, len(X_normal)) # 最多使用20万条正常样本

我们从75万多条正常样本中随机抽取20万条用于训练,这是一个合理的训练集规模。

降噪训练策略:

我们使用的是降噪自编码器(DAE),与普通自编码器的区别在于:

训练时加入噪声

plaintext

noise = torch.randn_like(batch_x) * 0.05 # 生成标准差为0.05的高斯噪声 noisy_batch = batch_x + noise # 在输入上添加噪声

为什么要加噪声?

  1. 防止过拟合:如果模型直接学习恒等映射(输出=输入),模型就没有真正学到数据的特征。加入噪声迫使模型学习数据的内在结构,而非简单地复制输入。

  2. 增强鲁棒性:真实数据往往包含噪声,加噪训练使模型能够处理带噪声的真实数据。

  3. 提升泛化能力:模型学会了从噪声数据恢复原始数据的能力,对未见过的正常数据变体也能准确重建。

训练超参数:

  • 优化器:Adam(自适应学习率优化器)
  • 学习率:0.0005
  • 权重衰减:1e-6(L2正则化,防止过拟合)
  • 训练轮数:40 epochs
  • 批大小:4096

梯度裁剪

plaintext

torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

梯度裁剪限制了梯度的最大范数,防止梯度爆炸,使训练更稳定。

第9页:异常检测与评估 - 多维融合异常分

模型训练完成后,如何使用它进行异常检测呢?我们提出了多维度融合异常分数策略。

核心思想:
单一指标(如重构误差)可能存在盲区。不同类型的异常可能在不同的度量上表现突出。融合多个维度可以互补盲区,提高检测准确性。

三个维度的异常分数:

维度一:重构误差分数(权重0.5)

计算方法:

plaintext

recon_error = ||x - x̂||² # 输入与重建结果的均方误差 recon_score = (recon_error - min) / (max - min) # 归一化到[0,1]

原理:直接衡量模型重建输入的能力。正常样本误差小,异常样本误差大。

维度二:马氏距离分数(权重0.3)

计算方法:

plaintext

from sklearn.covariance import EllipticEnvelope mahalanobis_detector = EllipticEnvelope(contamination=0.1) mahalanobis_detector.fit(normal_encoded) # 只用正常样本的编码 mahalanobis_score = -mahalanobis_detector.score_samples(encoded_features)

什么是马氏距离?
马氏距离是一种考虑特征相关性的距离度量:
D_M(x) = √[(x-μ)ᵀΣ⁻¹(x-μ)]

其中μ是均值向量,Σ是协方差矩阵。

为什么要用马氏距离?

  • 普通的欧氏距离假设各特征独立且等权重,但在网络流量数据中,特征之间存在复杂的相关性;
  • 马氏距离考虑了特征的协方差结构,能够更准确地衡量样本与正常分布中心的"距离";
  • 我们在潜在空间(8维编码)中计算马氏距离,这是因为编码已经去除了冗余信息,更具代表性。

维度三:LOF局部离群因子(权重0.2)

计算方法:

plaintext

from sklearn.neighbors import LocalOutlierFactor lof = LocalOutlierFactor(n_neighbors=20, contamination=0.1, novelty=True) lof.fit(normal_encoded) lof_score = -lof.score_samples(encoded_features)

什么是LOF?
LOF衡量的是样本的局部密度相对于其邻居的密度:

  • 如果一个样本的局部密度远低于其邻居的密度,则可能是离群点;
  • LOF特别适合检测"局部异常"——即在一个小区域内异常,但在全局范围内看起来正常的点。

为什么要加入LOF?
重构误差和马氏距离都是全局指标,可能遗漏局部异常。LOF作为补充,能够发现那些在局部区域内表现异常的样本。

融合公式:

plaintext

anomaly_score = 0.5 * recon_score + 0.3 * mahalanobis_score + 0.2 * lof_score

权重分配原则:重构误差是核心指标(权重最高),马氏距离提供全局视角(中等权重),LOF补充局部视角(较低权重)。

第10页:多维度异常分数融合策略详解

这一页我们对融合策略进行更深入的解释。

为什么需要多维度融合?

假设我们只使用重构误差检测:

  • 问题1:某些正常流量可能有较大的重构误差(如罕见但合法的网络行为),导致误报;
  • 问题2:某些攻击流量可能恰好能被模型较好地重建(如果攻击特征与正常流量有部分重叠),导致漏报。

引入马氏距离和LOF可以缓解这些问题:

  • 马氏距离从全局分布角度评估样本是否偏离正常区域;
  • LOF从局部密度角度发现那些"躲在正常区域角落里"的异常。

各维度的作用机制:

维度评估角度适用场景局限性
重构误差重建能力识别特征分布异常的攻击对训练集中未见的正常变体敏感
马氏距离全局分布识别在特征空间中位置异常的样本对局部异常不敏感
LOF局部密度识别局部离群点对全局趋势不敏感

融合的数学原理:

设三个维度的分数分别为S₁、S₂、S₃,融合分数为:
S = w₁S₁ + w₂S₂ + w₃S₃

其中w₁ + w₂ + w₃ = 1。

我们选择的权重(0.5, 0.3, 0.2)是基于以下考虑:

  • 重构误差是DAE检测的基础,权重应该最大;
  • 马氏距离提供重要的补充信息,权重次之;
  • LOF作为辅助维度,权重最低。

权重的选择可以通过交叉验证进行优化,但本次实验中我们使用了固定的经验权重。

第11页:阈值寻优

有了异常分数后,如何判定一个样本是正常还是异常?我们需要确定一个判定阈值

阈值的作用:

plaintext

if anomaly_score > threshold: prediction = "异常" # Bot攻击 else: prediction = "正常" # 正常流量

阈值选择的两难:

  • 阈值太高:漏报增加(很多攻击被误判为正常);
  • 阈值太低:误报增加(很多正常被误判为攻击)。

我们的策略:最大化F1分数。

什么是F1分数?
F1分数是精确率和召回率的调和平均:
F1 = 2 × (Precision × Recall) / (Precision + Recall)

  • 精确率:预测为攻击的样本中,真正是攻击的比例;
  • 召回率:所有真实攻击中,被正确检测出的比例。

F1分数平衡了精确率和召回率,是一个综合指标。

阈值搜索算法:

python

best_f1 = 0 best_percentile = 90 for percentile in range(70, 99): threshold = np.percentile(normal_scores, percentile) # 取正常样本分数的第percentile百分位数 y_pred = (anomaly_scores > threshold).astype(int) if np.sum(y_pred) > 1000: # 确保有足够的预测(防止全部预测为正常) f1 = f1_score(y, y_pred) if f1 > best_f1: best_f1 = f1 best_percentile = percentile

为什么用百分位数而非绝对值?
异常分数的绝对值范围会随数据集变化,使用百分位数更具通用性。第84百分位数意味着:正常样本中有84%的分数低于该阈值,只有16%高于阈值(可能被误判)。

第12页:可视化评估

评估机器学习模型不能只看一个指标,我们通过多种可视化方法全面评估模型性能。

可视化一:异常分数分布直方图

将正常样本和攻击样本的异常分数分别绘制直方图:

  • 横轴:异常分数值
  • 纵轴:样本数量
  • 不同颜色区分正常/攻击

理想情况:两个分布应该明显分离。如果重叠严重,说明模型区分能力有限。

可视化二:不同方法分数对比

对比重构误差、马氏距离、LOF三个维度的分数分布:

  • 观察哪个维度对正常/攻击的区分度最高
  • 验证融合策略的有效性

可视化三:检测性能指标柱状图

展示准确率、精确率、召回率、F1分数四个核心指标:

  • 直观展示模型的综合性能
  • F1分数是最重要的综合指标

可视化四:混淆矩阵热力图

混淆矩阵展示四种预测结果:

plaintext

预测正常 预测异常 实际正常 TN FP 实际异常 FN TP
  • TN(True Negative):正确预测为正常的正常样本数
  • FP(False Positive):错误预测为攻击的正常样本数(误报)
  • FN(False Negative):错误预测为正常的攻击样本数(漏报)
  • TP(True Positive):正确预测为攻击的攻击样本数

可视化五:ROC曲线

ROC曲线展示不同阈值下的真阳性率(TPR)和假阳性率(FPR):

  • 横轴:FPR(假阳性率)= FP / (FP + TN)
  • 纵轴:TPR(真阳性率/召回率)= TP / (TP + FN)
  • 曲线下面积(AUC):越接近1越好

AUC=0.5表示随机猜测,AUC=1表示完美分类器。

可视化六:阈值对性能的影响

展示不同百分位数阈值下F1分数和召回率的变化:

  • 帮助理解阈值选择的重要性
  • 展示精确率与召回率的权衡关系

第13页:盲测评估 - 通过真实数据生成测试数据

为了验证模型的泛化能力,我们进行了盲测评估。

什么是盲测?
盲测是指使用模型在训练过程中从未见过的数据进行测试。盲测能够更真实地反映模型在实际应用中的表现。

盲测数据来源:

我们通过以下方式生成测试数据:

  1. 从原始数据集中提取新的流量样本(不参与训练);
  2. 使用与训练数据相同的预处理流程;
  3. 确保测试数据中正常/攻击比例与实际场景相近。

盲测流程:

plaintext

model.eval() # 切换到评估模式 with torch.no_grad(): # 不计算梯度,节省内存 for batch in test_data: reconstructed, encoded = model(batch) # 前向传播 recon_error = mean((reconstructed - batch)²) # 计算重构误差

评估模式与训练模式的区别:

  • 训练模式:启用Dropout、BatchNorm更新
  • 评估模式:禁用Dropout、使用训练好的BatchNorm参数

为什么使用torch.no_grad()?
在测试阶段不需要反向传播,使用该上下文管理器可以:

  • 减少内存占用(不保存中间变量用于梯度计算)
  • 加快推理速度

第14页:盲测结果

盲测结果从多个角度展示了模型的检测能力。

重构误差分布:

  • 正常样本的重构误差集中在低值区域
  • 攻击样本的重构误差分布更分散,均值更高
  • 两个分布存在一定重叠,这是导致误报和漏报的根本原因

ROC曲线分析:

  • AUC值约为0.65-0.70,表明模型具有一定的区分能力
  • 但距离理想值1.0还有较大差距

混淆矩阵解读:
盲测样本量n=1000的结果:

  • TN=667:667个正常样本被正确识别
  • FP=64:64个正常样本被误判为攻击(误报率8.76%)
  • FN=134:134个攻击样本被漏判为正常
  • TP=135:135个攻击样本被正确识别

关键指标:

  • 检测率(召回率):50.19%
  • 误报率:8.76%
  • F1分数:0.577

结果分析:
盲测结果与全量测试结果一致,说明模型具有一定的泛化能力。约50%的召回率说明模型能识别一半左右的Bot攻击,同时保持较低的误报率。

第15页:实验1 - 全量数据测试结果分析

现在我们来看实验1的详细结果分析。

实验设置:

  • 数据集:全量100万+样本
  • 阈值:正常流量异常分数的第84百分位数
  • 对应阈值:0.006616

核心指标解读:

准确率(Accuracy)= 0.7387

  • 含义:所有样本中,正确预测(TN+TP)的占比
  • 解读:约74%的样本被正确分类
  • 注意:由于正常样本占多数,准确率可能会被"拉高"

精确率(Precision)= 0.5245

  • 含义:预测为攻击的样本中,真正是攻击的比例
  • 解读:预测为攻击的样本中,约52%确实是攻击
  • 问题:意味着近一半的报警是误报

召回率(Recall)= 0.4969

  • 含义:所有真实攻击中,被正确检测出的比例
  • 解读:约50%的Bot攻击被成功识别
  • 问题:意味着一半的攻击被漏掉了

误报率(FPR)= 17.00%

  • 含义:正常样本中被误判为攻击的比例
  • 解读:17%的正常流量被误报为攻击
  • 问题:较高的误报率会增加安全运维的负担

混淆矩阵详解:

plaintext

预测正常 预测异常 实际正常 629,417 128,917 实际异常 142,988 143,203
  • 总正常样本:758,334,其中629,417被正确识别,128,917被误报
  • 总攻击样本:286,191,其中143,203被正确检测,142,988被漏报

结果分析:

模型能检测出约50%的Bot攻击,这是一个可以接受的起点。但存在两个主要问题:

  1. 召回率(50%)偏低,有大量攻击被漏检;
  2. 误报率(17%)偏高,会产生较多虚假报警。

这些问题的根源在于:

  • 攻击流量与正常流量的特征存在重叠;
  • 模型对正常模式的学习还不够充分。

第16页:实验2 - 阈值优化

针对实验1的问题,我们进行了阈值优化实验。

实验设计:

  • 采样规模:20,000个样本
  • 遍历范围:第70至第95百分位数
  • 目标:找到最大化F1分数的最优阈值

不同阈值的性能对比:

百分位数阈值准确率精确率召回率F1分数
95%0.6270.6980.1110.0180.031
90%0.2640.7900.6410.4950.558
85%0.1480.7520.5420.4950.518
80%0.0780.7150.4720.4950.483
75%0.0410.6770.4160.4950.452
70%0.0260.6430.3760.4950.427

关键发现:

  1. 阈值与召回率的关系

    • 阈值降低(百分位数降低)→ 更多样本被判定为异常 → 召回率上升
    • 但同时精确率下降,因为更多正常样本也被误判
  2. 阈值与精确率的关系

    • 阈值升高(百分位数升高)→ 更严格的异常判定 → 精确率上升
    • 但召回率下降,因为攻击样本也可能被判定为正常
  3. F1分数的最优平衡

    • 第90百分位数时,F1分数达到最高(0.558)
    • 这是一个精确率(0.641)和召回率(0.495)的平衡点

阈值优化的核心逻辑:

提高判定标准至90%分位数,能够:

  • 过滤掉由背景噪声或轻微异常引起的误报;
  • 在保证召回率的前提下,最大化精确率;
  • 减少安全运维人员的无效工作量。

优化后的结果:

  • 准确率:0.802(提升至80%)
  • 精确率:0.678(提升至68%)
  • 召回率:0.502(保持在50%)
  • F1分数:0.577(提升至58%)
  • 误报率:8.76%(从17%降低至9%)

第17页:核心实验结果对比

这一页我们对两次实验的结果进行对比分析。

对比维度:

指标实验1(84%阈值)实验2(90%阈值)变化
准确率73.87%80.20%+6.33%
精确率52.45%67.84%+15.39%
召回率49.69%50.19%+0.50%
F1分数51.02%57.69%+6.67%
误报率17.00%8.76%-8.24%

关键结论:

  1. 阈值优化显著提升了精确率:从52%提升到68%,提升幅度超过15个百分点。这意味着模型的预测更加可靠,安全团队不必在大量误报上浪费时间。

  2. 召回率基本保持稳定:约50%的Bot攻击仍能被检测出来。阈值优化没有以牺牲检测能力为代价。

  3. 误报率大幅下降:从17%降至9%,下降了近一半。在实际部署中,这能显著降低运维成本。

  4. F1分数提升:从51%提升到58%,模型的综合性能得到改善。

权衡分析:

阈值优化实际上是在精确率和召回率之间做权衡:

  • 更高的阈值 → 更少的报警,但可能漏掉更多攻击
  • 更低的阈值 → 更多报警,但其中更多是误报

我们的目标是在保证基本检测能力的前提下,尽量减少误报。第90百分位数阈值是一个较好的平衡点。

第18页:实验结论

基于以上实验,我们得出以下结论:

结论一:模型有效性

基于降噪自编码器的半监督方法能够有效检测Bot攻击。这证明了该方法在网络入侵检测领域具备良好的可行性与应用潜力。

关键证据:

  • 模型能够识别约50%的Bot攻击
  • 误报率可控制在9%左右
  • F1分数达到58%

结论二:多维度融合的优势

融合重构误差、马氏距离和LOF的多维度异常分数,相比单一指标能更全面地评估样本异常性,显著提升了模型检测的鲁棒性。

关键证据:

  • 三个维度分别从不同角度评估异常
  • 融合后的检测效果优于单一维度

结论三:阈值优化是关键

通过最大化F1分数选择最优阈值,可在检测率和误报率间取得平衡。阈值优化将误报率从17%显著降低至9%,是提升模型性能的核心手段。

关键证据:

  • 阈值从84%调整为90%后,精确率提升15%
  • 误报率下降近一半

结论四:性能瓶颈与改进方向

当前模型召回率约50%,仍有较大提升空间。主要原因是攻击流量与正常流量特征重叠,未来需优化模型以充分学习复杂的正常模式。

存在的问题:

  1. 召回率偏低:一半的攻击被漏检
  2. 攻击与正常特征重叠:某些Bot攻击的行为模式与正常流量相似
  3. 模型容量可能不足:自编码器结构相对简单

第19页:总结与未来展望

本次工作总结:

我们成功构建并验证了一个基于多维度融合的半监督网络入侵检测模型。该模型通过学习正常流量模式,能够有效识别Bot攻击,并通过阈值优化显著提升了检测精度,为网络安全防护提供了新的技术思路。

主要贡献:

  1. 构建了降噪自编码器异常检测模型
  2. 提出了三维融合的异常评估策略
  3. 验证了阈值优化的重要性
  4. 在真实数据集上完成了实验验证

未来改进方向:

方向一:模型结构优化

  • 尝试卷积自编码器(CAE):使用卷积层提取空间特征
  • 尝试循环自编码器(RAE):使用LSTM/GRU提取时间序列特征
  • 网络流量数据具有时空特性,更复杂的网络结构可能学习到更深层的模式

方向二:特征工程改进

  • 探索更有效的特征选择方法(如基于互信息的特征选择)
  • 引入时间序列特征(如流量到达间隔、连接持续时间)
  • 使用自动特征学习方法(如深度特征合成)

方向三:半监督学习探索

  • 引入少量标注的攻击样本进行训练
  • 结合主动学习策略,让模型主动选择最有价值的样本请求标注
  • 使用对抗训练提升模型对变种攻击的识别能力

方向四:实时检测部署

  • 将模型工程化部署为实时检测系统
  • 优化推理速度,满足实时检测的吞吐量要求
  • 在真实网络环境中验证其防御效果

结束语:

感谢各位老师和同学的聆听!我们的汇报到此结束,欢迎提问与交流。

附录:核心概念速查

自编码器(Autoencoder)

一种无监督学习的神经网络,通过学习将输入压缩为低维编码再重建输出,常用于降维和异常检测。

降噪自编码器(Denoising Autoencoder, DAE)

在训练时对输入添加噪声,迫使模型学习数据的内在结构,提高鲁棒性。

重构误差(Reconstruction Error)

输入数据与自编码器重建输出之间的差异,通常用均方误差(MSE)衡量。

马氏距离(Mahalanobis Distance)

考虑特征相关性的距离度量,用于衡量样本与分布中心的偏离程度。

LOF(Local Outlier Factor)

局部离群因子,衡量样本相对于其邻居的局部密度偏离程度。

F1分数

精确率和召回率的调和平均,是评估分类模型的综合指标。

ROC曲线与AUC

ROC曲线展示不同阈值下的真阳性率与假阳性率的关系,AUC是曲线下面积,越接近1表示模型越好。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 5:28:21

04-09-04 陈述观点 - 学习笔记

04-09-04 陈述观点 - 学习笔记 章节信息 核心主题:STATE技巧、事实与观点分离、试探性表达、说服的艺术 学习目标:掌握STATE五步法,学会既坦诚又安全地表达观点 关键要点:Share facts(分享事实)、Tell story(说出想法)、Ask(征询观点)、Talk tentatively(试探表达)、Encourage …

作者头像 李华
网站建设 2026/4/25 5:23:19

计算机网络复习(第三章):数据链路层

数据链路层:成帧、差错控制、可靠传输与介质访问控制 引言:数据链路层在网络中的位置 数据链路层位于物理层之上、网络层之下。物理层负责把比特转换成电信号、光信号或无线电波并在传输介质上传播,而数据链路层要解决的问题更进一步&#xf…

作者头像 李华
网站建设 2026/4/25 5:19:31

前端工程的代码规范和代码审查最佳实践

前端工程的代码规范和代码审查最佳实践 为什么代码规范和代码审查如此重要? 在当今快速迭代的前端开发环境中,代码规范和代码审查是确保代码质量和团队协作的关键环节。一个良好的代码规范和审查流程可以: 提高代码质量:确保代…

作者头像 李华
网站建设 2026/4/25 5:19:24

定制开发落地实践:D-coding 销售采购系统赋能上海多终端软件项目建设

摘要: 在订单驱动型企业中,销售与采购往往不是两条独立流程,而是一条从客户需求、询价比价、采购执行、物流跟踪到开票结算的连续业务链。本文围绕销售采购系统的核心场景,结合上海APP开发、上海小程序开发、上海软件定制开发的实…

作者头像 李华
网站建设 2026/4/25 5:17:23

使用 Go 语言安全高效地将 SSH 公钥复制到远程服务器

本文介绍如何在 go 中绕过 shell 命令拼接,直接通过 os.open 读取本地公钥文件并以标准输入(stdin)方式传输至远程服务器的 authorized_keys,避免 shell 注入、路径错误与跨平台兼容性问题。 本文介绍如何在 go 中绕过 shell…

作者头像 李华