Knowledge base

Knowledge base

Close

Кластеризация Spark

В данном примере рассматривается пример работы с платформой с применением функций Spark. Основная цель – провести кластеризацию (обучение без учителя), а также сформировать разметку, то есть разбить объекты на 2 класса, “0” и “1”. В данном примере обрабатываются данные о сетевом трафике, объектами являются сессии. Глобальная цель – обнаружить аномальные сессии, то есть решить задачу бинарной классификации. Цель пайплайна – разделить сессии на кластеры, а затем решить, какие кластеры являются аномальными. Сессии, попавшие в аномальный кластер, получат метку “1”, остальные – “0”. На выходе имеем размеченные данные, которые далее могут быть использованы для обучения.

  1. Загрузка входных данных:
    1. В левой части главного окна на панели вкладок Системы откройте вкладку «Данные». 
    2. Нажмите на кнопку «Загрузить» на верхней панели.
    3. В открывшемся окне нажмите на кнопку «Выбрать файлы» и укажите путь к заранее подготовленному файлу 1000_first_sessions.csv, в котором содержатся данные о сетевом трафике . Второй вариант – перенести файлы в этот раздел по технологии «drag n drop».

Выбранные файлы отобразятся в нижней части окна загрузки:

Отображение выбранного файла

  1. Нажмите на кнопку «Загрузить». Файл с входными данными отобразится в папке.
  2. Создание новой рабочей области
    1. Перейдите в  пункт меню системы Моделирование –> Рабочая область. На панели инструментов блок-схемы нажмите кнопку «Создание рабочей области» (кнопка ):

Создание новой рабочей области

  1. В открывшейся форме введите название новой рабочей области «Spark_Traffic» и нажмите кнопку «Создать»:

Ввод имени рабочей области

  1. На панели инструментов отобразится название созданной рабочей области.
  2. Добавление элемента «Запуск»:
    1. На панели инструментов блок-схемы нажмите кнопку «Добавить элемент» (кнопка )
    2. В открывшейся библиотеке графических элементов выберите элемент «Запуск» :

Возможные элементы блок схемы

  1. На рабочую область добавится элемент «Запуск»:

Блок Запуск

  1. Переименуйте элемент дважды кликнув на слово «Запуск», задайте новое название – «Кластеризация» и кликните в пустое место на рабочей области для сохранения.
  2. Добавление и настройка элемента «Источник данных».
    1. Добавьте на рабочую область элемент «Источник данных»:

Блок Источник данных

  1. Открытие настроек элемента. На элементе «Источник данных» нажмите на кнопку. Справа откроется панель настроек элемента, где будут отображаться созданные в разделе папки и файлы с табличными данными. 
  2. Выбор типа загрузки. Из списка выпадающих функций выберите «Загрузка табличных данных из файла csv Spark»
  3. Выбор данных для загрузки в блок-схему. Для того чтобы найти нужный файл, кликните на папку и перейдите в нее, выберите из списка файл, загруженный в Систему в шаге 1 «1000_first_sessopns.csv», нажмите на три точки в строке с ним и кликните «Выбрать». Внизу отобразится название выбранного файла:

Выбор файла

  1. Сохранение настроек элемента. На панели настроек элемента нажмите на кнопку «Сохранить» (далее сохранение настроек элемента предполагается по умолчанию).
  2. Ввод названия элемента. Чтобы задать название элемента нужно дважды щелкнуть левой кнопкой мыши на название элемента в рабочей области, и ввести нужное название в поле с названием, доступным для редактирования:

Блок источник данных

  1. Введите название «Загрузка Spark CSV (file)» и кликните на пустое место на рабочей области для сохранения.
  2. Установка соединений. Соедините выходную точку элемента «Запуск» с входной точкой элемента «Источник данных» с помощью левой кнопка мыши:

Соединение элементов Запуск и Источник данных

  1. Выбор признаков и целевых признаков. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» ->  функция «Выбор признаков и целевых признаков». 
    2. В поле «Признаки» укажите: поочередно следующие признаки, нажимая Enter после ввода каждого: source_ip, destination_ip, source_port, destination_port, bytes, packages_count. Или вы можете найти в списке исходный файл 1000_first_sessions.csv, нажать на три точки в строке с его названием и кликнуть «Выгрузить признаки», тогда система автоматически заполнит поле «Признаки» всем вариантами из датасета и вам останется только убрать лишние.

Параметры блока «Выбор признаков и целевых признаков»

  1. На панели настроек элемента нажмите на кнопку «Сохранить».
  2. Измените название элемента на «Выбор признаков».
  3. Соедините с элементы:

Рисунок 15.5.11 – Соединение элементов Источник данных и Выбор признаков

  1. Порядковое кодирование признаков. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» ->  группа «Препроцессинг» -> функция «Порядковое кодирование признаков». 
    2. В поле «Выбранные признаки» вместе с квадратными скобками введите следующие признаки, нажимая Enter после ввода каждого: source_ip, destination_ip, source_port, destination_port. Или вы можете найти в списке исходный файл 1000_first_sessions.csv, нажать на три точки в строке с его названием и кликнуть «Выгрузить признаки», тогда система автоматически заполнит поле «Признаки» всем вариантами из датасета и вам останется только убрать лишние:

