sahibjitk562000-del/CMP7239-Cyber-Threat-Intelligence
GitHub: sahibjitk562000-del/CMP7239-Cyber-Threat-Intelligence
利用六种机器学习与深度学习算法对全球网络威胁情报数据集进行二分类预测与模型性能对比的课程项目。
Stars: 0 | Forks: 0
# 使用机器学习进行网络威胁情报分类
## 📌 概述
此代码仓库包含了 CMP7239 应用机器学习课程作业的完整实现。该项目侧重于使用 4 种经典机器学习算法和 2 种深度学习架构对网络威胁情报数据进行分类,以从基于 IP 的情报源中预测关键威胁。
**学生:** Sahibjit Kuar
**学号:** 25198619
**模块:** CMP7239 - 应用机器学习
**模块导师:** Mohamed Ragab
**学年:** 2025-26
## 🎯 项目目标
- 预处理和分析全球网络威胁情报数据集
- 实现 4 种经典 ML 算法:Decision Tree、Random Forest、KNN、SVM
- 实现 2 种深度学习模型:MLP、CNN
- 使用 Accuracy、Precision、Recall、F1-Score 和 ROC-AUC 评估并比较所有 6 种模型
- 分析实时应用中性能与推理时间之间的权衡
- 确定最适合实际部署的模型
## 📊 数据集
**2026 年全球网络威胁情报数据集**
- **来源:** Kaggle
- **记录数:** 10,000
- **特征:** 16 列,包括:
- `ip_address`:IPv4/IPv6 地址
- `abuse_confidence_score`:置信度分数 (0-100)
- `country_code`、`country_name`、`continent`:地理特征
- `reported_hour`、`reported_weekday`:时间特征
- `risk_level`、`severity`:风险指标
- `is_critical`:目标变量(二分类)
📁 **数据集位置:** `data/Cyber_Threat_Intelligence_final_kaggle_cyber_dataset.csv`
## 🤖 已实现的算法
### 经典机器学习(4 种模型)
| 算法 | 类型 | 主要优势 |
|-----------|------|---------------|
| **Decision Tree** | 可解释型 | 人类可读的规则,推理速度快 |
| **Random Forest** | 集成方法 | 鲁棒性强,可提供特征重要性 |
| **KNN** | 基于实例 | 局部模式检测 |
| **SVM** | 基于核函数 | 对高维数据有效 |
### 深度学习(2 种模型)
| 算法 | 类型 | 主要优势 |
|-----------|------|---------------|
| **MLP** | 神经网络 | 复杂非线性模式 |
| **CNN** | 一维卷积 | 结构化数据中的模式识别 |
📊 结果摘要
模型 准确率 (Accuracy) 精确率 (Precision) 召回率 (Recall) F1-Score ROC-AUC 测试时间 (s)
Decision Tree 0.964 0.955 1.000 0.977 0.967 0.0000
Random Forest 0.964 0.955 1.000 0.977 0.967 0.0383
KNN 0.964 0.955 1.000 0.977 0.938 0.5566
SVM 0.964 0.955 1.000 0.977 0.967 0.2690
MLP 0.964 0.955 1.000 0.977 0.967 0.0111
CNN 0.961 0.951 1.000 0.975 0.964 1.3000
主要发现
🏆 总体最佳:Decision Tree(F1-Score 97.7%)
⚡ 最快:Decision Tree(测试时间 <0.001s)
🎯 所有模型的准确率均达到 >96%
📍 地理特征(country_code, continent)是最重要的预测因子
📈 输出文件
模型(保存在 models/ 文件夹中)
文件 描述
decision_tree.pkl 训练好的 Decision Tree 模型
random_forest.pkl 训练好的 Random Forest 模型
knn.pkl 训练好的 KNN 模型
svm.pkl 训练好的 SVM 模型
mlp.pkl 训练好的 MLP 模型
cnn_model.h5 训练好的 CNN 模型
可视化图表(保存在 images/ 文件夹中)
文件 描述
univariate_analysis.png 显示特征分布的 6 个图表
continent_severity.png 大洲与严重程度的堆叠条形图
correlation_matrix.png 数值特征相关性热力图
feature_importance.png 按 F-score 排序的前 15 个特征
model_comparison.png 比较所有模型的条形图
testing_time_comparison.png 对数刻度的测试时间比较
confusion_matrices.png 所有 6 种模型的混淆矩阵
roc_curves.png 带有 AUC 值的 ROC 曲线
cnn_training_history.png CNN 训练和验证曲线
结果(保存在 results/ 文件夹中)
文件 描述
model_comparison.csv 完整的性能指标表
final_summary.csv 最佳模型和最快模型摘要
🛠️ 使用的技术
技术 用途
Python 3.11 编程语言
pandas 数据处理和分析
NumPy 数值计算
matplotlib 数据可视化
seaborn 统计可视化
scikit-learn 机器学习算法和评估
TensorFlow/Keras 深度学习实现
joblib 模型序列化
📝 关键代码特性
数据预处理
删除了不相关的列(ip_address, last_reported_at, reported_date, label)
特征工程:is_weekend
对有序变量(risk_level, reported_weekday)进行 Label Encoding
对名义变量(country_code, country_name, continent, time_zone_attack)进行 One-Hot Encoding
使用 SelectKBest 进行特征选择(选择了 15 个特征)
模型训练
为所有模型提供标准化的评估函数
采用分层抽样的 80/20 训练-测试集划分
使用 StandardScaler 进行特征归一化
5 折交叉验证
手动超参数调优
评估
Accuracy、Precision、Recall、F1-Score、ROC-AUC
混淆矩阵
测量实时应用的测试时间
🔬 未来工作
类别不平衡:应用 SMOTE 处理 75.87% / 24.13% 的类别分布
超参数优化:使用贝叶斯优化代替手动网格搜索
替代目标:探索将 risk_level 和 abuse_confidence_score 作为目标变量
集成方法:创建表现最佳模型的 Stacking 集成模型
实时部署:在生产 SIEM 环境中测试 Decision Tree 模型
📚 参考文献
完整的参考文献列表可在随附报告中找到。主要参考文献包括:
Al-Omari et al. (2021) - An Intelligent Tree-Based Intrusion Detection Model
Alrashdi et al. (2019) - AD-IoT: Anomaly Detection of IoT Cyberattacks
Maseer et al. (2021) - Benchmarking of ML for Anomaly Based IDS
Rashad et al. (2026) - Enhancing Human-AI Trust in Cyber Threat Intelligence
Zarpelão et al. (2017) - A survey of intrusion detection in IoT
标签:Apex, Python, 代码示例, 威胁情报分类, 数据分析, 无后门, 机器学习, 深度学习, 逆向工具