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


在物联网流量分析中,本文关注两个典型场景:智能家居和智能工业。在对这两个场景中的流量数据进行统计分析时,首先,我们从量级分布层面入手,对各个流量标签的数量进行了统计。分析结果显示,公开网络数据集中普遍存在数据不均衡的问题,少数类样本的数量远低于多数类样本,导致分类器在训练时可能偏向于多数类,从而影响整体的检测性能。

进一步,从特征层面分析,我们发现不同设备流量的IP地址、端口号和协议等特征之间存在明显的规律性和关联性。例如,特定设备在某些时间段内会频繁访问特定的端口或IP地址,这种时序和空间特征的关联性为后续的恶意流量检测提供了重要线索。

最后,通过从这两个场景中截取一个时间段的流量数据,我们使用信息熵(Information Entropy)工具进行了分析,发现不同网络行为在时序上存在一定的关联性。这一发现为物联网恶意流量检测方法和系统的设计提供了重要的指导方向,表明了需要考虑时序特征和空间特征的融合。

2. 样本不平衡问题解决方案

针对物联网场景下常见的样本不平衡问题,本文提出了一种基于自编码器和混合采样的融合数据增强算法。该算法的设计过程分为几个步骤。首先,通过自编码器实现原始数据的特征提取和降维。自编码器不仅能够有效压缩数据的维度,还能保留重要的特征信息,为后续的样本扩充奠定基础。

其次,针对编码器输出的低维连续数据样本,我们进行混合采样。具体而言,对于少数类样本,使用多个分类器进行标签预测,只有当预测正确率不超过50%的少数类样本会被选中进行数据扩充,这一策略有效防止了过采样造成的噪声干扰。与此同时,对于多数类样本,我们应用聚类算法进行数据的聚类处理,从每个聚类中提取等量数据进行组合,以达到欠采样的目的。

通过使用公开数据集进行测试验证,结果表明,所提出的数据增强方法显著提高了现有分类器对每个标签的识别准确率。这一方法不仅提升了模型的鲁棒性,还为未来的恶意流量检测研究提供了新的思路。

3. 特征提取与恶意流量检测算法

针对物联网流量特征提取不足以及未知攻击检测困难的问题,本文提出了一种结合时序和空间特征的恶意流量检测算法。该算法的核心在于设计非对称多尺度空间编码器和双向注意力时序编码器。

非对称多尺度空间编码器基于混合注意力机制的多尺度卷积网络,主要用于提取IP地址和端口号等空间特征信息。这种设计允许模型在多尺度上分析数据,确保重要的空间特征能够被有效捕获。同时,双向注意力时序编码器由基于多头自注意力机制的双向循环网络组成,专门用于提取物联网流量的时序特征。该设计能够捕捉到流量数据中复杂的时序模式,为流量分类提供了有力支持。

此外,我们还设计了一种融合已知攻击检测和未知攻击检测的算法模型。在这一模型中,SoftMax函数负责已知攻击类型的检测,而对抗卷积自编码器则用于实现对未知攻击的检测。对抗卷积自编码器通过生成对抗样本来增强模型的学习能力,使其能够在未见过的攻击模式面前依然保持高效的检测能力。

在通过公开网络数据集进行方案测试时,结果表明,该特征融合模型能够有效提取和融合物联网流量的时序和空间特征,从而显著提高分类器模型的准确性。同时,对抗卷积自编码器在未知攻击检测方面表现出色,证明了该方法的有效性和创新性。

4. 实验设置与结果分析

为验证所提出算法的有效性,本文设置了多组实验,包括基准测试、数据增强效果测试以及特征融合效果测试。在基准测试中,我们将提出的方法与传统的检测算法进行了对比,结果显示,采用深度学习技术的检测模型在准确率和F1分数上均有明显提升。

在数据增强效果测试中,使用不同的样本生成策略进行比较,结果表明,基于自编码器的混合采样策略显著改善了少数类样本的检测效果,提升了模型对所有类的识别能力。这一结果不仅验证了所提出的数据增强方法的有效性,也为后续研究提供了有力的支持。

此外,在特征融合效果测试中,通过分析不同特征组合的检测性能,结果显示,时序与空间特征的融合能够显著提高检测模型的准确性和召回率。这一发现强调了在恶意流量检测中考虑多维特征的重要性,为未来的相关研究提供了新方向。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from keras.models import Model
from keras.layers import Input, Dense, LSTM, Conv1D, Dropout
from keras.optimizers import Adam

# 数据增强 - 自编码器
def build_autoencoder(input_shape):
    input_layer = Input(shape=input_shape)
    encoded = Dense(64, activation='relu')(input_layer)
    encoded = Dense(32, activation='relu')(encoded)
    
    decoded = Dense(64, activation='relu')(encoded)
    decoded = Dense(input_shape[0], activation='sigmoid')(decoded)
    
    autoencoder = Model(input_layer, decoded)
    autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
    return autoencoder

# 恶意流量检测模型
def build_detection_model(input_shape):
    input_layer = Input(shape=input_shape)
    x = Conv1D(32, 3, activation='relu')(input_layer)
    x = Dropout(0.2)(x)
    x = LSTM(64, return_sequences=True)(x)
    x = LSTM(32)(x)
    output_layer = Dense(1, activation='sigmoid')(x)

    model = Model(input_layer, output_layer)
    model.compile(optimizer=Adam(lr=0.001), loss='binary_crossentropy', metrics=['accuracy'])
    return model

# 加载数据
data = pd.read_csv('iot_traffic_data.csv')
X = data.drop('label', axis=1).values
y = data['label'].values

# 数据预处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 自编码器训练
autoencoder = build_autoencoder((X_train.shape[1],))
autoencoder.fit(X_train, X_train, epochs=50, batch_size=256, shuffle=True)

# 使用自编码器进行特征提取
X_train_encoded = autoencoder.predict(X_train)
X_test_encoded = autoencoder.predict(X_test)

# 恶意流量检测模型训练
detection_model = build_detection_model((X_train_encoded.shape[1], 1))
detection_model.fit(X_train_encoded, y_train, epochs=50, batch_size=256, validation_split=0.2)

# 测试模型性能
loss, accuracy = detection_model.evaluate(X_test_encoded, y_test)
print(f'Test accuracy: {accuracy:.2f}')

更多推荐