Параметры блока «Порядковое кодирование»

  1. На панели настроек элемента нажмите на кнопку «Сохранить».
  2. Измените название элемента на «Label encoder».
  3. Соедините с элементы:

Соединение элементов Выбор признаков и Label encoder

  1. Нормализация признаков. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» ->  группа «Препроцессинг» -> функция «Нормализация признаков». 
    2. На панели настроек элемента нажмите на кнопку «Сохранить».
    3. Измените название элемента на «Нормализация».
    4. Соедините с элементы:

Соединение элементов Label encoder и Нормализация

  1. Кластеризация Spark DBSCAN. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» ->  группа «Кластеризация» -> функция «Кластеризация Spark DBSCAN». 
    2. В поле «Порог для отнесения кластера к аномалиями» укажите: 100.
    3. В поле «Радиус» укажите: 0,1.
    4. В поле «Число соседей» укажите: 4.
    5. В поле «Метрика расстояния» из выпадающего списка выберите: «Евклидово»
    6. Установите галочку для параметра «Флаг векторизации признаков».
    7. В поле столбец для группировки перед векторами впишите: session_id

Параметры блока «Кластеризация Spark DBSCAN»

  1. На панели настроек элемента нажмите на кнопку «Сохранить».
  2. Измените название элемента на «Кластеризация Spark DBSCAN».
  3. Соедините с элементы:

Соединение элементов Нормализация и Кластеризация Spark DBSCAN

  1. Сохранение датасета Spark. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» -> функция «Сохранение датасета Spark в СSV»
    2. В поле «Путь до директории для датасета» укажите название папки в разделе «Данные», куда будет сохраняться датасет
    3. В поле «Название датасета» пропишите вручную необходимое наименование, например, dataset_after_dbscan
    4. Не ставьте галочку для параметра «Добавить данные к датасету»
    5. Сохраните настройки
    6. Измените название блока на  «Датасет в CSV»
  2. Сохранение модели Spark. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» -> функция «Сохранение модели Spark»
    2. В поле «Название» пропишите вручную необходимое наименование, например, DBSCAN_spark_model:

Параметры блока «Сохранение модели Spark»

  1. Сохраните настройки
  2. Измените название блока на «Сохранение модели DBSCAN»
  1. Сохранение датасета Spark. Чтобы в загруженном датасете выделить признаки и целевые признаки нужно добавить на рабочую область элемент «Процесс» и настроить его:
    1. На панели свойств элемента выбрать из списка функцию: тип функции «Spark» -> функция «Сохранение датасета Spark в CSV»
    2. В поле «Путь до директории для датасета» укажите название папки в разделе «Данные», куда будет сохраняться датасет
    3. В поле «Название датасета» пропишите вручную необходимое наименование, например, dataset_with_anomalies_after_dbscan
    4. Не ставьте галочку для параметра «Добавить данные к датасету»
    5. Сохраните настройки
    6. Измените название блока на  «Датасет в CSV (аномалии)»
  2. Соединение элементов. Соедините элементы, созданные в пункте 9, 10 и 11 следующим образом:

Соединение элементов Кластеризация Spark DBSCAN и блоков сохранения

  1. Запуск пайплайна. Чтобы запустить блок схему нажмите на кнопку на первом элементе «Запуск» собранной блок-схемы. При этом отображение элемента «Запуск» изменится и появится опция Сформировать отчет:

Блок Запуск

Если активировать параметр «Сформировать отчет», в результате запуска пайплайна будет создан отчет. 

  1. Визуализация результатов. После того как все элементы схемы будут успешно обработаны, на панели инструментов появляются кнопки:

Вы должны увидеть следующие визуализации:

  1. График «Spark DBSCAN». Этот график позволяет построить диаграмму рассеяния для трех и более пар признаков. Чем больше размер точек или пузырей на диаграмме – тем больше взаимосвязь между признаками. График можно удалять, приближать и т д:

График Spark DBSCAN

  1. График «Объем кластеров». Круговая диаграмма показывает объем кластеров – т.е. сколько % объектов входит в каждый отдельный кластер. Имена кластеров сортируются в зависимости от их веса в общем проценте. Так в нашем примере большинство объектов попали в кластер -1 и составили 96,1%:

График Объем кластеров

  1. Таблица «Датасет 1000_first_sessions.csv». Это исходный датасет, загруженный в качестве источника данных:

Таблица Датасет 1000_first_sessions.csv

  1. Таблица «Количество объектов в каждом кластере». Данная таблица показывает, сколько объектов попало в разные кластеры:

Таблица «Количество объектов в каждом кластере»

  1. Таблица «Датасет dataset_after_dbscan» отображает преобразованный датасет, где содержатся данные по кластеризации:

Таблица «Датасет dataset_after_dbscan»

  1. Сохранение файлов в раздел данные. В результате отработки блок схемы в разделе «Данные» должны появится слеюущие папки:
  2. dataset_after_dbscan, в которой отобразится сохраненный датасет в формате .csv. Остальные файлы являются системными 

Папка с сохраненным датасетом в разделе Данные

  1. dataset_with_anomalies_after_dbscan, в которой отобразится сохраненный датасет в формате .csv. Остальные файлы являются системными:

Папка с сохраненным датасетом в разделе Данные

In this article: