Skip to content

Latest commit

 

History

History
133 lines (95 loc) · 17.9 KB

README.md

File metadata and controls

133 lines (95 loc) · 17.9 KB

SAI ITMO

license Eng Mirror

pandas python scikit_learn tensorflow

БИБЛИОТЕКА FORESSMENT AI

Задачи

Разработанная библиотека решает 3 основных задачи:

  • Предобработка сырых и нечетких данных.
  • Оценка текущего состояния сложных технических объектов.
  • Прогнозирование будущего состояния сложных технических объектов.

Данные задачи были отработаны для двух технических объектов:

  • DSC: мостовой кран при проезде L-образного пути с различной нагрузкой (0кг, 120кг, 500кг и 1000кг); каждый цикл работы осуществлялся с активированной и деактивированной системой предотвращения раскачивания; каждый цикл работы состоял из пятикратного повторения процесса подъема груза, движения из точки А в точку В по траектории, опускания груза, подъема груза, возвращения в точку А и опускания груза (на основе набора данных Driving Smart Crane with Various Load).
  • HAI: испытательный стенд, включающий три системы управления техническими объектами, а именно турбину GE, котел Emerson и системы водоподготовки FESTO, объединенные с помощью аппаратного обеспечения dSPACE; с помощью испытательного стенда несколько раз выполнялись безопасные и вредоносные сценарии (на основе набора данных HIL-based Augmented ICS Security Dataset).

Рассмотрим каждую задачу и ее программные компоненты более подробно.

Предобработка

