基于MATLAB的网络流量特征统计分析与异常检测系统
项目简介
这是一个综合性的网络流量分析解决方案,旨在通过MATLAB对网络日志数据进行深度挖掘与异常检测。本项目能够模拟生成特定时间段内的网络流量数据,经过预处理后,从统计学和机器学习两个维度对流量特征进行分析。系统不仅能够计算关键性能指标(KPI),还集成了多种无监督学习算法来自动识别网络中的离群点和潜在攻击行为,并最终生成可视化的图表和文本形式的实验报告。
功能特性
- 流量数据模拟与生成:内置数据模拟引擎,可自动生成包含时间戳、源/目的IP、协议类型(TCP/UDP/ICMP/HTTP)及包长等字段的流量数据。模拟过程涵盖了正常流量的混合高斯分布以及人工注入的异常数据(如DDoS攻击特征的大包突发)。
- 数据预处理与特征工程:自动执行缺失值填充、IP地址数值化转换、包到达间隔时间(Inter-arrival Time)计算,并对数据进行Z-score标准化处理,为后续算法提供高质量输入。
- 多维度统计分析:支持协议分布统计、网络吞吐量趋势分析(按时间切片)、以及活跃源IP的Top-N排名统计。
- 混合异常检测模型:
*
统计学方法:基于3-Sigma准则检测单变量(包长)异常。
*
机器学习方法:应用K-Means聚类算法和PCA(主成分分析)算法,通过距离阈值和Hotelling's T^2统计量识别多变量异常。
- 全面的可视化展示:生成两组涵盖基础统计和高级特征分析的高质量图表,包括趋势图、饼图、直方图、相关性热力图、PCA散点图及异常标记时序图。
- 自动报告生成:在控制台输出格式化的实验报告,包含数据概况、统计结论、各算法检测到的异常数量汇总以及模拟评估的准确率。
系统要求
- MATLAB R2018b 或更高版本
- Statistics and Machine Learning Toolbox(统计与机器学习工具箱)
使用方法
- 确保MATLAB环境已安装并配置好相关工具箱。
- 将
main.m 文件放置在工作目录下。 - 直接运行
main 函数。 - 系统将依次执行数据生成、处理、分析流程,弹出两个可视化窗口,并在命令行窗口(Command Window)输出最终的实验报告文本。
代码实现逻辑与细节分析
本项目仅由核心文件 main.m 构成,其内部逻辑严格按照数据处理流水线设计,具体实现细节如下:
1. 数据导入与模拟 (Step 1)
代码首先初始化环境,随即进入数据模拟阶段。虽然系统具备处理真实数据的逻辑框架,但当前版本为了演示完整性,直接在代码中构建模拟数据:
- 时间戳:生成10分钟(600秒)内的随机时间序列。
- IP地址:模拟了部分固定活跃IP和随机生成的IP地址,并将IP地址的最后一段提取并转换为数值,作为特征工程的一部分。
- 协议与包长:利用
randsrc 按设定概率生成协议类型,利用混合高斯分布(normrnd)生成包长,模拟真实网络中小包和大包共存的场景。 - 异常注入:随机选取样本点,人为放大包长并修改协议类型,模拟UDP Flood或大包攻击,作为后续算法评估的“真值”。
2. 数据预处理 (Step 2)
在进入分析前,对原始数据进行清洗和标准化:
- 缺失值处理:使用均值填充潜在的NaN数据。
- 特征提取:计算相邻数据包的时间差(
diff),生成“包间隔时间”特征。 - 标准化:对包长、间隔时间、协议类型、IP数值进行Z-score标准化(减去均值除以标准差),消除量纲影响,防止数值较大的特征主导聚类结果。
3. 多维度统计分析 (Step 3)
系统通过MATLAB内置函数进行基础指标计算:
- 使用
tabulate 统计各协议的占比。 - 使用
histcounts 将时间戳按10秒分箱,计算每个时间窗口内的总字节数,从而得出吞吐量趋势。 - 使用
unique 和 accumarray 统计源IP出现的频次,并按降序排列提取Top 5活跃IP。
4. 异常检测算法实现 (Step 5)
代码集成了三种不同原理的检测算法,并行工作以提高检测覆盖率:
- 3-Sigma 准则:仅针对“包长”这一特征。计算均值与标准差,标记出偏离均值超过3倍标准差的数据点。这主要用于识别极其明显的流量突发。
- K-Means 聚类:针对归一化后的“包长”和“间隔时间”特征进行聚类(k=3)。不仅将数据分为正常小包、正常大包和异常簇,还计算每个样本点到其簇中心的欧氏距离。代码将距离最远的5%样本定义为异常(离群点)。
- PCA 主成分分析:对多维特征进行降维。代码利用
pca 函数计算主成分,并计算每个样本的Hotelling's T-squared统计量。选取T^2统计量最高的2%作为多元统计异常点。
5. 可视化模块 (Step 4 & Step 6)
系统生成两个独立的Figure窗口:
- 基础统计分析窗口:包含流量吞吐量折线图、协议分布饼图、活跃IP柱状图以及包长分布直方图。
- 异常检测与特征分析窗口:
*
特征相关性热力图:展示包长、间隔、协议、IP之间的相关系数矩阵。
*
PCA降维分布图:展示前两个主成分(PC1, PC2)的散点分布,并根据K-Means结果着色,同时用特殊标记高亮PCA识别出的异常点。
*
时序流量异常图:在原始的时间-包长序列上,分别用不同颜色叠加显示3-Sigma和K-Means算法识别出的异常点,直观展示算法的触发时刻。
6. 报告生成与评估 (Step 7)
最后,
generate_report 函数被调用。它接收各算法检测到的异常数量及模拟的“真值”索引,在命令行中打印结构化的文本报告。报告中包含模拟评估部分,计算了算法对注入异常数据的“捕获率”,验证系统的有效性。