ranisneha2846/Network_Intrusion_Detection_System

GitHub: ranisneha2846/Network_Intrusion_Detection_System

基于机器学习的网络入侵检测系统,通过在 NSL-KDD、CICIDS2017 和 KDD99 三个数据集上的跨数据集评估,系统比较了十余种算法的检测准确率与泛化能力。

Stars: 1 | Forks: 0

# 网络入侵检测系统 Black and Orange Aesthetic LinkedIn Banner 在当今互联互通的数字世界中,网络安全至关重要。入侵检测系统 (IDS) 旨在识别未经授权的访问尝试和恶意网络活动。传统的基于规则的 IDS 无法检测新型和不断演变的攻击模式,这使得机器学习方法成为现代网络安全的必备手段。 Black and Orange Aesthetic LinkedIn Banner (1) 现有的大多数 IDS 研究主要集中在单一数据集评估上——模型在同一个数据集(例如 NSL-KDD)上进行训练和测试。这种方法存在一个致命缺陷。 # 数据加载与检查 notebook 首先导入必要的库,并加载 NSL-KDD 的训练和测试数据集。 它执行了初步的数据探索,展示了数据集的形状和摘要统计信息,并检查了缺失值和重复项(未发现任何问题)。 注意到原始 NSL-KDD 数据中存在一个 difficulty 列,但随后被丢弃。 # 探索性数据分析 (EDA) 类别分布:可视化了训练集和测试集中 binary_label(正常与攻击)以及多分类 attack_type(DoS、Probe、R2L、U2R)的分布。attack_type 是通过自定义映射函数从 label 列派生而来的。 特征分布:使用柱状图和核密度估计 (KDE) 分析了 src_bytes、dst_bytes、service、protocol_type 和 flag 等关键特征的分布,以了解它们与正常流量和攻击流量之间的关系。 相关性分析:生成特征相关性热力图,以识别高度相关的特征。 服务与攻击类型分析:检查了服务(service 列)与攻击类型之间的关系,并可视化了哪些服务最常与攻击相关联。 # 数据预处理 特征编码:使用 LabelEncoder 对分类特征(protocol_type、service、flag)进行编码。 目标编码:创建了一个二元标签 (binary_label),其中正常映射为 0,所有攻击映射为 1。同时还基于 attack_type 创建了多分类目标 (attack_encoded)。 特征缩放:使用 StandardScaler 对数值特征进行标准化处理。 特征选择:用于建模的最终特征集包含 41 个数值特征,排除了 label、attack_type、binary_label、attack_encoded 和 difficulty。数据集被划分为训练集和验证集。 # 在 NSL-KDD 上的模型训练与评估 在 NSL-KDD 测试集上训练并评估了大量的机器学习模型。模型包括 Naive Bayes、Logistic Regression、Decision Tree、Random Forest、AdaBoost、KNN、LinearSVM、LightGBM、XGBoost 和 CatBoost。 性能指标:使用准确率 (Accuracy)、精确率 (Precision)、召回率 (Recall) 和 F1-Score 对模型进行评估。同时还测量了每个模型的训练时间。 最佳性能:CatBoost 在测试集上取得了最高的准确率 (80.67%),紧随其后的是 XGBoost (80.09%) 和 LightGBM (79.70%)。 过拟合检查:对训练和测试准确率的比较表明,许多模型,特别是基于树的模型(例如 Random Forest、Decision Tree、XGBoost),显示出明显的过拟合迹象,其训练准确率接近完美,但测试准确率却明显较低。CatBoost 的过拟合差距最小之一 (19.25%)。 # 在 CICIDS2017 上的跨数据集评估 对更大的 CICIDS2017 数据集抽取了 10% 的样本进行预处理,并用于跨数据集评估。 这些模型在 NSL-KDD 数据集上重新进行训练,并在预处理后的 CICIDS2017 样本上进行测试。 泛化性能:结果显示出了极佳的泛化能力,大多数模型的准确率超过 99%。XGBoost 和 LightGBM 分别取得了 99.89% 和 99.88% 的最高准确率。这与 NSL-KDD 的结果形成了鲜明对比,表明 CICIDS2017 数据集虽然更大,但可能包含更容易学习的模式,或者其特征集和类别分布存在显著差异。 # 在 KDD99 上的跨数据集评估 使用第三个数据集 KDD99 进行了进一步的跨数据集测试,该数据集在结构上与 NSL-KDD 非常相似。 在 NSL-KDD 上训练的模型在 KDD99 数据集上进行了测试。 近乎完美的准确率:大多数模型在 KDD99 上达到了接近完美或完美的准确率。XGBoost 和 Random Forest 达到了 100% 的准确率。这表明这些模型学习到的模式能够极好地泛化到来自同一数据源(原始的 KDD Cup 1999 数据集)的相似数据中。 # 结果与洞察 跨数据集比较:结果显示,当模型从 NSL-KDD 迁移到 CICIDS2017 时,性能出现了巨大的下降(例如,CatBoost 从 99.86% 下降到 80.67%),这表明模型对数据集之间数据分布的差异极其敏感。 同源泛化:相反,在 KDD99 上的高准确率验证了模型成功学习了 KDD'99 数据的底层模式,并且能够很好地泛化到来自同一分布的新样本。 模型比较:在所有数据集上,基于树的模型(XGBoost、LightGBM、Random Forest、CatBoost)始终优于线性模型(Logistic Regression、LinearSVM)和简单的 Naive Bayes 分类器,特别是在准确率和 F1-Score 方面表现尤为出色。
标签:逆向工具