✅博主简介:本人擅长数据处理、建模仿真、程序设计、论文写作与指导,项目与课题经验交流。项目合作可私信或扫描文章底部二维码。


1. 时空特征提取方法设计

物联网流量数据的特点在于其复杂的时空特征,这些特征在网络入侵检测中起着至关重要的作用。针对传统方法无法充分提取这些特征的不足,本文提出了一种基于一维密集连接卷积神经网络(DenseNet1D)的改进神经网络结构,用于全面提取流量数据的深层时空特征。

DenseNet1D网络通过一维卷积操作提取流量数据的空间特征。其特点在于采用了密集连接结构,将每一层的输出直接连接到后续所有层的输入中,这种机制不仅能够复用底层特征,还可以减少梯度消失的问题,从而有效提升模型的表达能力和稳定性。通过DenseNet1D网络,流量数据中的深层空间特征得到了充分的学习和提取。

在提取空间特征的同时,数据的时序特征也不能被忽略。物联网流量数据通常具有时间依赖性,部分攻击行为呈现出持续性或周期性特征。因此,在模型中加入GRU(Gated Recurrent Unit)单元,用于进一步提取数据的时序特征。GRU是一种改进的递归神经网络(RNN),具有更好的长短期记忆能力,能够捕捉流量数据中的潜在时序关系。

通过DenseNet1D与GRU的结合,本文构建的神经网络能够在全局范围内学习流量数据的深层空间和时序特征,形成了一个强大的特征提取器。这样,模型在检测物联网入侵时能够更加准确地识别复杂的攻击模式,提升检测精度。

2. 数据不均衡问题解决方法

在物联网入侵检测的实际场景中,数据集通常存在类别不均衡的问题,少数类攻击样本在大量正常数据和多数类攻击样本中难以被有效检测。为了提高对少数类样本的检测率,本文在模型设计中针对数据不均衡问题进行了优化,提出了改进的数据均衡方法。

首先,在数据层面,采用ADASYN(Adaptive Synthetic Sampling)过采样算法对少数类样本进行数据增强。与传统的随机过采样不同,ADASYN算法通过学习样本的分布,自动生成少数类样本,特别是针对决策边界附近的少数类样本进行更为细致的采样,确保生成的样本具有更好的代表性。这一方法能够有效平衡数据分布,增强少数类样本的学习效果。

其次,对于多数类数据的处理,本文采用NCL(Neighbourhood Cleaning Rule)降采样算法,对那些易混淆的多数类样本进行剔除。NCL通过对邻近样本的分析,剔除那些可能影响分类器学习的多数类样本,从而提高分类器对少数类的敏感度和整体检测的准确性。

在算法层面,本文自定义了焦点损失函数(Focal Loss),通过调整损失函数中的权重,进一步强化对少数类样本的关注。焦点损失函数可以动态调节每个类别的权重,减少多数类样本对整体损失的主导作用,增强对少数类样本的影响力。通过这一机制,模型能够在优化过程中更多地关注少数类,从而提高检测效果。

这一系列的改进措施,使得模型在处理不均衡数据时能够有效提升对少数类攻击的检测能力,并改善整体的分类性能。

3. 数据集实验与验证

为了验证本文所提方法的有效性,选用了三个具有代表性的网络入侵检测数据集进行实验:UNSW-NB15、NB15-IoT和Bot-IoT。通过这些数据集,本文对物联网入侵检测系统的性能进行了全面评估。

  • UNSW-NB15数据集:该数据集包含了多种类型的网络攻击流量,是一个广泛用于网络入侵检测的基准数据集。本文通过提取与物联网场景相关的特征子集,对DenseNet1D-GRU模型进行训练和评估。

  • NB15-IoT数据集:基于UNSW-NB15数据集构建,专注于物联网特性和攻击模式。本文通过对该数据集进行实验,进一步验证了模型在物联网场景下的适用性。

  • Bot-IoT数据集:这是一个专业的物联网攻击数据集,涵盖了多种物联网设备和攻击类型。实验结果显示,本文提出的模型在该数据集上的表现优于传统方法,尤其在少数类攻击检测方面,体现出明显优势。

通过实验对比分析,DenseNet1D-GRU网络在时空特征提取和数据不均衡问题处理上取得了显著的效果,相较于传统的卷积神经网络和递归神经网络,本文方法在精度、召回率和F1分数等关键指标上均有较大提升。特别是在少数类攻击检测方面,本文模型展现出更高的检测率和更低的误报率。

4. 物联网入侵检测系统设计

基于上述改进的神经网络结构和数据处理方法,本文设计并实现了一个完整的物联网入侵检测系统。系统包括以下模块:

  • 数据采集模块:通过网络流量监控工具采集物联网设备产生的流量数据,并对其进行预处理,包括去噪、特征提取和数据标准化等。

  • 特征提取与分类模块:利用DenseNet1D-GRU模型对流量数据进行深层特征提取和分类,实时识别潜在的攻击行为。

  • 告警模块:当检测到异常流量时,系统会自动生成告警信息,并将告警详情发送给管理员,以便及时采取应对措施。

  • 数据可视化模块:系统采用图形化界面展示网络流量状态和入侵检测结果,便于用户直观地了解网络安全状况。同时,用户可以通过历史数据查询功能,分析网络中出现的安全问题。

import tensorflow as tf
from tensorflow.keras import layers, models
from imblearn.over_sampling import ADASYN
from imblearn.under_sampling import NeighbourhoodCleaningRule

# DenseNet1D Block
def dense_block(x, blocks, name):
    for i in range(blocks):
        x = conv_block(x, 32, name=name + '_block' + str(i + 1))
    return x

def conv_block(x, growth_rate, name):
    x1 = layers.BatchNormalization()(x)
    x1 = layers.ReLU()(x1)
    x1 = layers.Conv1D(4 * growth_rate, 1, use_bias=False, name=name + '_conv1')(x1)
    x1 = layers.BatchNormalization()(x1)
    x1 = layers.ReLU()(x1)
    x1 = layers.Conv1D(growth_rate, 3, padding='same', use_bias=False, name=name + '_conv2')(x1)
    x = layers.Concatenate()([x, x1])
    return x

# 构建DenseNet1D-GRU网络模型
def build_model(input_shape):
    inputs = layers.Input(shape=input_shape)
    x = layers.Conv1D(64, 7, strides=2, use_bias=False)(inputs)
    x = layers.BatchNormalization()(x)
    x = layers.ReLU()(x)
    x = layers.MaxPooling1D(3, strides=2)(x)

    x = dense_block(x, blocks=6, name='dense1')
    x = layers.GRU(64, return_sequences=True)(x)
    x = layers.GlobalAveragePooling1D()(x)

    outputs = layers.Dense(1, activation='sigmoid')(x)
    model = models.Model(inputs, outputs)
    return model

# 数据均衡处理:ADASYN + NCL
def balance_data(X, y):
    adasyn = ADASYN()
    X_res, y_res = adasyn.fit_resample(X, y)

    ncl = NeighbourhoodCleaningRule()
    X_res, y_res = ncl.fit_resample(X_res, y_res)
    return X_res, y_res

# 构建模型
model = build_model((100, 1))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 模型训练
X_train, y_train = balance_data(X_train, y_train)
model.fit(X_train, y_train, epochs=20, batch_size=64, validation_split=0.2)

网络结构:

更多推荐