В блокноте SR-BH 2020.ipynb приведено исследование набора данных и реализация подхода по классификации веб-атак, описанном в статье A new multi-label dataset for Web attacks CAPEC classification using machine learning techniques
Набор данных может быть получен по ссылке: SR-BH 2020 multi-label dataset
В блокноте производится:
- Чтение набора данных
- Его предварительная обработка
- удаление дубликатов и пустых строк
- приведение типов данных для экономии памяти
- Реализация метода оцифровки HTTP-трафика, описанного в указанной статье
- Анализ оцифрованных данных
- построение гистограмм признаков в разбивке по классу "Норма"/"Атака"
- построение сводных таблиц со статистикой
- проверка гипотез о равенстве средних по выборкам нормы и атаки
- Предобработка данных: логарифмирование признаков и масштабирование (StandardScaler)
- Построение ряда бинарных классификаторов для классификации на норму и атаку с разными данными: сырыми, логарифмированными, сырыми масштабированными, логарифмированными масштабированными (на всех доступных признаках):
- K-NN
- Decision Tree
- Random Forest
- Logistic regression
- SGD
- Отбор наиболее информативных признаков
- Использование отобранных в статье признаков
- Отбор признаков с помощью рекурсивного устранения признаков с кросс-валидацией (RFECV)
- Сравнение качества построенных классификаторов по accuracy, precision и recall
- Построение двух двумерных t-SNE представлений данных (с количеством итераций 1000 и 500)
Эксперименты реализованы программно в среде Jupyter Notebook на Python 3 с применением библиотек Pandas, Numpy, Scikit-learn, Matplotlib, Seaborn, Scipy.