Баннер мобильный (1) Пройти тест

Как выявить кибератаки с помощью машинного обучения: кейс победителей «Межгалактического хакатона»

Рассказывают студенты онлайн-магистратуры «Инженерия машинного обучения»

Кейс

7 мая 2024

Поделиться

Скопировано
Как выявить кибератаки с помощью машинного обучения: кейс победителей «Межгалактического хакатона»

Содержание

    Прийти к удачному решению можно, даже когда кажется, что задача невыполнима. Это доказали студенты магистерской программы «Инженерия машинного обучения», которые лучше всех справились с непростым заданием по отражению кибератак на водоочистительную систему. Они делятся опытом участия в хакатоне, рассказывают, с какими сложностями пришлось столкнуться и как учеба в магистратуре помогла им решить задачу.

    Что за хакатон?

    Мы вместе с УрФУ и МИСиС провели совместный 8-дневный хакатон на кейсах от партнеров, в том числе от «Уральского центра систем безопасности» и РЖД. Это был первый турнир, который объединил студентов сразу трех направлений: онлайн-магистратур МИСиС «Науки о данных» и УрФУ «Инженерия машинного обучения» и курсов по Data Science в SkillFactory. Всего в хакатоне приняли участие 15 команд. Они решали актуальные задачи на реальных или приближенных к реальным датасетах от партнеров.

    Задача: повысить безопасность водоочистительного завода

    Нам предложили кейс от «Уральского центра систем безопасности». Сингапурский университет смоделировал стенд, в точности повторяющий работу реального завода по очистке воды. В течение 11 дней работы стенда собирались данные о состоянии всех процессов. В последние четыре дня стенд подвергался двум типам атак: кибератакам через компьютерную сеть и намеренному выводу из строя некоторых физических компонентов. Исходный датасет включал в себя информацию о состоянии оборудования и характеристиках очищаемой воды, сетевой трафик и вручную размеченные моменты атак.

    Мы должны были научиться определять атаки для тестового набора данных, используя инструменты машинного обучения. Мы могли использовать статью с подробным описанием исходного набора данных как справочный материал.

    Перед нами стояли две задачи. Самая простая — «научить» модель на примере размеченных данных правильно предсказывать атаки. Заранее мы не готовились, потому что не знали, что именно нас ждет. Мы изучили всю вводную информацию, посмотрели, как проходили предыдущие хакатоны. В день старта нам объявили только первую часть задачи.

    Мы сделали ее в тот же день: прочитали статью с описанием данных, выяснили, как именно они собирались, поработали с датасетом. Мы проверили и удалили столбцы с отсутствующими или единичными значениями, перевели данные из object в другой формат, удалили дублирующиеся строки, привели некоторые значения к бинарному числовому виду. Все это необходимо, чтобы программам анализа было комфортнее работать с данными.

    На следующий день с нами связались организаторы и сообщили о втором, более сложном задании. Теперь от нас требовалось обучить модель предсказывать возможные атаки на данных без разметок, то есть совсем с нуля. Итоговая модель должна предсказывать, в какой момент совершается атака, а в какой нет.

    Как мы пришли к решению

    Мы применили два метода проверки гипотез: обучение модели с учителем, что решило первую часть задачи, и обучение без учителя, что решило вторую часть задачи. В первом случае создали 10 моделей, из которых эффективность показали три: логистическая регрессия, гауссово распределение и дерево решений. По итогам проверки лучше всего себя проявил метод дерева решений — показатель точности предсказания модели составил 0,999.

    Вторая часть задачи свелась к поиску аномалий — выбросов из исходного датасета. Нам нужно было подобрать модель, которая отмечала бы ситуации, не вписывающиеся в нормальный алгоритм работы оборудования. Эффективнее всего с поиском таких аномалий справляются нейронные сети. Тут и была главная сложность: эту тему мы не успели пройти в магистратуре, а значит, и опыта работы с подобными сетями не было.

    Мы взяли готовую модель — самостоятельно сделать ее мы бы не смогли. Фактически мы круглосуточно искали готовую подходящую библиотеку, нашли, запустили ее, увидели, что результат неплохой, и попытались развить ее: изменяли данные, увеличивали датасет, подбирали параметры, чтобы добиться улучшения итоговой модели. Мы работали с репозиторием нейронной сети инкодера PyOD. Он предлагает вводить настройки вручную, поэтому можно настроить подбор оптимальных гиперпараметров и улучшить предсказательную способность модели.

    Когда мы смотрели на доску Miro, где были видны составы других команд, то видели, что в них были уже опытные программисты. При этом в какой-то момент мы заметили, что только наша команда справилась с решением второй части задания. Тогда и появилась надежда на победу. Надо сказать, что все команды хорошо общались между собой, вложили много усилий, отменили учебу и личные дела; кто-то даже не пошел на выпускной.

    Учеба в онлайн-магистратуре УрФУ «Инженерия машинного обучения» помогла разобраться с заданием на хакатоне. В магистратуре мы проходили обработку данных, теоретические основы машинного обучения, работу с моделями в Colab — программе, позволяющей писать и запускать код в браузере, — учились настраивать параметры в репозиториях, узнавали, что такое метрики качества, регрессии, кластеризация. Курсы Андрея Созыкина по программной инженерии и проджект-менеджменту очень пригодились при выполнении задания, несмотря на то что мы столкнулись с задачей более высокого уровня.

    Советы тем, кто хочет участвовать в хакатонах

    • Настройтесь на то, что участие отнимает много времени: личные дела придется временно отодвинуть на второй план. Участникам приходится разбираться в датасетах, выяснять, почему модели не работают, прогнозировать способы их улучшения.
    • Готовьтесь к экспериментам: настройку всех наиболее удачных параметров можно делать вручную. Для этого понадобятся не только знания, но и фантазия.
    • Любите математику. В основе каждого решения — типовые математические операции, которые нужно комбинировать и развивать в зависимости от конкретной задачи.

    Кейс

    Поделиться

    Скопировано
    0 комментариев
    Комментарии