Ce dépôt contient l'implémentation et l'évaluation de différentes méthodes d'apprentissage automatique pour la détection d'intrusions réseau sur trois datasets de référence : KDD CUP, UNSW-NB15 et CICIDS2018.
L'objectif de ce projet est d'évaluer et de comparer l'efficacité de différentes approches de machine learning pour la détection d'intrusions réseau:
- Entraînement classique avec des algorithmes standards
- Optimisation des hyperparamètres avec Hyperopt
- Méthodes d'apprentissage en contexte (In-Context Learning) avec TabPFN et TabICL
Chaque méthode est testée sur trois datasets différents avec plusieurs seeds pour garantir la robustesse des résultats.
- Benchmark classique pour la détection d'intrusion
- Évaluations avec 10 seeds différentes
- Dataset moderne contenant des trafics réseau normaux et d'attaque
- Évaluations sur 4 fichiers différents avec 5 seeds pour chacun
- Dataset récent couvrant diverses catégories d'attaques
- Évaluations sur 10 fichiers différents avec 5 seeds pour chacun
- Tests supplémentaires de prévision de séries temporelles (régression)
Pour chaque dataset, nous avons appliqué trois phases d'expérimentation:
-
Entraînement classique
- Utilisation d'algorithmes standards de machine learning
- Évaluation des performances de base
-
Optimisation des hyperparamètres
- Utilisation de Hyperopt pour optimiser les modèles
- Recherche automatisée des meilleurs hyperparamètres
-
Méthodes ICL (In-Context Learning)
- Implémentation de TabPFN (Prior-Data Fitted Networks)
- Implémentation de TabICL (Tabular In-Context Learning)
- Évaluation des performances sans entraînement explicite
-
Tâche de régression
- Prévision de séries temporelles sur CICIDS2018
- Métriques de performance spécifiques à la régression
- KDD CUP: 10 seeds × 3 phases (entraînement, hyperopt, TabPFN/TabICL)
- UNSW-NB15: 5 seeds × 4 fichiers × 3 phases
- CICIDS2018: 5 seeds × 10 fichiers × 3 phases + tâche de régression
├── core/
│ ├── kdd_cup/
│ │ ├── classic_training/
│ │ ├── hyperopt_optimization/
│ │ ├── icl_methods/
│ │ │ ├── tabpfn/
│ │ │ └── tabicl/
│ │ └── results/
│ ├── unsw_nb15/
│ │ ├── classic_training/
│ │ ├── hyperopt_optimization/
│ │ ├── icl_methods/
│ │ │ ├── tabpfn/
│ │ │ └── tabicl/
│ │ └── results/
│ ├── cicids2018/
│ │ ├── classic_training/
│ │ ├── hyperopt_optimization/
│ │ ├── icl_methods/
│ │ │ ├── tabpfn/
│ │ │ └── tabicl/
│ │ ├── time_series/
│ │ └── results/
│ └── notebooks/
│ ├── kdd_cup.ipynb
│ ├── unsw_nb15.ipynb
│ └── cicids2018.ipynb
└── preprocessor/
├── kdd_preprocessor.py
├── unsw_preprocessor.py
├── cicids_preprocessor.py
├── utils.py
└── visualization.py
# Cloner le dépôt
git clone https://github.com/Pispros/training-on-ids-dataset
cd training-on-ids-dataset
# Installer les dépendances
pip install -r requirements.txt
# Exécuter les notebooks
jupyter notebook notebooks/Les notebooks Colab contiennent l'implémentation complète et les résultats des expériences:
- Résumé des performances sur 10 seeds
- Comparaison entre les approches classiques et ICL
- Résultats sur les 4 fichiers différents
- Impact de l'optimisation des hyperparamètres
- Performances à travers les 10 fichiers
- Analyse des résultats de prévision de séries temporelles
- Python
- Scikit-learn
- Hyperopt
- TabPFN
- TabICL
- Pandas, NumPy
- Matplotlib, Seaborn