Отчет о ходе выполнения проекта: «Технический аудит, предобработка и визуализация набора данных CSE-CIC-IDS2018»
Этап 1. Инициализация и настройка удаленного репозитория GitHub
- Содержание работ: Создание удаленного репозитория
Nikita7291/datasetна платформе GitHub для обеспечения совместного доступа и строгого контроля версий исходного кода и документации. - Технические результаты: Инициализация структуры проекта, создание конфигурационного файла
.gitignoreдля фильтрации временных файлов среды Python/Jupyter Notebook, выполнение первичного коммита базовой архитектуры в веткуmain.
Этап 2. Подключение участников и разграничение прав доступа
- Содержание работ: Организация распределенной среды совместной разработки. Добавление участников инженерной команды в репозиторий с предоставлением прав на внесение изменений (Collaborators).
- Технические результаты: Настройка политики ветвления, разграничение зон ответственности при параллельном ведении аналитической и программной частей проекта.
Этап 3. Развертывание и автоматизация статического сайта MkDocs
- Содержание работ: Развертывание генератора статических сайтов MkDocs для ведения интерактивной проектной документации. Проектирование конфигурационного файла
mkdocs.yml, определение структуры навигационного меню (nav) и выбор визуальной темы оформления. - Технические результаты: Настройка автоматического CI/CD конвейера через GitHub Actions. Создание конфигурационного сценария по пути
.github/workflows/ci.yml. Конвейер автоматически отслеживает коммиты в веткуmain, выполняет синтаксический анализ и компиляцию Markdown-файлов из директорииdocs/в валидный HTML-код, после чего осуществляет деплой собранного статического контента в служебную веткуgh-pagesдля обновления сайта на сервере GitHub Pages.
Этап 4. Изучение структуры и спецификации исходного датасета
- Содержание работ: Исследование архитектуры эталонного набора данных сетевой безопасности CSE-CIC-IDS2018. Оценка общего объема выборки, структуры распределения трафика и механизмов формирования сетевых метрик, сгенерированных утилитой CICFlowMeter при перехвате пакетов.
- Технические результаты: Формирование понимания природы целевой переменной
Label(дифференциация легитимного трафикаBenignи различных категорий сетевых атак) и структуры 80 исходных признаков.
Этап 5. Статистический анализ и профилирование признаков
- Содержание работ: Первичное профилирование данных средствами библиотек
pandasиnumpy. Применение методовdf.info()иdf.describe()для вычисления базовых статистических метрик (среднее значение, медиана, стандартное отклонение, минимумы, максимумы и квантили). - Технические результаты: Определение типов данных в столбцах, выявление признаков с аномально высокой дисперсией, фиксация столбцов, содержащих нечисловые артефакты в непрерывных величинах.
Этап 6. Идентификация критических дефектов и аномалий в данных
В ходе глубокого технического аудита структуры данных были локализованы и классифицированы следующие критические дефекты, искажающие математический аппарат моделей машинного обучения (в частности, алгоритма Random Forest):
- Пропущенные значения (NaN): Наличие незаполненных записей сетевых потоков, возникших вследствие технических сбоев при агрегации трафика.
- Бесконечные значения (
inf/-inf): Математические артефакты деления на ноль при вычислении скоростных характеристик (в признакахFlow Packets/sиFlow Bytes/s), возникающие в случаях, когда длительность потока равна нулю (Flow Duration = 0). - Ошибки типов данных: Неверная интерпретация числовых столбцов как текстовых (
object) из-за присутствия строк-заголовков, многократно продублированных внутри датасета при склейке исходных CSV-файлов. - Константные признаки: Столбцы с нулевой дисперсией (содержащие одно и то же значение во всех строках выборки), не несущие полезной информации для обучения классификаторов.
Этап 7. Программное устранение аномалий (Data Cleaning Pipeline)
Разработка и применение конвейера очистки данных на языке Python для приведения выборки к математически корректному виду:
- Замена и удаление некорректных значений:
import numpy as np
import pandas as pd
# Перевод бесконечных значений в категорию стандартных пропусков (NaN)
df.replace([np.inf, -np.inf], np.nan, inplace=True)
# Безвозвратное удаление строк, содержащих пропуски
df.dropna(inplace=True)
- Коррекция типов данных: Принудительное преобразование признаков к корректным типам
float64иint64с предварительной фильтрацией и удалением текстовых дубликатов заголовков утилиты CICFlowMeter. - Фильтрация признаков: Извлечение и удаление столбцов с единственным уникальным значением (
df[col].nunique() <= 1) для снижения размерности пространства признаков и предотвращения переобучения модели.
Этап 8. Построение аналитических графиков и визуализация распределений
- Содержание работ: Реализация графического анализа обработанных данных с использованием библиотек
matplotlibиseabornдля подтверждения качества проведенной очистки. - Технические результаты:
- Построение гистограмм распределения числовых метрик для оценки асимметрии и эксцесса распределений.
- Создание диаграмм размаха («ящиков с усами») для детекции и изолирования экстремальных статистических выбросов.
- Построение матрицы корреляции (Heatmap) для выявления мультиколлинеарных признаков, подлежащих исключению перед этапом обучения.
- Визуализация соотношения классов (легитимный трафик / атака) для оценки степени дисбаланса целевой переменной.