Перейти к содержанию

Отчет о ходе выполнения проекта: «Технический аудит, предобработка и визуализация набора данных 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 для приведения выборки к математически корректному виду:

  1. Замена и удаление некорректных значений:
import numpy as np
import pandas as pd

# Перевод бесконечных значений в категорию стандартных пропусков (NaN)
df.replace([np.inf, -np.inf], np.nan, inplace=True)

# Безвозвратное удаление строк, содержащих пропуски
df.dropna(inplace=True)
  1. Коррекция типов данных: Принудительное преобразование признаков к корректным типам float64 и int64 с предварительной фильтрацией и удалением текстовых дубликатов заголовков утилиты CICFlowMeter.
  2. Фильтрация признаков: Извлечение и удаление столбцов с единственным уникальным значением (df[col].nunique() <= 1) для снижения размерности пространства признаков и предотвращения переобучения модели.

Этап 8. Построение аналитических графиков и визуализация распределений

  • Содержание работ: Реализация графического анализа обработанных данных с использованием библиотек matplotlib и seaborn для подтверждения качества проведенной очистки.
  • Технические результаты:
  • Построение гистограмм распределения числовых метрик для оценки асимметрии и эксцесса распределений.
  • Создание диаграмм размаха («ящиков с усами») для детекции и изолирования экстремальных статистических выбросов.
  • Построение матрицы корреляции (Heatmap) для выявления мультиколлинеарных признаков, подлежащих исключению перед этапом обучения.
  • Визуализация соотношения классов (легитимный трафик / атака) для оценки степени дисбаланса целевой переменной.