Данная задача выполняется следующими программными модулями:

  • Preprocessor представляет собой алгоритм для предобработки сырых и нечетких данных. Данный модуль корректирует типы данных (preprocessor/check_data_types.py), заполняет пустые значения (preprocessor/cluster_filling.py), и снижает количество признаков данных на основе анализа их информативности (posnd/informativity.py) и мультиколлинеарности (posnd/multicolinear.py).
  • Extractor представляет собой алгоритм для извлечения знаний и данных, описывающих поведние сложных технических объектов. При этом знания представляются в виде ассоциативных правил (в формате “If <premise>, then <consequence>"), соджержащих только метку класса в правой части (consequence). Данный алгоритм решает задачи сильного ИИ в части построения модели знаний.

Примеры, описывающие работу модуля Preprocessor представлены в examples/preprocessor_examples.py.

  1. Функция preprocessor_example_basic() – базовый пример работы модуля Preprocessor. В данном примере, модуль Preprocessor применен к искусственно сгенерированным данным. Все шаги, направленные на уменьшение объема данных, выводятся в консоль.
  2. Функция preprocessor_example_titanic() – пример работы модуля Preprocessor на наборе данных titanic. Этот набор данных был использован, т.к. содержит категориальные и численные признаки, часть значений которых не заполнена. Более того, набор данных относительно небольшой, что позволяет получить и продемонстрировать результаты за небольшой промежуток времени.

Примеры, описывающие работу модуля Extractor представлены в examples/extractor_examples.py.

  1. Функция extractor_basic_example() – базовый пример работы модуля Extractor. В данном примере алгоритм Extractor используется для создания набора данных с двумя классами. Пример правила, а также информация об измененном наборе данных выводится в консоль.
  2. Функция extractor_ieee_data() - применение модуля Extractor к набору данных DSC. В данном примере классификатор RandomForestClassifier из библиотеки sklearn обучается на оригинальном и предобработанном Extractor наборах данных. В консоль выводится информация о наборах данных, а также значения метрик точности классификации.
  3. Функция extractor_hai() - применение модуля Extractor к набору данных HAI. В данном примере классификатор RandomForestClassifier из библиотеки sklearn обучается на оригинальном и предобработанном Extractor наборах данных. В консоль выводится информация о наборах данных, а также значения метрик точности классификации.

Оценка

Данная задача выполняется модулем Assessor. Работа данного модуля заключается в применении предобученных моделей машинного обучения, позволяющих идентифицировать состояние объекта на основе его аттрибутов. Процесс работы модуля можно представить в виде трех этапов:

  1. Извлечение атрибутов анализируемого объекта.
  2. Нормализация атрибутов.
  3. Оценка состояния объекта.

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

Примеры, описывающие работу модуля Assessor представлены в examples/assessor_examples.py.

Примеры применения данного алгоритма охватывают задачу обеспечения кибербезопасности критических ресурсов и объектов, а также задачу определения траектории движения транспортного средства (крана). В первом случае в качестве входных данных рассматриваются данные, полученные от датчиков системы паровых турбин и гидроаккумулирующих электростанций. Во втором случае входными данными являются параметры, описывающие работу и движение мостового крана при различных нагрузках.

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

Прогнозирование

Данная задача выполняется модулем Forecaster. Данный модуль осуществляет:

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

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

Примеры, описывающие работу модуля Forecaster представлены в examples/forecaster_examples.py.

  1. Функция example_forecaster_model_training(dataset_name, suf='', mode=1) – примеры обучения предсказательной и нормализующих моделей (dataset_name: название набора данных (str), suf: суффикс для наименования выходных данных (str), mode: способ запуска, параметр для разработчиков (integer)).
  2. Функция example_forecaster_forecasting(dataset_name, suf='', mode=1, independently=True, sample_type='test') - пример предсказания состояний объекта на основе обученной модели, включая прогнозную оценку (dataset_name: название набора данных (str), suf: суффикс для наименования выходных данных (str), mode: способ запуска, параметр для разработчиков (integer), independently: последовательность предсказывается в зависимости от прошлых значений или нет (boolean), sample_type: тип прогнозной выборки для оценки - обучающая или тестовая (str)).

Если параметр independently равен True, тогда все векторы значений признаков прогнозируются независимо друг от друга. На каждом этапе прогнозирования в партию добавляется элемент целевой выборки. Если параметр independently равен False, тогда каждый прогнозируемый вектор становится элементом нового пакета для последующего прогнозирования.

Если параметр sample_type равен 'train', тогда временное окно прогнозирования равно длине обучающей выборки от второй до последней партии. Пакет для прогнозирования — это первый пакет обучающей выборки. Истинные значения для оценки — это значения обучающей выборки от второй до последней партии. Если параметр sample_type равен 'test', тогда временное окно прогнозирования равно длине всей тестовой выборки. Пакет для прогнозирования — последний пакет обучающей выборки. Истинные значения — это значения тестовой выборки.

Совместное использование модулей

Пример объединения модулей Extractor (предобработка) и Forecaster (прогнозирование) представлен в examples/extractor_and_forecaster_examples.py.

Документация

Для дополнительной информации о библиотеки, пожалуйста, ознакомьтесь с содержимым следующих документов:

  • Programm_description.pdf
  • Guide_for_programmers.pdf

Данные документы расположены в каталоге guides. Язык документов - русский.

Документация на английском языке сформирована автоматически с помощью Sphinx Autodoc и размещена в каталоге docs.

Публикации

Levshun D., Kotenko I. A survey on artificial intelligence techniques for security event correlation: models, challenges, and opportunities // Artificial Intelligence Review. 2023. P. 1-44. DOI: 10.1007/s10462-022-10381-4. URL: https://link.springer.com/article/10.1007/s10462-022-10381-4. (Scopus, WoS, Q1)

Контактные данные

[email protected]

Поддержка

Исследование проводится при поддержке Исследовательского центра сильного искусственного интеллекта в промышленности Университета ИТМО в рамках мероприятия программы центра: Разработка и испытания экспериментального образца библиотеки алгоритмов сильного ИИ в части генеративного дизайна физических и/или цифровых объектов (компонентов киберфизических / социо-киберфизических систем), характеризующихся набором взаимосвязанных параметров и удовлетворяющих заданным требованиям.

Данный репозиторий также представлен на GitHub.