Celem projektu jest analiza zachowań ruchu sieciowego i wykrywanie ataków przy użyciu klasycznych metod machine learning.
Projekt został wykonany na bazie rzeczywistego zbioru CICIDS2017, zawierającego:
- obserwacje normalnego ruchu,
- ataki DDoS, DoS, Brute Force, Infiltration, Botnet, Web Attacks,
- ponad 80 cech numerycznych.
- CICIDS2017 – Canadian Institute for Cybersecurity
- Link: https://www.kaggle.com/datasets/cicdataset/cicids2017
Ten projekt stanowi kompletną analizę zbioru CICIDS2017, obejmującą:
- przygotowanie danych,
- eksplorację i analizę statystyczną,
- klasyfikację ataków (XGBoost, Drzewo Decyzyjne),
- redukcję wymiarów (PCA),
- analizę klasteryzacji (KMeans, MiniBatchKMeans, GMM, BIRCH),
- wizualizacje oraz wnioski.
cicids2017-ml-classification/
├── README.md
├── requirements.txt
├── LICENSE
├── src/
│ └── clustering-and-classification-attack-types.ipynb
└── data/
└── data
| Kod | Etykieta |
|---|---|
| 0 | BENIGN |
| 1 | Bot |
| 2 | DDoS |
| 3 | DoS GoldenEye |
| 4 | DoS Hulk |
| 5 | DoS Slowhttptest |
| 6 | DoS slowloris |
| 7 | Heartbleed |
| 8 | Infiltration |
| 9 | PortScan |
W projekcie użyto:
- XGBoost
- Drzewo decyzyjne
XGBoost - błędne klasyfikacje:
| Prawdziwa klasa ↓ | Predykcja → | Liczba błędów |
| ----------------- | ---------------- | ------------- |
| **BENIGN** | 1 (Bot) | 32 |
| | 2 (DDoS) | 8 |
| | 3 (DoS GE) | 2 |
| | 4 (DoS Hulk) | 81 |
| | 5 (Slowhttptest) | 11 |
| | 6 (slowloris) | 8 |
| | 9 (PortScan) | 65 |
| **Bot** | 0 (BENIGN) | 61 |
| **DDoS** | 0 (BENIGN) | 12 |
| | 5 (Slowhttptest) | 1 |
| **DoS GoldenEye** | 0 (BENIGN) | 3 |
| | 4 (DoS Hulk) | 2 |
| **DoS Hulk** | 0 (BENIGN) | 35 |
| | 2 (DDoS) | 2 |
| | 3 (DoS GE) | 1 |
| | 9 (PortScan) | 1 |
| **Slowhttptest** | 0 (BENIGN) | 21 |
| | 3 (DoS GE) | 20 |
| **slowloris** | 0 (BENIGN) | 11 |
| | 4 (DoS Hulk) | 1 |
| **Heartbleed** | 0 (BENIGN) | 5 |
| | 6 (slowloris) | 1 |
| **Infiltration** | 0 (BENIGN) | 1 |
| **PortScan** | 0 (BENIGN) | 5 |
| | 3 (DoS GE) | 4 |
Drzewo decyzyjne - błedne klasyfikacje:
| Prawdziwa klasa ↓ | Predykcja → | Liczba błędów |
| ----------------- | ------------ | ------------- |
| **BENIGN** | 1 (Bot) | 32 |
| | 2 (DDoS) | 2 |
| | 3 (DoS GE) | 8 |
| | 4 (DoS Hulk) | 26 |
| | 5 (Slowhttp) | 11 |
| | 6 (slowl.) | 8 |
| | 9 (PortScan) | 64 |
| **Bot** | 0 (BENIGN) | 32 |
| **DDoS** | 0 (BENIGN) | 3 |
| | 1 (Bot) | 1 |
| | 4 (DoS Hulk) | 1 |
| **DoS GoldenEye** | 0 (BENIGN) | 3 |
| | 5 (Slowhttp) | 2 |
| **DoS Hulk** | 0 (BENIGN) | 15 |
| | 2 (DDoS) | 2 |
| | 3 (DoS GE) | 1 |
| | 9 (PortScan) | 1 |
| **Slowhttptest** | 0 (BENIGN) | 9 |
| **slowloris** | 0 (BENIGN) | 3 |
| | 4 (DoS Hulk) | 1 |
| **Heartbleed** | 6 (slowl.) | 1 |
| **Infiltration** | 0 (BENIGN) | 1 |
| **PortScan** | 0 (BENIGN) | 4 |
| | 3 (DoS GE) | 4 |
---
Testowane algorytmy:
- KMeans
- MiniBatchKMeans
- Gaussian Mixture Models (GMM)
- BIRCH
Główną różnicą pomiędzy klasyfikacją a klasteryzacją jest typ uczenia:
- Klasyfikacja jest zadaniem uczenia nadzorowanego, gdzie proces uczenia odbywa się na podstawie danych uczących z etykietami lub prawidłowymi odpowiedziami.
- Klasteryzacja jest zadaniem uczenia nienadzorowanego, co oznacza, że nie ma dostępnych etykiet ani prawidłowych odpowiedzi w danych uczących. Celem klasteryzacji jest odkrycie struktury ukrytej w danych poprzez grupowanie podobnych obiektów.
Ponadto:
- XGBoost jest zdecydowanie najlepszym modelem dla CICIDS2017.
- Drzewo decyzyjne zachowuje się świetnie na niektórych próbkach (nawet 0.99 accuracy), ale znacznie gorzej na innych → podatność na overfitting.
- Klasteryzacja wykazuje realne segmenty ruchu (silhouette ~0.77 dla KMeans).
- Dane wymagają intensywnego czyszczenia (odstające wartości, brakujące dane).
- Pobierz plik src/clustering-and-classification-attack-types
- Otwórz plik w Google Colab
- Pobierz plik z danymi (link w folderze data/data)
- Przejdź do Google Colab w przeglądarce
- Otwórz plik clustering-and-classification w Colabie
- Wgraj plik z wcześniej pobranymi danymi
- Skompiluj komórki
- Wyniki zostaną wyświetlone poniżej kompilowanych komórek
-
Notebook zawiera również komórki robocze, fragmenty eksperymentów oraz kod, który nie został uporządkowany po zakończeniu projektu.
Zostały one pozostawione celowo, aby pokazać pełny proces pracy i analizę modeli. -
Kompilacja całego notebooka może być czasochłonna.
Ze względu na dużą liczbę rekordów w zbiorze CICIDS2017 (ponad 2.8 mln), pełne wykonanie kodu może trwać od kilkunastu minut do nawet godziny, w zależności od wydajności komputera.






